diff --git a/addons/account/project/report/quantity_cost_ledger.py b/addons/account/project/report/quantity_cost_ledger.py index dd05e2ab01d..8c580c42a18 100644 --- a/addons/account/project/report/quantity_cost_ledger.py +++ b/addons/account/project/report/quantity_cost_ledger.py @@ -32,7 +32,8 @@ from report import report_sxw class account_analytic_quantity_cost_ledger(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): - super(account_analytic_quantity_cost_ledger, self).__init__(cr, uid, name, context) + super(account_analytic_quantity_cost_ledger, self).__init__(cr, uid, + name, context) self.localcontext.update( { 'time': time, 'lines_g': self._lines_g, @@ -40,55 +41,76 @@ class account_analytic_quantity_cost_ledger(report_sxw.rml_parse): 'sum_quantity': self._sum_quantity, 'account_sum_quantity': self._account_sum_quantity, }) - + def _lines_g(self, account_id, date1, date2, journals): if not journals or not journals[0][2]: - self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, aa.code AS code, aa.name AS name, aa.id AS id \ + self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \ + aa.code AS code, aa.name AS name, aa.id AS id \ FROM account_account AS aa, account_analytic_line AS aal \ - WHERE (aal.account_id=%d) AND (aal.date>=%s) AND (aal.date<=%s) AND (aal.general_account_id=aa.id) AND aa.active \ - GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", (account_id, date1, date2)) + WHERE (aal.account_id=%d) AND (aal.date>=%s) \ + AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \ + AND aa.active \ + GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", + (account_id, date1, date2)) else: journal_ids = journals[0][2] - self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, aa.code AS code, aa.name AS name, aa.id AS id \ + self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \ + aa.code AS code, aa.name AS name, aa.id AS id \ FROM account_account AS aa, account_analytic_line AS aal \ - WHERE (aal.account_id=%d) AND (aal.date>=%s) AND (aal.date<=%s) AND (aal.general_account_id=aa.id) AND aa.active \ - AND (aal.journal_id IN ("+','.join(map(str, journal_ids))+")) \ - GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", (account_id, date1, date2)) - res = self.cr.dictfetchall() - return res - - def _lines_a(self, general_account_id, account_id, date1, date2, journals): - if not journals or not journals[0][2]: - self.cr.execute("SELECT aal.name AS name, aal.code AS code, aal.unit_amount AS quantity, aal.date AS date, aaj.code AS cj \ - FROM account_analytic_line AS aal, account_analytic_journal AS aaj \ - WHERE (aal.general_account_id=%d) AND (aal.account_id=%d) AND (aal.date>=%s) AND (aal.date<=%s) \ - AND (aal.journal_id=aaj.id) \ - ORDER BY aal.date, aaj.code, aal.code", (general_account_id, account_id, date1, date2)) - else: - journal_ids = journals[0][2] - self.cr.execute("SELECT aal.name AS name, aal.code AS code, aal.unit_amount AS quantity, aal.date AS date, aaj.code AS cj \ - FROM account_analytic_line AS aal, account_analytic_journal AS aaj \ - WHERE (aal.general_account_id=%d) AND (aal.account_id=%d) AND (aal.date>=%s) AND (aal.date<=%s) \ - AND (aal.journal_id=aaj.id) AND (aaj.id IN ("+','.join(map(str, journal_ids))+")) \ - ORDER BY aal.date, aaj.code, aal.code", (general_account_id, account_id, date1, date2)) + WHERE (aal.account_id=%d) AND (aal.date>=%s) \ + AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \ + AND aa.active \ + AND (aal.journal_id IN (" + + ','.join(map(str, journal_ids)) + ")) \ + GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", + (account_id, date1, date2)) + res = self.cr.dictfetchall() + return res + + def _lines_a(self, general_account_id, account_id, date1, date2, journals): + if not journals or not journals[0][2]: + self.cr.execute("SELECT aal.name AS name, aal.code AS code, \ + aal.unit_amount AS quantity, aal.date AS date, \ + aaj.code AS cj \ + FROM account_analytic_line AS aal, \ + account_analytic_journal AS aaj \ + WHERE (aal.general_account_id=%d) AND (aal.account_id=%d) \ + AND (aal.date>=%s) AND (aal.date<=%s) \ + AND (aal.journal_id=aaj.id) \ + ORDER BY aal.date, aaj.code, aal.code", + (general_account_id, account_id, date1, date2)) + else: + journal_ids = journals[0][2] + self.cr.execute("SELECT aal.name AS name, aal.code AS code, \ + aal.unit_amount AS quantity, aal.date AS date, \ + aaj.code AS cj \ + FROM account_analytic_line AS aal, \ + account_analytic_journal AS aaj \ + WHERE (aal.general_account_id=%d) AND (aal.account_id=%d) \ + AND (aal.date>=%s) AND (aal.date<=%s) \ + AND (aal.journal_id=aaj.id) AND (aaj.id IN (" + + ','.join(map(str, journal_ids)) + ")) \ + ORDER BY aal.date, aaj.code, aal.code", + (general_account_id, account_id, date1, date2)) res = self.cr.dictfetchall() return res - def _account_sum_quantity(self, account_id, date1, date2, journals): if not journals or not journals[0][2]: self.cr.execute("SELECT sum(unit_amount) \ FROM account_analytic_line \ - WHERE account_id=%d AND date>=%s AND date<=%s", (account_id, date1, date2)) + WHERE account_id=%d AND date>=%s AND date<=%s", + (account_id, date1, date2)) else: journal_ids = journals[0][2] self.cr.execute("SELECT sum(unit_amount) \ FROM account_analytic_line \ WHERE account_id = %d AND date >= %s AND date <= %s \ - AND journal_id IN ("+','.join(map(str, journal_ids))+")", (account_id, date1, date2)) + AND journal_id IN (" + + ','.join(map(str, journal_ids)) + ")", + (account_id, date1, date2)) return self.cr.fetchone()[0] or 0.0 - - + def _sum_quantity(self, accounts, date1, date2, journals): ids = map(lambda x: x.id, accounts) if not len(ids): @@ -96,14 +118,22 @@ class account_analytic_quantity_cost_ledger(report_sxw.rml_parse): if not journals or not journals[0][2]: self.cr.execute("SELECT sum(unit_amount) \ FROM account_analytic_line \ - WHERE account_id IN ("+','.join(map(str, ids))+") AND date>=%s AND date<=%s", (date1, date2)) + WHERE account_id IN (" + + ','.join(map(str, ids)) + ") AND date>=%s AND date<=%s", + (date1, date2)) else: journal_ids = journals[0][2] self.cr.execute("SELECT sum(unit_amount) \ FROM account_analytic_line \ - WHERE account_id IN ("+','.join(map(str, ids))+") AND date >= %s AND date <= %s \ - AND journal_id IN ("+','.join(map(str, journal_ids))+")", (date1, date2)) + WHERE account_id IN (" + + ','.join(map(str, ids)) + ") AND date >= %s AND date <= %s \ + AND journal_id IN (" + + ','.join(map(str, journal_ids)) + ")", + (date1, date2)) return self.cr.fetchone()[0] or 0.0 -report_sxw.report_sxw('report.account.analytic.account.cost_ledger_for_journal', 'account.analytic.account', 'addons/account/project/report/quantity_cost_ledger.rml',parser=account_analytic_quantity_cost_ledger, header=False) +report_sxw.report_sxw('report.account.analytic.account.quantity_cost_ledger', + 'account.analytic.account', + 'addons/account/project/report/quantity_cost_ledger.rml', + parser=account_analytic_quantity_cost_ledger, header=False) diff --git a/addons/account/project/wizard/wizard_account_analytic_cost_ledger_for_journal_report.py b/addons/account/project/wizard/wizard_account_analytic_cost_ledger_for_journal_report.py index 706af8c3837..4424c290f53 100644 --- a/addons/account/project/wizard/wizard_account_analytic_cost_ledger_for_journal_report.py +++ b/addons/account/project/wizard/wizard_account_analytic_cost_ledger_for_journal_report.py @@ -43,17 +43,29 @@ _fields = { 'journal': {'string':'Journals','type':'many2many', 'relation':'account.analytic.journal'}, } + class wizard_report(wizard.interface): states = { 'init': { 'actions': [], - 'result': {'type':'form', 'arch':_form, 'fields':_fields, 'state':[('end','Cancel'), ('report','Print')]} + 'result': { + 'type': 'form', + 'arch': _form, + 'fields': _fields, + 'state': [ + ('end','Cancel'), + ('report','Print') + ] + } }, 'report': { 'actions': [], - 'result': {'type':'print', 'report':'account.analytic.account.cost_ledger_for_journal', 'state':'end'} - } + 'result': { + 'type': 'print', + 'report': 'account.analytic.account.cost_ledger', + 'state': 'end' + } + }, } + wizard_report('account.analytic.account.quantity_cost_ledger.report') - -