diff --git a/account_financial_report_webkit/report/common_reports.py b/account_financial_report_webkit/report/common_reports.py index 11c4203d..871a2c1f 100644 --- a/account_financial_report_webkit/report/common_reports.py +++ b/account_financial_report_webkit/report/common_reports.py @@ -492,23 +492,9 @@ class CommonReportHeaderWebkit(common_report_header): raise osv.except_osv( _('No valid filter'), _('Please set a valid time filter')) - def _get_move_line_datas(self, move_line_ids, - order='per.special DESC, l.date ASC, \ - per.date_start ASC, m.name ASC'): - # Possible bang if move_line_ids is too long - # We can not slice here as we have to do the sort. - # If slice has to be done it means that we have to reorder in python - # after all is finished. That quite crapy... - # We have a defective desing here (mea culpa) that should be fixed - # - # TODO improve that by making a better domain or if not possible - # by using python sort - if not move_line_ids: - return [] - if not isinstance(move_line_ids, list): - move_line_ids = [move_line_ids] - monster = """ -SELECT l.id AS id, + def _get_move_line_select(self): + return """ + l.id AS id, l.date AS ldate, j.code AS jcode , j.type AS jtype, @@ -534,18 +520,42 @@ SELECT l.id AS id, i.type AS invoice_type, i.number AS invoice_number, l.date_maturity -FROM account_move_line l - JOIN account_move m on (l.move_id=m.id) - LEFT JOIN res_currency c on (l.currency_id=c.id) - LEFT JOIN account_move_reconcile partialrec - on (l.reconcile_partial_id = partialrec.id) - LEFT JOIN account_move_reconcile fullrec on (l.reconcile_id = fullrec.id) - LEFT JOIN res_partner p on (l.partner_id=p.id) - LEFT JOIN account_invoice i on (m.id =i.move_id) - LEFT JOIN account_period per on (per.id=l.period_id) - JOIN account_journal j on (l.journal_id=j.id) - WHERE l.id in %s""" - monster += (" ORDER BY %s" % (order,)) + """ + + def _get_move_line_datas(self, move_line_ids, + order='per.special DESC, l.date ASC, \ + per.date_start ASC, m.name ASC'): + # Possible bang if move_line_ids is too long + # We can not slice here as we have to do the sort. + # If slice has to be done it means that we have to reorder in python + # after all is finished. That quite crapy... + # We have a defective desing here (mea culpa) that should be fixed + # + # TODO improve that by making a better domain or if not possible + # by using python sort + if not move_line_ids: + return [] + if not isinstance(move_line_ids, list): + move_line_ids = [move_line_ids] + monster = """ + SELECT {select} + FROM account_move_line l + JOIN account_move m on (l.move_id=m.id) + LEFT JOIN res_currency c on (l.currency_id=c.id) + LEFT JOIN account_move_reconcile partialrec + ON (l.reconcile_partial_id = partialrec.id) + LEFT JOIN account_move_reconcile fullrec + ON (l.reconcile_id = fullrec.id) + LEFT JOIN res_partner p on (l.partner_id=p.id) + LEFT JOIN account_invoice i on (m.id =i.move_id) + LEFT JOIN account_period per on (per.id=l.period_id) + JOIN account_journal j on (l.journal_id=j.id) + WHERE l.id in %s + ORDER BY {order} + """.format( + select=self._get_move_line_select(), + order=order, + ) try: self.cursor.execute(monster, (tuple(move_line_ids),)) res = self.cursor.dictfetchall() diff --git a/account_financial_report_webkit_xls/report/general_ledger_xls.py b/account_financial_report_webkit_xls/report/general_ledger_xls.py index a05b190b..3b3b35ab 100644 --- a/account_financial_report_webkit_xls/report/general_ledger_xls.py +++ b/account_financial_report_webkit_xls/report/general_ledger_xls.py @@ -35,72 +35,11 @@ class GeneralLedgerWebkitSupplier(GeneralLedgerWebkit): """ Extends General Ledger Parser to add the supplier invoice number in the move lines """ - def _get_move_line_datas(self, move_line_ids, - order='per.special DESC, l.date ASC, \ - per.date_start ASC, m.name ASC'): - # copied from account_financial_report_webkit/report/common_reports.py - # and adjusted to add the required column - - # Possible bang if move_line_ids is too long - # We can not slice here as we have to do the sort. - # If slice has to be done it means that we have to reorder in python - # after all is finished. That quite crapy... - # We have a defective desing here (mea culpa) that should be fixed - # - # TODO improve that by making a better domain or if not possible - # by using python sort - if not move_line_ids: - return [] - if not isinstance(move_line_ids, list): - move_line_ids = [move_line_ids] - monster = """ - SELECT l.id AS id, - l.date AS ldate, - j.code AS jcode , - j.type AS jtype, - l.currency_id, - l.account_id, - l.amount_currency, - l.ref AS lref, - l.name AS lname, - COALESCE(l.debit, 0.0) - COALESCE(l.credit, 0.0) AS balance, - l.debit, - l.credit, - l.period_id AS lperiod_id, - per.code as period_code, - per.special AS peropen, - l.partner_id AS lpartner_id, - p.name AS partner_name, - m.name AS move_name, - COALESCE(partialrec.name, fullrec.name, '') AS rec_name, - COALESCE(partialrec.id, fullrec.id, NULL) AS rec_id, - m.id AS move_id, - c.name AS currency_code, - i.id AS invoice_id, - i.type AS invoice_type, - i.number AS invoice_number, - i.supplier_invoice_number AS supplier_invoice_number, - l.date_maturity - FROM account_move_line l - JOIN account_move m on (l.move_id=m.id) - LEFT JOIN res_currency c on (l.currency_id=c.id) - LEFT JOIN account_move_reconcile partialrec - on (l.reconcile_partial_id = partialrec.id) - LEFT JOIN account_move_reconcile fullrec on (l.reconcile_id = fullrec.id) - LEFT JOIN res_partner p on (l.partner_id=p.id) - LEFT JOIN account_invoice i on (m.id =i.move_id) - LEFT JOIN account_period per on (per.id=l.period_id) - JOIN account_journal j on (l.journal_id=j.id) - WHERE l.id in %s""" - monster += (" ORDER BY %s" % (order,)) - try: - self.cursor.execute(monster, (tuple(move_line_ids),)) - res = self.cursor.dictfetchall() - except Exception: - self.cursor.rollback() - raise - return res or [] - + def _get_move_line_select(self): + res = super(GeneralLedgerWebkitSupplier, self)._get_move_line_select() + return res + """ + , i.supplier_invoice_number AS supplier_invoice_number + """ _column_sizes = [ ('date', 12), @@ -182,8 +121,8 @@ class general_ledger_xls(report_xls): ('df', COLS_DF, 0, 'text', _p.filter_form(data) == 'filter_date' and _('Dates Filter') or _('Periods Filter')), ('af', COLS_AF, 0, 'text', _('Accounts Filter')), - ('tm', COLS_TM, 0, 'text', _('Target Moves')), - ('ib', COLS_IB, 0, 'text', _('Initial Balance')), + ('tm', COLS_TM, 0, 'text', _('Target Moves')), + ('ib', COLS_IB, 0, 'text', _('Initial Balance')), ] row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) @@ -195,7 +134,8 @@ class general_ledger_xls(report_xls): cell_style_center = xlwt.easyxf(cell_format + _xs['center']) c_specs = [ ('coa', COLS_COA, 0, 'text', _p.chart_account.name), - ('fy', COLS_FY, 0, 'text', _p.fiscalyear.name if _p.fiscalyear else '-'), + ('fy', COLS_FY, 0, 'text', + _p.fiscalyear.name if _p.fiscalyear else '-'), ] df = _('From') + ': ' if _p.filter_form(data) == 'filter_date':