<?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>
