← Back to team overview

openerp-community team mailing list archive

[Merge] lp:~openerp-community/c2c-financial-addons/fix_general_ledger into lp:c2c-financial-addons/6.0

 

Lorenzo Battistini - Agile BG - Domsense has proposed merging lp:~openerp-community/c2c-financial-addons/fix_general_ledger into lp:c2c-financial-addons/6.0.

Requested reviews:
  Camptocamp (c2c)

For more details, see:
https://code.launchpad.net/~openerp-community/c2c-financial-addons/fix_general_ledger/+merge/83265

This fixes the following bug:

 - Run general ledger webkit wizard
 - In the account filters, select a leaf account (with parent)

Get

[2011-11-24 10:58:34,971][test] ERROR:db.cursor:Programming error: syntax error at or near ")"
LINE 1: ...ELECT a.id FROM account_account a  WHERE a.id IN () AND a.ty...
                                                             ^
, in query SELECT a.id FROM account_account a  WHERE a.id IN %(ids)s AND a.type not in %(exclude_type)s
[2011-11-24 10:58:34,973][test] ERROR:web-services:[01]: Exception: syntax error at or near ")"
[2011-11-24 10:58:34,974][test] ERROR:web-services:[02]: LINE 1: ...ELECT a.id FROM account_account a  WHERE a.id IN () AND a.ty...
[2011-11-24 10:58:34,974][test] ERROR:web-services:[03]:                                                              ^
[2011-11-24 10:58:34,974][test] ERROR:web-services:[04]: 
[2011-11-24 10:58:34,974][test] ERROR:web-services:[05]: Traceback (most recent call last):
[2011-11-24 10:58:34,974][test] ERROR:web-services:[06]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/service/web_services.py", line 724, in go
[2011-11-24 10:58:34,974][test] ERROR:web-services:[07]:     (result, format) = obj.create(cr, uid, ids, datas, context)
[2011-11-24 10:58:34,974][test] ERROR:web-services:[08]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/addons/report_webkit/webkit_report.py", line 372, in create
[2011-11-24 10:58:34,975][test] ERROR:web-services:[09]:     result = self.create_source_pdf(cursor, uid, ids, data, report_xml, context)
[2011-11-24 10:58:34,975][test] ERROR:web-services:[10]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/report/report_sxw.py", line 481, in create_source_pdf
[2011-11-24 10:58:34,975][test] ERROR:web-services:[11]:     return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
[2011-11-24 10:58:34,975][test] ERROR:web-services:[12]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/addons/account_financial_report_webkit/report/webkit_parser_header_fix.py", line 156, in create_single_pdf
[2011-11-24 10:58:34,975][test] ERROR:web-services:[13]:     self.parser_instance.set_context(objs, data, ids, report_xml.report_type)
[2011-11-24 10:58:34,975][test] ERROR:web-services:[14]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/addons/account_financial_report_webkit/report/account_report_general_ledger.py", line 100, in set_context
[2011-11-24 10:58:34,975][test] ERROR:web-services:[15]:     accounts = self.get_all_accounts(new_ids, exclude_type=['view'])
[2011-11-24 10:58:34,975][test] ERROR:web-services:[16]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/addons/account_financial_report_webkit/report/common_report_header_webkit.py", line 178, in get_all_accounts
[2011-11-24 10:58:34,976][test] ERROR:web-services:[17]:     self.cursor.execute(sql, sql_filters)
[2011-11-24 10:58:34,976][test] ERROR:web-services:[18]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/sql_db.py", line 78, in wrapper
[2011-11-24 10:58:34,976][test] ERROR:web-services:[19]:     return f(self, *args, **kwargs)
[2011-11-24 10:58:34,976][test] ERROR:web-services:[20]:   File "/home/elbati/workspace/openerp/openerp6/server/bin/sql_db.py", line 131, in execute
[2011-11-24 10:58:34,976][test] ERROR:web-services:[21]:     res = self._obj.execute(query, params)
[2011-11-24 10:58:34,976][test] ERROR:web-services:[22]: ProgrammingError: syntax error at or near ")"
[2011-11-24 10:58:34,976][test] ERROR:web-services:[23]: LINE 1: ...ELECT a.id FROM account_account a  WHERE a.id IN () AND a.ty...
[2011-11-24 10:58:34,977][test] ERROR:web-services:[24]:
-- 
https://code.launchpad.net/~openerp-community/c2c-financial-addons/fix_general_ledger/+merge/83265
Your team OpenERP Community is subscribed to branch lp:~openerp-community/c2c-financial-addons/fix_general_ledger.
=== modified file 'account_financial_report_webkit/report/common_report_header_webkit.py'
--- account_financial_report_webkit/report/common_report_header_webkit.py	2011-11-21 12:46:39 +0000
+++ account_financial_report_webkit/report/common_report_header_webkit.py	2011-11-24 10:01:37 +0000
@@ -112,20 +112,21 @@
     def sort_accounts_with_structure(self, account_ids, context=None):
         """Sort accounts by code respecting their structure"""
 
-        def recursive_sort_by_code(accounts, parent_id=False):
+        def recursive_sort_by_code(accounts, parent_ids=[]):
             sorted_accounts = []
             level_accounts = [account for account
                               in accounts
-                              if (not parent_id and not account['parent_id'] or
-                                  account['parent_id'] and account['parent_id'][0] == parent_id)]
+                              if (not parent_ids and not account['parent_id'] or
+                                  account['parent_id'] and account['parent_id'][0] in parent_ids)]
             if not level_accounts:
                 return []
 
             level_accounts = sorted(level_accounts, key=lambda a: a['code'])
 
             for level_account in level_accounts:
-                sorted_accounts.append(level_account['id'])
-                sorted_accounts.extend(recursive_sort_by_code( accounts, parent_id=level_account['id']))
+                if level_account['id'] not in sorted_accounts:
+                    sorted_accounts.append(level_account['id'])
+                    sorted_accounts.extend(recursive_sort_by_code( accounts, parent_ids=[level_account['id']]))
             return sorted_accounts
 
         if not account_ids:
@@ -134,8 +135,11 @@
                                                          account_ids,
                                                          ['id', 'parent_id', 'code'],
                                                          context=context)
-
-        sorted_accounts = recursive_sort_by_code(accounts)
+        parent_ids = []
+        for account in accounts:
+            if account['parent_id'] and account['parent_id'][0] not in parent_ids:
+                parent_ids.append(account['parent_id'][0])
+        sorted_accounts = recursive_sort_by_code(accounts, parent_ids)
 
         return sorted_accounts
 


Follow ups