From 0929d0a373fa597689b9dbcff9b6bf544636410c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Calonne?= <aurel@nexedi.com>
Date: Wed, 30 Nov 2005 12:18:41 +0000
Subject: [PATCH] add new target solver which split movement with a given
 quantity

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4422 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/TargetSolver/SplitQuantity.py | 64 ++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100755 product/ERP5/TargetSolver/SplitQuantity.py

diff --git a/product/ERP5/TargetSolver/SplitQuantity.py b/product/ERP5/TargetSolver/SplitQuantity.py
new file mode 100755
index 0000000000..b32ce686cd
--- /dev/null
+++ b/product/ERP5/TargetSolver/SplitQuantity.py
@@ -0,0 +1,64 @@
+##############################################################################
+#
+# Copyright (c) 2002, 2005 Nexedi SARL and Contributors. All Rights Reserved.
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
+#                    Romain Courteaud <romain@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from CopyToTarget import CopyToTarget
+from zLOG import LOG
+
+class SplitQuantity(CopyToTarget):
+
+  def solve(self, movement):
+    """
+      Split a movement based on a given quantity
+    """
+    split_index = 0
+    new_id = "%s_split_%s" % (movement.getId(), split_index)
+    while getattr(movement.aq_parent, new_id, None) is not None:
+      split_index += 1
+      new_id = "%s_split_%s" % (movement.getId(), split_index)
+    # Adopt different dates for defferred movements
+    new_movement = movement.aq_parent.newContent(
+                      portal_type="Simulation Movement",
+                      id=new_id,
+                      efficiency=movement.getEfficiency(),
+                      start_date=self.start_date,
+                      stop_date=self.stop_date,
+                      # XXX resource
+                      order=movement.getOrder(),
+                      deliverable=movement.isDeliverable(),
+                      quantity=self.quantity,
+                      source = movement.getSource(),
+                      destination = movement.getDestination(),
+                      source_section = movement.getSourceSection(),
+                      destination_section = movement.getDestinationSection(),
+                      activate_kw=self.activate_kw,
+                      **self.additional_parameters
+    )
+    movement._v_activate_kw = self.activate_kw
+    movement.edit(quantity=(movement.getQuantity() - self.quantity) * movement.getDeliveryRatio())
+    return new_movement
-- 
2.30.9