diff --git a/bt5/erp5_base/ActionTemplateItem/portal_types/Previous%20Causality%20Movement%20Group/view.xml b/bt5/erp5_base/ActionTemplateItem/portal_types/Previous%20Causality%20Movement%20Group/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..ef34a510072c7e7680954dac3bc6832070385ae2 --- /dev/null +++ b/bt5/erp5_base/ActionTemplateItem/portal_types/Previous%20Causality%20Movement%20Group/view.xml @@ -0,0 +1,79 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/MovementGroup_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_base/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_base/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml index c23dd256a32a93080a6afe8e5ea5ae5912face37..4dc887ee45b05d4417333c055c7883019bcce064 100644 --- a/bt5/erp5_base/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml +++ b/bt5/erp5_base/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml @@ -30,6 +30,7 @@ <item>Parent Delivery Property Movement Group</item> <item>Parent Explanation Movement Group</item> <item>Predicate</item> + <item>Previous Causality Movement Group</item> <item>Property Assignment Movement Group</item> <item>Property Grouping Movement Group</item> <item>Property Movement Group</item> diff --git a/bt5/erp5_base/PortalTypeTemplateItem/portal_types/Previous%20Causality%20Movement%20Group.xml b/bt5/erp5_base/PortalTypeTemplateItem/portal_types/Previous%20Causality%20Movement%20Group.xml new file mode 100644 index 0000000000000000000000000000000000000000..d110cde224efc4192846f7db29787b0e05fa1669 --- /dev/null +++ b/bt5/erp5_base/PortalTypeTemplateItem/portal_types/Previous%20Causality%20Movement%20Group.xml @@ -0,0 +1,82 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> <string>document_icon.gif</string> </value> + </item> + <item> + <key> <string>content_meta_type</string> </key> + <value> <string>ERP5 Causality Movement Group</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string> The purpose of MovementGroup is to define how movements are grouped,\n + and how values are updated from simulation movements.\n +</string> </value> + </item> + <item> + <key> <string>factory</string> </key> + <value> <string>addCausalityMovementGroup</string> </value> + </item> + <item> + <key> <string>filter_content_types</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <tuple> + <string>movement_group</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Previous Causality Movement Group</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>PreviousCausalityMovementGroup</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_base/bt/template_action_path_list b/bt5/erp5_base/bt/template_action_path_list index c14d40001f4942b6365785a9cdaabbe99c6a0ecf..6a75d44d58782cd95ccf9e5641aa4beb5a2701bb 100644 --- a/bt5/erp5_base/bt/template_action_path_list +++ b/bt5/erp5_base/bt/template_action_path_list @@ -77,6 +77,7 @@ Person | person_detailed_report Person | terminate_career Person | view Preference | base_preference +Previous Causality Movement Group | view Property Assignment Movement Group | view Property Grouping Movement Group | view Property Movement Group | view diff --git a/bt5/erp5_base/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_base/bt/template_portal_type_allowed_content_type_list index 2ff96ec0d3c0dbc96077af8c9a68fa9246a4a28b..e7acfdb289a1cd87e02fdfe7e8fb4e121ff1cf7d 100644 --- a/bt5/erp5_base/bt/template_portal_type_allowed_content_type_list +++ b/bt5/erp5_base/bt/template_portal_type_allowed_content_type_list @@ -18,6 +18,7 @@ Delivery Builder | Parent Delivery Category Movement Group Delivery Builder | Parent Delivery Property Movement Group Delivery Builder | Parent Explanation Movement Group Delivery Builder | Predicate +Delivery Builder | Previous Causality Movement Group Delivery Builder | Property Assignment Movement Group Delivery Builder | Property Grouping Movement Group Delivery Builder | Property Movement Group diff --git a/bt5/erp5_base/bt/template_portal_type_id_list b/bt5/erp5_base/bt/template_portal_type_id_list index 54d4f65b1eb46f9fabfefce3f86db35c7706e1a0..4e6bd6b9f2d144a97ec050075cf993e8140537ca 100644 --- a/bt5/erp5_base/bt/template_portal_type_id_list +++ b/bt5/erp5_base/bt/template_portal_type_id_list @@ -43,6 +43,7 @@ Parent Delivery Property Movement Group Parent Explanation Movement Group Person Person Module +Previous Causality Movement Group Property Assignment Movement Group Property Grouping Movement Group Property Movement Group diff --git a/product/ERP5/Document/PreviousCausalityMovementGroup.py b/product/ERP5/Document/PreviousCausalityMovementGroup.py new file mode 100644 index 0000000000000000000000000000000000000000..54d019e472af840f244acc460a442e53ccd70e41 --- /dev/null +++ b/product/ERP5/Document/PreviousCausalityMovementGroup.py @@ -0,0 +1,57 @@ +############################################################################## +# +# Copyright (c) 2015 Nexedi SA and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility 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 +# guarantees and support are strongly advised 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################## + +from Products.ERP5.Document.FirstCausalityMovementGroup import \ + FirstCausalityMovementGroup +from zLOG import LOG + +class PreviousCausalityMovementGroup(FirstCausalityMovementGroup): + """ + Group by previous causality. For movements going to Sale Invoices, + the previous causality is SPL + """ + meta_type = 'ERP5 Previous Causality Movement Group' + portal_type = 'Previous Causality Movement Group' + + causality_portal_type = 'Sale Packing List' + + def test(self, movement, property_dict, **kw): + """Compare explanation to now if it is possible to update delivery""" + explanation = property_dict.get('_explanation','') + if movement == movement.getDeliveryValue(): + # We are at delivery level, check if the explanation is part of the causality + delivery = movement + if explanation in delivery.getCausalityList(): + return True, {} + else: + return False, {} + raise NotImplementedError("What should we do ?") + + def _getPropertyDict(self, movement, **kw): + property_dict = super(PreviousCausalityMovementGroup, self).\ + _getPropertyDict(movement, **kw) + return property_dict