From d1570751a4acc0ca6888dfb6cd5845973a02d274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com> Date: Wed, 7 Mar 2012 15:33:08 +0100 Subject: [PATCH] Try to fix consistency of Open Sale Orders. --- .../workflow_chain_type.xml | 4 + ..._fixEffectiveExpirationDateConsistency.xml | 105 ++++++++++++++++++ .../OpenSaleOrder_fixConsistency.xml | 96 ++++++++++++++++ .../scripts/OpenSaleOrder_fixConsistency.xml | 68 ++++++++++++ master/bt5/vifib_slap/bt/revision | 2 +- .../template_portal_type_workflow_chain_list | 1 + 6 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/OpenSaleOrder_fixEffectiveExpirationDateConsistency.xml create mode 100644 master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/interactions/OpenSaleOrder_fixConsistency.xml create mode 100644 master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/scripts/OpenSaleOrder_fixConsistency.xml diff --git a/master/bt5/vifib_slap/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/master/bt5/vifib_slap/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml index 80a13446c..ee8a104d4 100644 --- a/master/bt5/vifib_slap/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml +++ b/master/bt5/vifib_slap/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml @@ -15,6 +15,10 @@ <type>Internal Packing List</type> <workflow>slap_interaction_workflow</workflow> </chain> + <chain> + <type>Open Sale Order</type> + <workflow>slap_interaction_workflow</workflow> + </chain> <chain> <type>Person</type> <workflow>person_slap_interface_workflow, slap_interaction_workflow</workflow> diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/OpenSaleOrder_fixEffectiveExpirationDateConsistency.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/OpenSaleOrder_fixEffectiveExpirationDateConsistency.xml new file mode 100644 index 000000000..eddda1bca --- /dev/null +++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/OpenSaleOrder_fixEffectiveExpirationDateConsistency.xml @@ -0,0 +1,105 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>from DateTime import DateTime\n +from Products.ZSQLCatalog.SQLCatalog import Query, NegatedQuery\n +state = context.getValidationState()\n +validated = state == \'validated\'\n +archived = state == \'archived\'\n +\n +if state == \'archived\':\n + if context.getEffectiveDate() is None or context.getExpirationDate() is None:\n + if context.getExpirationDate() is None:\n + # is there any validated order?\n + validated_open_order = context.getPortalObject().portal_catalog.getResultValue(\n + portal_type=\'Open Sale Order\',\n + reference=context.getReference(),\n + simulation_state=\'validated\',\n + )\n + expiration_date = DateTime()\n + if validated_open_order is not None: \n + expiration_date = validated_open_order.getEffectiveDate()\n + if expiration_date is None:\n + raise NotImplementedError(\'Inform that it was impossible to fix as validated has no effective date.\')\n + context.setExpirationDate(expiration_date)\n +\n +if context.getEffectiveDate() is not None:\n + # ok\n + return\n +# is there any archived open sale order?\n +archived_open_order = context.getPortalObject().portal_catalog.getResultValue(\n + portal_type=\'Open Sale Order\',\n + reference=context.getReference(),\n + simulation_state=\'archived\',\n + uid=NegatedQuery(Query(uid=context.getUid())),\n + sort_on=((\'expiration_date\', \'descending\'),)\n +)\n +effective_date = DateTime()\n +if archived_open_order is not None:\n + effective_date = archived_open_order.getExpirationDate()\n + if effective_date is None:\n + raise NotImplementedError(\'Inform that it was impossible to fix as archived order has no expiration date.\')\n +context.setEffectiveDate(effective_date)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>OpenSaleOrder_fixEffectiveExpirationDateConsistency</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/interactions/OpenSaleOrder_fixConsistency.xml b/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/interactions/OpenSaleOrder_fixConsistency.xml new file mode 100644 index 000000000..95d2f0503 --- /dev/null +++ b/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/interactions/OpenSaleOrder_fixConsistency.xml @@ -0,0 +1,96 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="InteractionDefinition" module="Products.ERP5.Interaction"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>actbox_category</string> </key> + <value> <string>workflow</string> </value> + </item> + <item> + <key> <string>actbox_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>actbox_url</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>activate_script_name</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>after_script_name</string> </key> + <value> + <list> + <string>OpenSaleOrder_fixConsistency</string> + </list> + </value> + </item> + <item> + <key> <string>before_commit_script_name</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>guard</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>OpenSaleOrder_fixConsistency</string> </value> + </item> + <item> + <key> <string>method_id</string> </key> + <value> + <list> + <string>fixConsistency</string> + </list> + </value> + </item> + <item> + <key> <string>once_per_transaction</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>portal_type_filter</string> </key> + <value> + <list> + <string>Open Sale Order</string> + </list> + </value> + </item> + <item> + <key> <string>script_name</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>temporary_document_disallowed</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>trigger_type</string> </key> + <value> <int>2</int> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/scripts/OpenSaleOrder_fixConsistency.xml b/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/scripts/OpenSaleOrder_fixConsistency.xml new file mode 100644 index 000000000..054452e70 --- /dev/null +++ b/master/bt5/vifib_slap/WorkflowTemplateItem/portal_workflow/slap_interaction_workflow/scripts/OpenSaleOrder_fixConsistency.xml @@ -0,0 +1,68 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>open_sale_order = state_change[\'object\']\n +open_sale_order.OpenSaleOrder_fixEffectiveExpirationDateConsistency()\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>state_change</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>OpenSaleOrder_fixConsistency</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/vifib_slap/bt/revision b/master/bt5/vifib_slap/bt/revision index a9ba1259c..6f4cec90d 100644 --- a/master/bt5/vifib_slap/bt/revision +++ b/master/bt5/vifib_slap/bt/revision @@ -1 +1 @@ -607 \ No newline at end of file +608 \ No newline at end of file diff --git a/master/bt5/vifib_slap/bt/template_portal_type_workflow_chain_list b/master/bt5/vifib_slap/bt/template_portal_type_workflow_chain_list index 0464c0d54..2cc3670fa 100644 --- a/master/bt5/vifib_slap/bt/template_portal_type_workflow_chain_list +++ b/master/bt5/vifib_slap/bt/template_portal_type_workflow_chain_list @@ -4,6 +4,7 @@ Computer Partition | slap_interaction_workflow Computer | computer_slap_interface_workflow Computer | slap_interaction_workflow Internal Packing List | slap_interaction_workflow +Open Sale Order | slap_interaction_workflow Person | person_slap_interface_workflow Person | slap_interaction_workflow Purchase Packing List Line | slap_interaction_workflow -- 2.30.9