Commit 5e129d40 authored by Ivan Tyagov's avatar Ivan Tyagov

Merge branch 'master' into ivan

parents cae83265 6bed77f3
......@@ -51,13 +51,11 @@
<item>
<key> <string>_body</string> </key>
<value> <string>kw[\'parent_specialise_reference\'] = \'default_payment_rule\'\n
kw[\'portal_type\'] = \'Simulation Movement\'\n
kw[\'grand_parent_simulation_state\'] = [\'started\']\n
kw[\'grand_parent_simulation_state\'] = \'started\'\n
kw.update(context.portal_catalog.buildSQLQuery(**kw))\n
kw[\'max_movement_date\'] = DateTime() + 30 # XXX this is an arbitrary value for experimentation\n
# this could be an alarm configuration.\n
movement_list = [x.getObject() for x in context.PaymentTransaction_zSelectMovement(**kw)]\n
return movement_list\n
return context.PaymentTransaction_zSelectMovement(src__=src__, **kw)\n
</string> </value>
</item>
<item>
......
......@@ -57,7 +57,8 @@ if parent.getPortalType() != \'Applied Rule\':\n
return False\n
\n
parent_rule = parent.getSpecialiseValue()\n
if parent_rule.getPortalType() not in (\'Invoice Transaction Rule\',):\n
if parent_rule.getPortalType() not in (\'Invoice Transaction Simulation Rule\',\n
\'Invoice Transaction Rule\'):\n
return False\n
\n
receivable_account_type_list = (\'asset/receivable\',)\n
......
1477
\ No newline at end of file
1479
\ No newline at end of file
<key_list>
<key>accounting_transaction.operation_date</key>
<key>operation_date</key>
</key_list>
\ No newline at end of file
<catalog_method>
<item key="sql_clear_catalog" type="int">
<value>1</value>
</item>
</catalog_method>
......@@ -2,55 +2,62 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="TransitionDefinition" module="Products.DCWorkflow.Transitions"/>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
<key> <string>allow_simple_one_argument_traversal</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<key> <string>arguments_src</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
<key> <string>cache_time_</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string>Workflow_accelerateBuild</string> </value>
<key> <string>class_file_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>marks the document as it has been confirmed to the customer or it has been confirmed by the supplier</string> </value>
<key> <string>class_name_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<key> <string>connection_hook</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>order</string> </value>
<value> <string>z0_drop_accounting_transaction</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
<value> <string>ordered</string> </value>
<key> <string>max_cache_</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string></string> </value>
<key> <string>max_rows_</string> </key>
<value> <int>1000</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Place Order</string> </value>
<key> <string>src</string> </key>
<value> <string>DROP TABLE IF EXISTS accounting_transaction\n
</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
......
<catalog_method>
<item key="sql_uncatalog_object" type="int">
<value>1</value>
</item>
<item key="_is_filtered_archive" type="int">
<value>1</value>
</item>
<item key="_filter_expression_archive" type="str">
<value>python: context.isAccountingTransactionType()</value>
</item>
<item key="_filter_expression_cache_key_archive" type="tuple">
<value>portal_type</value>
</item>
</catalog_method>
......@@ -2,55 +2,66 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="TransitionDefinition" module="Products.DCWorkflow.Transitions"/>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
<key> <string>allow_simple_one_argument_traversal</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
<key> <string>arguments_src</string> </key>
<value> <string>uid</string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
<key> <string>cache_time_</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string>Workflow_accelerateBuild</string> </value>
<key> <string>class_file_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Declares a packing list as received and creates the related accounting transaction</string> </value>
<key> <string>class_name_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<key> <string>connection_hook</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>stop</string> </value>
<value> <string>z0_uncatalog_accounting_transaction</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
<value> <string>stopped</string> </value>
<key> <string>max_cache_</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string></string> </value>
<key> <string>max_rows_</string> </key>
<value> <int>1000</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Receive Packing List</string> </value>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
DELETE FROM accounting_transaction WHERE <dtml-sqltest uid op=eq type=int>\n
]]></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
......
<catalog_method>
<item key="sql_catalog_object_list" type="int">
<value>1</value>
</item>
<item key="_is_filtered_archive" type="int">
<value>1</value>
</item>
<item key="_filter_expression_archive" type="str">
<value>python: context.isAccountingTransactionType()</value>
</item>
<item key="_filter_expression_cache_key_archive" type="tuple">
<value>portal_type</value>
</item>
</catalog_method>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>allow_simple_one_argument_traversal</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>uid\r\n
getSourceSectionUid\r\n
getDestinationSectionUid\r\n
getResourceUid\r\n
getSourceProjectUid\r\n
getDestinationProjectUid\r\n
getSourcePaymentUid\r\n
getDestinationPaymentUid\r\n
getTitle\r\n
getReference\r\n
getSourceReference\r\n
getDestinationReference\r\n
getStartDate\r\n
getStopDate\r\n
InternalInvoiceTransaction_statInternalTransactionLineList\r\n
</string> </value>
</item>
<item>
<key> <string>cache_time_</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>class_file_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>class_name_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>connection_hook</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>z_catalog_accounting_transaction_list</string> </value>
</item>
<item>
<key> <string>max_cache_</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>max_rows_</string> </key>
<value> <int>1000</int> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
DELETE FROM\n
accounting_transaction\n
WHERE\n
<dtml-in uid>\n
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>\n
</dtml-in>\n
;\n
\n
<dtml-var "\'\\0\'">\n
\n
<dtml-let row_list="[]" uid_dict="{}">\n
<dtml-in prefix="loop" expr="_.range(_.len(uid))">\n
<dtml-if "getDestinationSectionUid[loop_item]">\n
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">\n
<dtml-call expr="row_list.append([\n
uid[loop_item], \n
uid_dict[uid[loop_item]],\n
getDestinationSectionUid[loop_item],\n
getSourceSectionUid[loop_item],\n
getResourceUid[loop_item],\n
getDestinationProjectUid[loop_item], \n
getDestinationPaymentUid[loop_item],\n
getTitle[loop_item], \n
getReference[loop_item], \n
getDestinationReference[loop_item], \n
getStopDate[loop_item], \n
InternalInvoiceTransaction_statInternalTransactionLineList[loop_item][0][\'destination_asset_debit\'], \n
InternalInvoiceTransaction_statInternalTransactionLineList[loop_item][0][\'destination_asset_credit\'], \n
])">\n
</dtml-if>\n
<dtml-if expr="True">\n
<dtml-comment>\n
for now, unconditionanly catalog source, to always have at\n
least one line, but is it needed ?\n
</dtml-comment>\n
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">\n
<dtml-call expr="row_list.append([\n
uid[loop_item], \n
uid_dict[uid[loop_item]],\n
getSourceSectionUid[loop_item],\n
getDestinationSectionUid[loop_item],\n
getResourceUid[loop_item],\n
getSourceProjectUid[loop_item], \n
getSourcePaymentUid[loop_item],\n
getTitle[loop_item], \n
getReference[loop_item], \n
getSourceReference[loop_item], \n
getStartDate[loop_item], \n
InternalInvoiceTransaction_statInternalTransactionLineList[loop_item][0][\'source_asset_debit\'], \n
InternalInvoiceTransaction_statInternalTransactionLineList[loop_item][0][\'source_asset_credit\'], \n
])">\n
</dtml-if>\n
</dtml-in> \n
\n
<dtml-if "row_list">\n
INSERT INTO\n
accounting_transaction\n
VALUES\n
<dtml-in prefix="row" expr="row_list">\n
(\n
<dtml-sqlvar expr="row_item[0]" type="int">,\n
<dtml-sqlvar expr="row_item[1]" type="int">,\n
<dtml-sqlvar expr="row_item[2]" type="int" optional>, \n
<dtml-sqlvar expr="row_item[3]" type="int" optional>, \n
<dtml-sqlvar expr="row_item[4]" type="int" optional>,\n
<dtml-sqlvar expr="row_item[5]" type="int" optional>,\n
<dtml-sqlvar expr="row_item[6]" type="int" optional>,\n
<dtml-sqlvar expr="row_item[7]" type="string" optional>,\n
<dtml-sqlvar expr="row_item[8]" type="string" optional>,\n
<dtml-sqlvar expr="row_item[9]" type="string" optional>, \n
<dtml-sqlvar expr="row_item[10]" type="datetime" optional>,\n
<dtml-sqlvar expr="row_item[11]" type="float" optional>,\n
<dtml-sqlvar expr="row_item[12]" type="float" optional>\n
)\n
<dtml-if sequence-end><dtml-else>,</dtml-if>\n
</dtml-in>\n
</dtml-if>\n
</dtml-let>\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<catalog_method>
<item key="sql_clear_catalog" type="int">
<value>1</value>
</item>
</catalog_method>
......@@ -2,76 +2,91 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<key> <string>_col</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<key> <string>allow_simple_one_argument_traversal</string> </key>
<value>
<tuple>
<string>action_type/object_exchange</string>
</tuple>
<none/>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_exchange</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<key> <string>arguments_src</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
<key> <string>cache_time_</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>icon</string> </key>
<key> <string>class_file_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>import</string> </value>
<key> <string>class_name_</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<key> <string>connection_hook</string> </key>
<value>
<tuple>
<string>Add portal content</string>
</tuple>
<none/>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Import CD</string> </value>
<key> <string>id</string> </key>
<value> <string>z_create_accounting_transaction</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
<key> <string>max_cache_</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>max_rows_</string> </key>
<value> <int>1000</int> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string>CREATE TABLE `accounting_transaction` (\n
`uid` BIGINT UNSIGNED NOT NULL,\n
`order_id` TINYINT UNSIGNED NOT NULL,\n
\n
`section_uid` BIGINT UNSIGNED,\n
`mirror_section_uid` BIGINT UNSIGNED,\n
`resource_uid` BIGINT UNSIGNED,\n
\n
`project_uid` BIGINT UNSIGNED,\n
`payment_uid` BIGINT UNSIGNED,\n
\n
`accounting_transaction_title` VARCHAR(255),\n
`reference` VARCHAR(255),\n
`specific_reference` VARCHAR(255),\n
\n
`operation_date` datetime default NULL,\n
\n
`total_debit` real,\n
`total_credit` real,\n
\n
PRIMARY KEY (`uid`, `order_id`),\n
KEY `section_uid` (`section_uid`)\n
-- TODO: keys\n
) TYPE=InnoDB\n
</string> </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}/MonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>table_0</string> </value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>z_related_accounting_transaction_mirror_section</string> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
accounting_transaction.mirror_section_uid = <dtml-var table_0>.uid\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>table_0</string> </value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>z_related_accounting_transaction_payment</string> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
accounting_transaction.payment_uid = <dtml-var table_0>.uid\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>table_0</string> </value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>z_related_accounting_transaction_project</string> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
accounting_transaction.project_uid = <dtml-var table_0>.uid\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>table_0\r\n
table_1</string> </value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>z_related_accounting_transaction_stock_line</string> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
accounting_transaction.uid = <dtml-var table_0>.explanation_uid\n
AND <dtml-var table_0>.uid = <dtml-var table_1>.uid
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<key_list>
<key>accounting_transaction_line_node_uid | movement,stock/node_uid/z_related_accounting_transaction_stock_line</key>
<key>accounting_transaction_line_total_price | movement,stock/total_price/z_related_accounting_transaction_stock_line</key>
<key>accounting_transaction_mirror_section_title | catalog/title/z_related_accounting_transaction_mirror_section</key>
<key>accounting_transaction_payment_title | catalog/title/z_related_accounting_transaction_payment</key>
<key>accounting_transaction_project_title | catalog/title/z_related_accounting_transaction_project</key>
</key_list>
\ No newline at end of file
<key_list>
<key>accounting_transaction</key>
</key_list>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>business_template_skin_layer_priority</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>float</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>business_template_skin_layer_priority</string> </key>
<value> <float>10.0</float> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_accounting_alternate_catalog</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,36 +50,119 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal_type = context.getDeliveryPortalType()\n
invoice_list = []\n
<value> <string>portal = context.getPortalObject()\n
getUid = portal.portal_categories.getCategoryUid\n
\n
# Gather invoices associated with grand parent movements,\n
# so that tax movements will be included into the same invoices.\n
for movement in movement_list:\n
applied_rule = movement.getParentValue()\n
if applied_rule.isRootAppliedRule():\n
# ???\n
continue\n
section_category = params.pop(\'section_category\', None)\n
section_category_strict = params.pop(\'section_category_strict\', None)\n
params[\'accounting_transaction.section_uid\'] = \'\'\n
if section_category:\n
params[\'accounting_transaction.section_uid\'] = context.Base_getSectionUidListForSectionCategory(\n
section_category, strict_membership=section_category_strict)\n
\n
invoice_movement = applied_rule.getParentValue()\n
invoice = invoice_movement.getExplanationValue()\n
if invoice.getPortalType() != portal_type:\n
# ???\n
continue\n
# rewrite payment_mode_relative_url to uid\n
payment_mode_relative_url = params.pop(\'payment_mode_relative_url\', None)\n
if payment_mode_relative_url:\n
params[\'default_payment_mode_uid\'] = \\\n
portal.portal_categories.payment_mode.getCategoryUid(payment_mode_relative_url)\n
\n
if invoice not in invoice_list:\n
invoice_list.append(invoice)\n
# rewrite currency to uid\n
resource = params.pop(\'resource\', None)\n
if resource:\n
params[\'accounting_transaction.resource_uid\'] = getUid(resource)\n
\n
return invoice_list\n
\n
# XXX wrong name compat\n
# TODO: make it better on search dialog\n
node_list = params.pop(\'node\', None)\n
if node_list:\n
params[\'accounting_transaction_line_node_uid\'] = [\n
getUid(node) for node in node_list]\n
\n
entity = params.pop(\'entity\', None)\n
if entity:\n
params[\'accounting_transaction.mirror_section_uid\'] = getUid(entity)\n
\n
if not params.get(\'operation_date\'):\n
params.pop(\'from_date\', None)\n
params.pop(\'to_date\', None)\n
if from_date or to_date:\n
if from_date:\n
if to_date:\n
params[\'operation_date\'] = dict(\n
query=(from_date, to_date),\n
range=\'minngt\')\n
else:\n
params[\'operation_date\'] = dict(\n
query=(from_date, ),\n
range=\'min\')\n
else:\n
params[\'operation_date\'] = dict(\n
query=(to_date, ),\n
range=\'ngt\')\n
\n
amount = params.pop(\'amount\', \'\')\n
if amount not in (None, \'\'):\n
params[\'accounting_transaction_line_total_price\'] = amount\n
else:\n
amount_range_min = params.pop(\'amount_range_min\', None)\n
amount_range_max = params.pop(\'amount_range_max\', None)\n
if amount_range_min or amount_range_max:\n
if amount_range_min:\n
if amount_range_max:\n
params[\'accounting_transaction_line_total_price\'] = dict(\n
query=(amount_range_min, amount_range_max),\n
range=\'minmax\')\n
else:\n
params[\'accounting_transaction_line_total_price\'] = dict(\n
query=(amount_range_min, ),\n
range=\'min\')\n
else:\n
params[\'accounting_transaction_line_total_price\'] = dict(\n
query=(amount_range_max, ),\n
range=\'max\')\n
\n
\n
creation_date_range_min = params.pop(\'creation_date_range_min\', None)\n
creation_date_range_max = params.pop(\'creation_date_range_max\', None)\n
if creation_date_range_min or creation_date_range_max:\n
if creation_date_range_min:\n
if creation_date_range_max:\n
params[\'creation_date\'] = dict(\n
query=(creation_date_range_min, creation_date_range_max),\n
range=\'minmax\')\n
else:\n
params[\'creation_date\'] = dict(\n
query=(creation_date_range_min, ),\n
range=\'min\')\n
else:\n
params[\'creation_date\'] = dict(\n
query=(creation_date_range_max, ),\n
range=\'max\')\n
\n
select_dict = params.get(\'select_dict\') or dict()\n
select_dict.update(dict(total_debit=None,\n
total_credit=None,\n
reference=None,\n
specific_reference=None,\n
project_uid=None,\n
payment_uid=None,\n
mirror_section_uid=None,\n
operation_date=None))\n
\n
params[\'select_dict\'] = select_dict\n
params.setdefault(\'group_by\', (\'uid\',))\n
\n
return context.searchFolder(**params)\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>movement_list=(), **kw</string> </value>
<value> <string>from_date=None, to_date=None, **params</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DeliveryBuilder_getSimulationPerformanceTestTaxableInvoiceList</string> </value>
<value> <string>AccountingTransactionModule_getAccountingTransactionList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -35,7 +35,7 @@
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
<value> <string>Base_doSelect</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -88,7 +88,14 @@
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
<list>
<string>listbox_total_credit</string>
<string>listbox_total_debit</string>
<string>listbox_accounting_transaction_mirror_section_title</string>
<string>listbox_accounting_transaction_payment_title</string>
<string>listbox_accounting_transaction_project_title</string>
<string>listbox_operation_date</string>
</list>
</value>
</item>
<item>
......@@ -108,7 +115,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>SolverProcess_viewSolverDecisionList</string> </value>
<value> <string>AccountingTransactionModule_viewAccountingTransactionList</string> </value>
</item>
<item>
<key> <string>method</string> </key>
......@@ -116,11 +123,11 @@
</item>
<item>
<key> <string>name</string> </key>
<value> <string>SolverTool_viewSolverProcessList</string> </value>
<value> <string>AccountingTransactionModule_viewAccountingTransactionList</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
<value> <string>form_list</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
......@@ -132,7 +139,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Solver Decisions</string> </value>
<value> <string>Accounting Transactions</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_link</string> </value>
<value> <string>listbox_accounting_transaction_mirror_section_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -239,7 +239,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>listbox_link</string> </value>
<value> <string>Mirror Section</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......@@ -261,16 +261,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:cell.getPermanentUrl(cell)</string> </value>
<value> <string>cell/Brain_getMirrorSectionTitle</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_author</string> </value>
<value> <string>listbox_accounting_transaction_payment_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -239,7 +239,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>listbox_author</string> </value>
<value> <string>Payment</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......@@ -261,19 +261,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: here.getOwnerInfo().get(\'id\', \'\')</string> </value>
<value> <string>cell/Brain_getPaymentTitle</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_author</string> </value>
<value> <string>listbox_accounting_transaction_project_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -239,7 +239,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>listbox_author</string> </value>
<value> <string>Project</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......@@ -261,19 +261,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: here.getOwnerInfo().get(\'id\', \'\')</string> </value>
<value> <string>cell/Brain_getProjectTitle</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -10,19 +10,16 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>title</string>
<string>css_class</string>
<string>height</string>
<string>width</string>
<string>whitespace_preserve</string>
<string>default</string>
<string>enabled</string>
<string>editable</string>
<string>precision</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>admin_toolbox</string> </value>
<value> <string>listbox_total_credit</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -64,12 +61,6 @@
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
......@@ -78,6 +69,12 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precision</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
......@@ -90,20 +87,24 @@
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>adminToolbox</string> </value>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_text_content</string> </value>
<value> <string>my_money_quantity</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>5</int> </value>
<key> <string>precision</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
......@@ -111,15 +112,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Admin</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>40</int> </value>
<value> <string>Credit</string> </value>
</item>
</dictionary>
</value>
......@@ -135,7 +128,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/admin_toolbox</string> </value>
<value> <string>cell/total_credit | cell/AccountingTransaction_getTotalCredit</string> </value>
</item>
</dictionary>
</pickle>
......@@ -148,7 +141,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>not: here/portal_membership/isAnonymousUser</string> </value>
<value> <string>request/precision | python:2</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -10,19 +10,16 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>title</string>
<string>css_class</string>
<string>height</string>
<string>width</string>
<string>whitespace_preserve</string>
<string>default</string>
<string>enabled</string>
<string>editable</string>
<string>precision</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>website_news</string> </value>
<value> <string>listbox_total_debit</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -64,12 +61,6 @@
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
......@@ -78,6 +69,12 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precision</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
......@@ -90,20 +87,24 @@
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>hidden_label</string> </value>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_text_content</string> </value>
<value> <string>my_money_quantity</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>5</int> </value>
<key> <string>precision</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
......@@ -111,15 +112,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ERP5 WebSite News</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>40</int> </value>
<value> <string>Debit</string> </value>
</item>
</dictionary>
</value>
......@@ -135,7 +128,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: here.WebSection_viewInlinePageRenderer(here.getLayoutProperty(\'layout_news_reference\'))</string> </value>
<value> <string>cell/total_debit | cell/AccountingTransaction_getTotalDebit</string> </value>
</item>
</dictionary>
</pickle>
......@@ -148,7 +141,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.getLayoutProperty(\'layout_news_reference\')</string> </value>
<value> <string>request/precision | python:2</string> </value>
</item>
</dictionary>
</pickle>
......
<?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>request = container.REQUEST\n
mirror_section_title = \'\'\n
try:\n
return request.other[context.mirror_section_uid]\n
except KeyError:\n
if context.mirror_section_uid:\n
mirror_section = context.getPortalObject().portal_catalog.getobject(context.mirror_section_uid)\n
if mirror_section is not None:\n
mirror_section_title = mirror_section.getTitle()\n
\n
request.other[context.mirror_section_uid] = mirror_section_title\n
return mirror_section_title\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Brain_getMirrorSectionTitle</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>request = container.REQUEST\n
payment_title = \'\'\n
try:\n
return request.other[context.payment_uid]\n
except KeyError:\n
if context.payment_uid:\n
payment = context.getPortalObject().portal_catalog.getobject(context.payment_uid)\n
if payment is not None:\n
payment_title = payment.getTitle()\n
\n
request.other[context.payment_uid] = payment_title\n
return payment_title\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Brain_getPaymentTitle</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>request = container.REQUEST\n
project_title = \'\'\n
try:\n
return request.other[context.project_uid]\n
except KeyError:\n
if context.project_uid:\n
project = context.getPortalObject().portal_catalog.getobject(context.project_uid)\n
if project is not None:\n
project_title = project.getTitle()\n
\n
request.other[context.project_uid] = project_title\n
return project_title\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Brain_getProjectTitle</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,10 +50,41 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>movement_list = []\n
for business_path in context.getDeliveryBuilderRelatedValueList():\n
movement_list.extend(business_path.getBuildableMovementList())\n
return movement_list\n
<value> <string>from Products.PythonScripts.standard import Object\n
total_source_debit = 0\n
total_source_credit = 0\n
total_destination_debit = 0\n
total_destination_credit = 0\n
total_source_asset_debit = 0\n
total_source_asset_credit = 0\n
total_destination_asset_debit = 0\n
total_destination_asset_credit = 0\n
\n
source_section = context.getSourceSection()\n
destination_section = context.getDestinationSection()\n
for line in context.objectValues(\n
portal_type = context.getPortalAccountingMovementTypeList()) :\n
if line.getSource() and line.getSourceSection() == source_section:\n
total_source_debit += line.getSourceDebit()\n
total_source_asset_debit += line.getSourceInventoriatedTotalAssetDebit()\n
total_source_credit += line.getSourceCredit()\n
total_source_asset_credit += line.getSourceInventoriatedTotalAssetCredit()\n
if line.getDestination()\\\n
and line.getDestinationSection() == destination_section:\n
total_destination_debit += line.getDestinationDebit()\n
total_destination_asset_debit += line.getDestinationInventoriatedTotalAssetDebit()\n
total_destination_credit += line.getDestinationCredit()\n
total_destination_asset_credit += line.getDestinationInventoriatedTotalAssetCredit()\n
\n
return [Object(\n
source_debit=total_source_debit,\n
source_credit=total_source_credit,\n
destination_debit=total_destination_debit,\n
destination_credit=total_destination_credit,\n
source_asset_debit=total_source_asset_debit,\n
source_asset_credit=total_source_asset_credit,\n
destination_asset_debit=total_destination_asset_debit,\n
destination_asset_credit=total_destination_asset_credit,)]\n
</string> </value>
</item>
<item>
......@@ -62,7 +93,7 @@ return movement_list\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DeliveryBuilder_getSimulationPerformanceTestBuildableMovementList</string> </value>
<value> <string>InternalInvoiceTransaction_statInternalTransactionLineList</string> </value>
</item>
</dictionary>
</pickle>
......
Alternate catalog implementation of accounting module main view
\ No newline at end of file
operation_date
accounting_transaction.operation_date
\ No newline at end of file
erp5_mysql_innodb/z0_drop_accounting_transaction
erp5_mysql_innodb/z0_uncatalog_accounting_transaction
erp5_mysql_innodb/z_catalog_accounting_transaction_list
erp5_mysql_innodb/z_create_accounting_transaction
erp5_mysql_innodb/z_related_accounting_transaction_mirror_section
erp5_mysql_innodb/z_related_accounting_transaction_payment
erp5_mysql_innodb/z_related_accounting_transaction_project
erp5_mysql_innodb/z_related_accounting_transaction_stock_line
\ No newline at end of file
accounting_transaction_mirror_section_title | catalog/title/z_related_accounting_transaction_mirror_section
accounting_transaction_project_title | catalog/title/z_related_accounting_transaction_project
accounting_transaction_payment_title | catalog/title/z_related_accounting_transaction_payment
accounting_transaction_line_node_uid | movement,stock/node_uid/z_related_accounting_transaction_stock_line
accounting_transaction_line_total_price | movement,stock/total_price/z_related_accounting_transaction_stock_line
\ No newline at end of file
erp5_accounting_alternate_catalog
\ No newline at end of file
erp5_accounting_alternate_catalog
\ No newline at end of file
......@@ -50,23 +50,12 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>kw[\'parent_specialise_portal_type\'] = [\'Invoice Transaction Rule\', \'Invoice Transaction Simulation Rule\']\n
kw[\'explanation_portal_type\'] = [\'Sale Order\', \'Sale Invoice\', \'Sale Packing List\']\n
kw[\'portal_type\'] = \'Simulation Movement\'\n
kw[\'grand_parent_simulation_state\'] = [\'started\']\n
<value> <string>kw[\'parent_specialise_portal_type\'] = \'Invoice Transaction Rule\', \'Invoice Transaction Simulation Rule\'\n
kw[\'explanation_portal_type\'] = \'Sale Order\', \'Sale Invoice\', \'Sale Packing List\'\n
kw[\'grand_parent_simulation_state\'] = \'started\'\n
\n
kw.update(context.portal_catalog.buildSQLQuery(**kw))\n
\n
movement_list = [] \n
for movement in context.InvoiceTransaction_zSelectMovement(**kw) :\n
movement = movement.getObject()\n
if movement.getDeliveryValue() is None :\n
movement_list.append(movement)\n
else :\n
from Products.ERP5Type.Log import log\n
log(script.getId(), "simulation movement %s should not have been selected !" % movement.getPath())\n
\n
return movement_list\n
return context.InvoiceTransaction_zSelectMovement(**kw)\n
</string> </value>
</item>
<item>
......
105
\ No newline at end of file
106
\ No newline at end of file
......@@ -50,13 +50,12 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>site_list = context.Baobab_getUserAssignedRootSiteList()\n
if len(site_list) == 0:\n
<value> <string>site = context.Baobab_getUserAssignedRootSite()\n
if site in (\'\', None):\n
from Products.ERP5Type.Message import Message\n
message = Message(domain="ui", message="The owner is not assigned to the right vault.")\n
raise ValueError,message\n
\n
site = site_list[0]\n
\n
context.setSource("%s/caveau/auxiliaire/encaisse_des_billets_a_ventiler_et_a_detruire" %(site,))\n
context.setDestination("%s/caveau/auxiliaire/encaisse_des_billets_ventiles_et_detruits" %(site,))\n
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<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/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>MonetaryReceptionModule_importMonetaryReceptionFromCDAction</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_import_file</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>MonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>CashMovemMonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Import CD</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="FileField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_import_file</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>80</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Upload</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>user_site = context.Baobab_getUserAssignedRootSiteList()[0]\n
<value> <string>user_site = context.Baobab_getUserAssignedRootSite()\n
user_counter = context.Baobab_getUserAssignedSiteList()[0]\n
if user_site in (\'\', None) or user_counter in (\'\', None):\n
raise ValueError, "Unable to determine site"\n
......
......@@ -99,7 +99,6 @@ Monetary Recall Line | view
Monetary Recall Module | view
Monetary Recall | fastinput
Monetary Recall | view
Monetary Reception Module | import
Monetary Reception Module | view
Monetary Reception | cahs_container
Monetary Reception | fastinput
......
......@@ -52,7 +52,7 @@
<key> <string>_body</string> </key>
<value> <string>transaction = context\n
\n
user_site = context.Baobab_getUserAssignedRootSiteList()[0]\n
user_site = context.Baobab_getUserAssignedRootSite()\n
context.setSite(user_site)\n
\n
# XXX it might be better to set resource according to source_payment.\n
......
......@@ -53,7 +53,7 @@
<value> <string>reference_currency = context.Baobab_getPortalReferenceCurrencyID()\n
context.setPriceCurrency(\'currency_module/%s\' %(reference_currency,))\n
context.setCurrencyExchangeType(\'transfer\')\n
site = context.Baobab_getUserAssignedRootSiteList()[0]\n
site = context.Baobab_getUserAssignedRootSite()\n
context.setSource(site)\n
</string> </value>
</item>
......
......@@ -84,7 +84,7 @@ else:\n
else:\n
check_price = check_operation_line.getPrice()\n
bank_account_dict[account_path] = check_price\n
error = context.BankAccount_checkBalance(account_path, check_operation_line.getPrice())\n
error = obj.BankAccount_checkBalance(account_path, check_operation_line.getPrice())\n
\n
if error[\'error_code\'] == 1:\n
msg = Message(domain=\'ui\', message="Bank account $account is not sufficient on line $line.",\n
......
......@@ -64,7 +64,7 @@ for check_operation_line in transaction.objectValues(portal_type=\'Check Operati
bank_account_dict[account_path] = account_value\n
amount_dict[account_path] = amount_dict.get(account_path, 0) + check_operation_line.getPrice()\n
for account_path, amount in amount_dict.items():\n
error = context.BankAccount_checkBalance(account_path, amount)[\'error_code\']\n
error = transaction.BankAccount_checkBalance(account_path, amount)[\'error_code\']\n
source_bank_account = bank_account_dict[account_path]\n
if error == 1:\n
raise ValidationFailed, (Message(domain=\'ui\', message="Bank account $account is not sufficient.",\n
......
......@@ -70,6 +70,14 @@ for line in line_list:\n
<key> <string>_params</string> </key>
<value> <string>state_change, **kw</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>updateCheckAndCheckbook</string> </value>
......
......@@ -69,6 +69,14 @@ for line in line_list:\n
<key> <string>_params</string> </key>
<value> <string>state_change, **kw</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>updateCheckAndCheckbook</string> </value>
......
......@@ -123,7 +123,7 @@ if total_debit>0:\n
context.BankingOperationLine_index(line)\n
\n
# Test if the account balance is sufficient.\n
error = context.BankAccount_checkBalance(bank_account.getRelativeUrl(), price)\n
error = transaction.BankAccount_checkBalance(bank_account.getRelativeUrl(), price)\n
if error[\'error_code\'] == 1:\n
msg = Message(domain=\'ui\', message="Bank account is not sufficient.")\n
raise ValidationFailed, (msg,)\n
......
497
\ No newline at end of file
498
\ No newline at end of file
......@@ -57,7 +57,7 @@
# Table: \'catalog\'\n
#\n
CREATE TABLE `catalog` (\n
`uid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,\n
`uid` BIGINT UNSIGNED NOT NULL,\n
`security_uid` INT UNSIGNED,\n
`path` varchar(255) NOT NULL default \'\',\n
`owner` varchar(32) NOT NULL default \'\',\n
......
......@@ -78,7 +78,11 @@
KEY `destination_section_uid` (`destination_section_uid`),\n
KEY `resource_uid` (`resource_uid`),\n
KEY `source_reference` (`source_payment_reference`),\n
KEY `destination_payment_reference` (`destination_payment_reference`)\n
KEY `destination_payment_reference` (`destination_payment_reference`),\n
KEY `recoup_date` (`recoup_date`),\n
KEY `source_payment_internal_bank_account_number` (`source_payment_internal_bank_account_number`),\n
KEY `destination_payment_internal_bank_account_number` (`destination_payment_internal_bank_account_number`),\n
KEY `source_total_asset_price` (`source_total_asset_price`)\n
) ENGINE=InnoDB\n
</string> </value>
</item>
......
......@@ -50,28 +50,20 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># get the current logged user root site (agency)\n
\n
valid_assignment_list = context.Baobab_getUserAssignmentList(user_id=user_id)\n
\n
site_list = []\n
for a in valid_assignment_list:\n
new_site = a.getSiteValue()\n
while new_site.getVaultType()!=\'site\':\n
new_site = new_site.getParentValue()\n
if object:\n
if new_site not in site_list:\n
site_list.append(new_site)\n
else:\n
site_url = new_site.getRelativeUrl()\n
if site_url not in site_list:\n
site_list.append(site_url)\n
return site_list\n
<value> <string># Serialize operations for this bank account\n
# Lookup pending tagged indexations\n
tag = context.BankAccount_getMessageTag(context)\n
if context.getPortalObject().portal_activities.countMessageWithTag(tag):\n
raise ValueError("There are operations pending for this account that prevent form calculating its position. Please try again later.")\n
# Create a tagged indexation\n
context.activate(tag=tag).getId()\n
# Serialize at ZODB level\n
context.serialize()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>user_id=None, object=0, **kw</string> </value>
<value> <string></string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
......@@ -83,7 +75,7 @@ return site_list\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Baobab_getUserAssignedRootSiteList</string> </value>
<value> <string>BankAccount_serialize</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -60,7 +60,7 @@ from Products.ERP5Type.Message import Message\n
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
\n
if site is None:\n
root_site_url = context.Baobab_getUserAssignedRootSiteList()[0]\n
root_site_url = context.Baobab_getUserAssignedRootSite()\n
site = context.portal_categories.restrictedTraverse(root_site_url)\n
\n
resource_uid_list = [x.uid for x in context.currency_cash_module.searchFolder()]\n
......
......@@ -50,14 +50,13 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>if isinstance(site, str):\n
site = context.portal_categories.site.restrictedTraverse(site)\n
orga_id = "site_%3s" %(site.getCodification())\n
organisation = context.organisation_module[orga_id]\n
\n
<value> <string>portal = context.getPortalObject()\n
if isinstance(site, str):\n
site = portal.portal_categories.site.restrictedTraverse(site)\n
organisation = portal.organisation_module[\'site_%3s\' % (site.getCodification(), )]\n
account_list = [x for x in organisation.objectValues(portal_type=\'Bank Account\') if x.getValidationState() == \'valid\']\n
if len(account_list)!=1:\n
raise ValueError, \'Must not get %d account for the organisation %s\' % (len(account_list), organisation.getTitleOrId())\n
if len(account_list) != 1:\n
raise ValueError(\'Must not get %d account for the organisation %s\' % (len(account_list), organisation.getTitleOrId()))\n
return account_list[0]\n
</string> </value>
</item>
......@@ -65,6 +64,14 @@ return account_list[0]\n
<key> <string>_params</string> </key>
<value> <string>site=None</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Baobab_getAccountForSite</string> </value>
......
......@@ -57,7 +57,7 @@ if site is None:\n
if getattr(context,\'getSiteValue\',None) is not None:\n
site = context.getSiteValue()\n
if site is None:\n
root_site_url = context.Baobab_getUserAssignedRootSiteList()[0]\n
root_site_url = context.Baobab_getUserAssignedRootSite()\n
site = context.portal_categories.restrictedTraverse(root_site_url)\n
\n
resource_uid_list = [x.uid for x in context.currency_cash_module.searchFolder()]\n
......
......@@ -61,11 +61,11 @@ if user_id is None:\n
\n
def getFunctionList(user_id=user_id):\n
\n
valid_assignment_list = context.Baobab_getUserAssignmentList(user_id=user_id)\n
valid_assignment = context.Baobab_getUserAssignment(user_id=user_id)\n
\n
function_list = []\n
for a in valid_assignment_list:\n
new_function_list = a.getFunctionList()\n
if valid_assignment != None:\n
new_function_list = valid_assignment.getFunctionList()\n
if len(new_function_list)>0:\n
function_list.extend(new_function_list)\n
return function_list\n
......
......@@ -59,11 +59,11 @@ if user_id is None:\n
\n
def getGroupList(user_id=user_id):\n
\n
valid_assignment_list = context.Baobab_getUserAssignmentList(user_id=user_id)\n
valid_assignment = context.Baobab_getUserAssignment(user_id=user_id)\n
\n
group_list = []\n
for a in valid_assignment_list:\n
new_group = a.getGroup()\n
if valid_assignment != None:\n
new_group = valid_assignment.getGroup()\n
if not new_group.startswith(\'group\'):\n
new_group=\'group/%s\' % new_group\n
if new_group not in (\'\', None):\n
......
......@@ -50,21 +50,29 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>module = context.getPortalObject().business_process_module\n
business_process = module.test_bp\n
invoice_business_path = business_process.invoice\n
invoice_business_path.BusinessPath_build()\n
tax_business_path = business_process.tax\n
tax_business_path.BusinessPath_build()\n
<value> <string>new_site = context.Baobab_getUserAssignment(user_id=user_id).getSiteValue()\n
while new_site.getVaultType() != \'site\':\n
new_site = new_site.getParentValue()\n
if not object:\n
new_site = new_site.getRelativeUrl()\n
return new_site\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
<value> <string>user_id=None, object=False</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Alarm_activateTestInvoiceBuild</string> </value>
<value> <string>Baobab_getUserAssignedRootSite</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -59,11 +59,11 @@ if user_id is None:\n
\n
def getSiteList(user_id=user_id):\n
\n
valid_assignment_list = context.Baobab_getUserAssignmentList(user_id=user_id)\n
valid_assignment = context.Baobab_getUserAssignment(user_id=user_id)\n
\n
site_list = []\n
for a in valid_assignment_list:\n
new_site = a.getSite()\n
if valid_assignment != None:\n
new_site = valid_assignment.getSite()\n
if not new_site.startswith(\'site\'):\n
new_site=\'site/%s\' % new_site\n
if new_site not in (\'\', None):\n
......
......@@ -52,35 +52,25 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# get the current logged user site\n
if user_id is None:\n
login = context.portal_membership.getAuthenticatedMember().getUserName()\n
else:\n
login = user_id\n
persons = context.acl_users.erp5_users.getUserByLogin(login)\n
\n
if len(persons) == 0:\n
#context.log(\'Baobab_getUserAssignementList\', \'Person %s not found\' %(login))\n
return []\n
else:\n
#person = persons[0].getObject()\n
person = persons[0]\n
\n
assignment_list = person.contentValues(filter={\'portal_type\': \'Assignment\'})\n
\n
if len(assignment_list) == 0:\n
return []\n
\n
valid_assignment_list = []\n
#context.log("Baobab_getUserAssignmentList", "assignment_list = %s" %(assignment_list,))\n
for a in assignment_list:\n
if a.getValidationState() == \'open\':\n
stop = a.getStopDate()\n
start = a.getStartDate()\n
if (stop > DateTime() or stop == None) and (start < DateTime() or start == None): \n
valid_assignment_list.append(a)\n
\n
return valid_assignment_list\n
user_id = context.portal_membership.getAuthenticatedMember().getUserName()\n
person_list = context.acl_users.erp5_users.getUserByLogin(user_id)\n
if not person_list:\n
return None\n
assignment_list = person_list[0].contentValues(filter={\'portal_type\': \'Assignment\'})\n
if not assignment_list:\n
return None\n
valid_assignment = None\n
now = DateTime()\n
for assignment in assignment_list:\n
if assignment.getValidationState() == \'open\':\n
stop = assignment.getStopDate()\n
start = assignment.getStartDate()\n
if (stop is None or stop > now) and (start is None or start < now):\n
if valid_assignment is not None:\n
raise ValueError(\'There are too many valid assignments for user %r\' % (user_id, ))\n
valid_assignment = assignment\n
return valid_assignment\n
]]></string> </value>
......@@ -99,7 +89,7 @@ return valid_assignment_list\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Baobab_getUserAssignmentList</string> </value>
<value> <string>Baobab_getUserAssignment</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -55,7 +55,7 @@
user_id = context.portal_membership.getAuthenticatedMember().getUserName()\n
\n
def getUserSiteUid(user_id):\n
return context.Baobab_getUserAssignedRootSiteList(user_id=user_id, object=1)[0].getSiteUid()\n
return context.Baobab_getUserAssignedRootSite(user_id=user_id, object=1).getSiteUid()\n
\n
\n
getUserSiteUid = CachingMethod(getUserSiteUid, id=\'Baobab_getUserUserSiteUid\', cache_factory=\'erp5_ui_medium\')\n
......
1023
\ No newline at end of file
1025
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment