From 93884a8a113ae17a1926537ad5af5392778ee692 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 23 Jan 2013 12:32:53 +0100 Subject: [PATCH] [FIX] account: added the ir.values to add the partner_ledger report as report on the res.partner object + fixed that part of the code bzr revid: qdp-launchpad@openerp.com-20130123113253-0gs8idcha0qbem9s --- .../account/report/account_partner_ledger.py | 141 ++---------------- .../account_report_partner_ledger_view.xml | 9 +- 2 files changed, 17 insertions(+), 133 deletions(-) diff --git a/addons/account/report/account_partner_ledger.py b/addons/account/report/account_partner_ledger.py index f72e81fbc08..21c1ee3d846 100644 --- a/addons/account/report/account_partner_ledger.py +++ b/addons/account/report/account_partner_ledger.py @@ -35,10 +35,7 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header): 'lines': self.lines, 'sum_debit_partner': self._sum_debit_partner, 'sum_credit_partner': self._sum_credit_partner, -# 'sum_debit': self._sum_debit, -# 'sum_credit': self._sum_credit, 'get_currency': self._get_currency, - 'comma_me': self.comma_me, 'get_start_period': self.get_start_period, 'get_end_period': self.get_end_period, 'get_account': self._get_account, @@ -78,11 +75,6 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header): move_state = ['draft','posted'] if self.target_move == 'posted': move_state = ['posted'] - - if (data['model'] == 'res.partner'): - ## Si on imprime depuis les partenaires - if ids: - PARTNER_REQUEST = "AND line.partner_id IN %s",(tuple(ids),) if self.result_selection == 'supplier': self.ACCOUNT_TYPE = ['payable'] elif self.result_selection == 'customer': @@ -98,7 +90,11 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header): 'WHERE a.type IN %s' \ "AND a.active", (tuple(self.ACCOUNT_TYPE), )) self.account_ids = [a for (a,) in self.cr.fetchall()] - partner_to_use = [] + params = [tuple(move_state), tuple(self.account_ids)] + #if we print from the partners, add a clause on active_ids + if (data['model'] == 'res.partner') and ids: + PARTNER_REQUEST = "AND l.partner_id IN %s" + params += [tuple(ids)] self.cr.execute( "SELECT DISTINCT l.partner_id " \ "FROM account_move_line AS l, account_account AS account, " \ @@ -110,30 +106,10 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header): # "AND " + self.query +" " \ "AND l.account_id IN %s " \ " " + PARTNER_REQUEST + " " \ - "AND account.active ", - (tuple(move_state), tuple(self.account_ids),)) - - res = self.cr.dictfetchall() - for res_line in res: - partner_to_use.append(res_line['partner_id']) - new_ids = partner_to_use - self.partner_ids = new_ids - objects = obj_partner.browse(self.cr, self.uid, new_ids) - return super(third_party_ledger, self).set_context(objects, data, new_ids, report_type) - - def comma_me(self, amount): - if type(amount) is float: - amount = str('%.2f'%amount) - else: - amount = str(amount) - if (amount == '0'): - return ' ' - orig = amount - new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount) - if orig == new: - return new - else: - return self.comma_me(new) + "AND account.active ", params) + self.partner_ids = [res['partner_id'] for res in self.cr.dictfetchall()] + objects = obj_partner.browse(self.cr, self.uid, self.partner_ids) + return super(third_party_ledger, self).set_context(objects, data, self.partner_ids, report_type) def lines(self, partner): move_state = ['draft','posted'] @@ -290,105 +266,6 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header): result_tmp = result_tmp + 0.0 return result_tmp + result_init - # code is deprecated -# def _sum_debit(self): -# move_state = ['draft','posted'] -# if self.target_move == 'posted': -# move_state = ['posted'] -# -# if not self.ids: -# return 0.0 -# result_tmp = 0.0 -# result_init = 0.0 -# if self.reconcil: -# RECONCILE_TAG = " " -# else: -# RECONCILE_TAG = "AND reconcile_id IS NULL" -# if self.initial_balance: -# self.cr.execute( -# "SELECT sum(debit) " \ -# "FROM account_move_line AS l, " \ -# "account_move AS m " -# "WHERE partner_id IN %s" \ -# "AND m.id = l.move_id " \ -# "AND m.state IN %s " -# "AND account_id IN %s" \ -# "AND reconcile_id IS NULL " \ -# "AND " + self.init_query + " ", -# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids))) -# contemp = self.cr.fetchone() -# if contemp != None: -# result_init = contemp[0] or 0.0 -# else: -# result_init = result_tmp + 0.0 -# -# self.cr.execute( -# "SELECT sum(debit) " \ -# "FROM account_move_line AS l, " \ -# "account_move AS m " -# "WHERE partner_id IN %s" \ -# "AND m.id = l.move_id " \ -# "AND m.state IN %s " -# "AND account_id IN %s" \ -# " " + RECONCILE_TAG + " " \ -# "AND " + self.query + " ", -# (tuple(self.partner_ids), tuple(move_state) ,tuple(self.account_ids),)) -# contemp = self.cr.fetchone() -# if contemp != None: -# result_tmp = contemp[0] or 0.0 -# else: -# result_tmp = result_tmp + 0.0 -# return result_tmp + result_init -# -# def _sum_credit(self): -# move_state = ['draft','posted'] -# if self.target_move == 'posted': -# move_state = ['posted'] -# -# if not self.ids: -# return 0.0 -# result_tmp = 0.0 -# result_init = 0.0 -# if self.reconcil: -# RECONCILE_TAG = " " -# else: -# RECONCILE_TAG = "AND reconcile_id IS NULL" -# if self.initial_balance: -# self.cr.execute( -# "SELECT sum(credit) " \ -# "FROM account_move_line AS l, " \ -# "account_move AS m " -# "WHERE partner_id IN %s" \ -# "AND m.id = l.move_id " \ -# "AND m.state IN %s " -# "AND account_id IN %s" \ -# "AND reconcile_id IS NULL " \ -# "AND " + self.init_query + " ", -# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids))) -# contemp = self.cr.fetchone() -# if contemp != None: -# result_init = contemp[0] or 0.0 -# else: -# result_init = result_tmp + 0.0 -# -# self.cr.execute( -# "SELECT sum(credit) " \ -# "FROM account_move_line AS l, " \ -# "account_move AS m " -# "WHERE partner_id IN %s" \ -# "AND m.id = l.move_id " \ -# "AND m.state IN %s " -# "AND account_id IN %s" \ -# " " + RECONCILE_TAG + " " \ -# "AND " + self.query + " ", -# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids),)) -# contemp = self.cr.fetchone() -# if contemp != None: -# result_tmp = contemp[0] or 0.0 -# else: -# result_tmp = result_tmp + 0.0 -# return result_tmp + result_init - def _get_partners(self): if self.result_selection == 'customer': return 'Receivable Accounts' diff --git a/addons/account/wizard/account_report_partner_ledger_view.xml b/addons/account/wizard/account_report_partner_ledger_view.xml index f3dd9a80f09..34c5d55e4c1 100644 --- a/addons/account/wizard/account_report_partner_ledger_view.xml +++ b/addons/account/wizard/account_report_partner_ledger_view.xml @@ -23,7 +23,7 @@ - Select Period + Partner Ledger account.partner.ledger ir.actions.act_window form @@ -33,6 +33,13 @@ new + + + + Print Partner Ledger + + +