Commit 9bac9962 authored by Julien Muchembled's avatar Julien Muchembled

invoicing: speed up InvoiceTransaction_selectInvoiceMovement

parent ad6958f4
Pipeline #22091 failed with stage
in 0 seconds
<dtml-var table_0>.base_category_uid = <dtml-var "portal_categories.specialise.getUid()">
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_0>.uid = <dtml-var table_2>.parent_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_2>.uid = <dtml-var table_1>.parent_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_3>.uid = <dtml-var table_0>.category_uid
AND <dtml-var table_1>.uid = <dtml-var query_table>.parent_uid
\ No newline at end of file
<dtml-var table_1>.uid = <dtml-var table_0>.parent_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_2>.uid = <dtml-var table_1>.parent_uid
AND <dtml-var table_2>.base_category_uid = <dtml-var "portal_categories.specialise.getUid()">
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_0>.uid = <dtml-var query_table>.parent_uid
...@@ -8,16 +8,13 @@ ...@@ -8,16 +8,13 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>allow_simple_one_argument_traversal</string> </key> <key> <string>allow_simple_one_argument_traversal</string> </key>
<value> <value> <int>0</int> </value>
<none/>
</value>
</item> </item>
<item> <item>
<key> <string>arguments_src</string> </key> <key> <string>arguments_src</string> </key>
<value> <string>table_0\n <value> <string>table_0\n
table_1\n table_1\n
table_2\n table_2\n
table_3\n
RELATED_QUERY_SEPARATOR=" AND "\n RELATED_QUERY_SEPARATOR=" AND "\n
query_table="catalog"</string> </value> query_table="catalog"</string> </value>
</item> </item>
...@@ -27,11 +24,15 @@ query_table="catalog"</string> </value> ...@@ -27,11 +24,15 @@ query_table="catalog"</string> </value>
</item> </item>
<item> <item>
<key> <string>class_file_</string> </key> <key> <string>class_file_</string> </key>
<value> <string></string> </value> <value>
<none/>
</value>
</item> </item>
<item> <item>
<key> <string>class_name_</string> </key> <key> <string>class_name_</string> </key>
<value> <string></string> </value> <value>
<none/>
</value>
</item> </item>
<item> <item>
<key> <string>connection_hook</string> </key> <key> <string>connection_hook</string> </key>
...@@ -45,7 +46,7 @@ query_table="catalog"</string> </value> ...@@ -45,7 +46,7 @@ query_table="catalog"</string> </value>
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>z_related_grand_grand_parent_specialise</string> </value> <value> <string>z_related_grand_grand_parent_specialise_uid</string> </value>
</item> </item>
<item> <item>
<key> <string>max_cache_</string> </key> <key> <string>max_cache_</string> </key>
......
<key_list> <key_list>
<key>grand_grand_grand_parent_simulation_state | catalog,catalog,catalog,catalog/simulation_state/z_related_grand_grand_grand_parent</key> <key>grand_grand_grand_parent_simulation_state | catalog,catalog,catalog,catalog/simulation_state/z_related_grand_grand_grand_parent</key>
<key>grand_grand_parent_specialise_portal_type | category,catalog,catalog,catalog/portal_type/z_related_grand_grand_parent_specialise</key> <key>grand_grand_parent_specialise_uid | catalog,catalog,category/category_uid/z_related_grand_grand_parent_specialise_uid</key>
<key>grand_grand_parent_specialise_reference | category,catalog,catalog,catalog/reference/z_related_grand_grand_parent_specialise</key>
</key_list> </key_list>
\ No newline at end of file
...@@ -3,11 +3,16 @@ ...@@ -3,11 +3,16 @@
Simulation Movements can come from normal Invoice Transaction Rule Simulation Movements can come from normal Invoice Transaction Rule
and same rule which is children of Trade Model Rule """ and same rule which is children of Trade Model Rule """
portal = context.getPortalObject()
searchRules = portal.portal_rules.searchFolder
getRuleUidList = lambda *args: [x.getUid() for x in searchRules(reference=args)]
# search for normal movements # search for normal movements
kw['parent_specialise_reference'] = ['default_invoice_transaction_rule'] kw['parent_specialise_uid'] = getRuleUidList('default_invoice_transaction_rule')
kw['grand_grand_parent_specialise_reference'] = [
'default_invoicing_rule', 'default_invoice_rule', 'default_tax_rule'] kw['grand_grand_parent_specialise_uid'] = getRuleUidList(
if context.Invoice_isAdvanced(): 'default_invoicing_rule', 'default_invoice_rule', 'default_tax_rule')
if portal.Invoice_isAdvanced():
kw['explanation_portal_type'] = ['%s Order' % trade_type, kw['explanation_portal_type'] = ['%s Order' % trade_type,
'%s Invoice' % trade_type, '%s Invoice' % trade_type,
'%s Packing List' % trade_type, '%s Packing List' % trade_type,
...@@ -27,13 +32,14 @@ kw['group_by'] = ('uid',) ...@@ -27,13 +32,14 @@ kw['group_by'] = ('uid',)
search_kw = kw.copy() search_kw = kw.copy()
search_kw['grand_parent_simulation_state'] = ['started'] search_kw['grand_parent_simulation_state'] = ['started']
movement_list = list(context.portal_catalog(**search_kw)) movement_list = list(portal.portal_catalog(**search_kw))
# update query to search for movements which are children of Trade Model Rule # update query to search for movements which are children of Trade Model Rule
kw['grand_grand_parent_specialise_reference'] = 'default_trade_model_rule' kw['grand_grand_parent_specialise_uid'] = getRuleUidList(
'default_trade_model_rule')
kw['grand_grand_grand_parent_simulation_state'] = ['started'] kw['grand_grand_grand_parent_simulation_state'] = ['started']
movement_list += list(context.portal_catalog(**kw)) movement_list += portal.portal_catalog(**kw)
# Simulation movement's state maybe not yet updated, make sure it's the right one # Simulation movement's state maybe not yet updated, make sure it's the right one
return [x for x in movement_list if x.getParentValue().getParentValue().getSimulationState() == 'started'] return [x for x in movement_list if x.getParentValue().getParentValue().getSimulationState() == 'started']
erp5_mysql_innodb/z_related_grand_grand_grand_parent erp5_mysql_innodb/z_related_grand_grand_grand_parent
erp5_mysql_innodb/z_related_grand_grand_parent_specialise erp5_mysql_innodb/z_related_grand_grand_parent_specialise_uid
\ No newline at end of file \ No newline at end of file
grand_grand_grand_parent_simulation_state | catalog,catalog,catalog,catalog/simulation_state/z_related_grand_grand_grand_parent grand_grand_grand_parent_simulation_state | catalog,catalog,catalog,catalog/simulation_state/z_related_grand_grand_grand_parent
grand_grand_parent_specialise_portal_type | category,catalog,catalog,catalog/portal_type/z_related_grand_grand_parent_specialise grand_grand_parent_specialise_uid | catalog,catalog,category/category_uid/z_related_grand_grand_parent_specialise_uid
grand_grand_parent_specialise_reference | category,catalog,catalog,catalog/reference/z_related_grand_grand_parent_specialise \ No newline at end of file
\ No newline at end of file
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