From 5303cef9543ef0f491497afd855d6105339ec1f2 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Thu, 7 Mar 2013 11:32:59 +0530 Subject: [PATCH] [IMP]account_analytic_analysis: Improve onchange template and set context in added code bzr revid: dbr@tinyerp.com-20130307060259-zu4ufsgasgvxkq8w --- .../account_analytic_analysis.py | 16 +++++++++------- .../test/account_analytic_analysis.yml | 14 +++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 5296c5a8261..6b86096e2f1 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -35,11 +35,11 @@ _logger = logging.getLogger(__name__) class account_analytic_invoice_line(osv.osv): _name = "account.analytic.invoice.line" - def _amount_line(self, cr, uid, ids, prop, unknow_none, unknow_dict): + def _amount_line(self, cr, uid, ids, prop, unknow_none, unknow_dict, context=None): res = {} tax_obj = self.pool.get('account.tax') cur_obj = self.pool.get('res.currency') - for line in self.browse(cr, uid, ids): + for line in self.browse(cr, uid, ids, context=context): taxes = tax_obj.compute_all(cr, uid, line.tax_ids, line.price_unit, line.quantity, product=line.product_id, partner=line.analytic_account_id.partner_id) res[line.id] = taxes['total'] if line.analytic_account_id: @@ -695,9 +695,11 @@ class account_analytic_account(osv.osv): res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context) analytic_account = self.browse(cr, uid, template_id, context=context) invoice_line_ids = [] - #TO FIX: do not use write here. need another solution to unlink - self.write(cr, uid, analytic_account.id, {'invoice_line_ids': []}) - + if ids: + acc = self.browse(cr, uid, ids, context=context)[0] + if acc.invoice_line_ids: + for l in acc.invoice_line_ids: + self.write(cr, uid, analytic_account.id, {'invoice_line_ids': [(2, l.id)]}) template = self.browse(cr, uid, template_id, context=context) for x in template.invoice_line_ids: line = x.read([],load='_classic_write')[0] @@ -781,7 +783,7 @@ class account_analytic_account(osv.osv): inv_line_id = [] obj_invoice_line = self.pool.get('account.invoice.line') obj_contract_line = self.pool.get('account.analytic.invoice.line') - for line in obj_contract_line.browse(cr, uid, contract_line_ids): + for line in obj_contract_line.browse(cr, uid, contract_line_ids, context=context): invoice_line_vals = { 'name': line.name, 'origin': line.analytic_account_id.name, @@ -834,7 +836,7 @@ class account_analytic_account(osv.osv): obj_invoice_line = self.pool.get('account.invoice.line') contract_ids = self.search(cr, uid, [('next_date','=', current_date), ('state','=', 'open'), ('recurring_invoices','=', True)]) if contract_ids: - for contract in self.browse(cr, uid, contract_ids): + for contract in self.browse(cr, uid, contract_ids, context=context): contract_line_ids = self.pool.get('account.analytic.invoice.line').search(cr, uid, [('analytic_account_id', '=', contract.id)], context=context) if contract_line_ids: invoice_id = self._prepare_invoice(cr, uid, contract, context=context) diff --git a/addons/account_analytic_analysis/test/account_analytic_analysis.yml b/addons/account_analytic_analysis/test/account_analytic_analysis.yml index ce5d95deb7e..9ead323c8dc 100644 --- a/addons/account_analytic_analysis/test/account_analytic_analysis.yml +++ b/addons/account_analytic_analysis/test/account_analytic_analysis.yml @@ -34,13 +34,13 @@ } contract_id = self.create(cr, uid, data) assert contract_id, "contract has not been created correctly" - - self._amount_all(cr, uid, [contract_id], '', {}, {}) - template = self.browse(cr, uid, ref('account_analytic_account_0')) - res = self.on_change_template(cr, uid, [contract_id], template.id, {}) - self.write(cr, uid, [contract_id], res['value']) + context = None + self._amount_all(cr, uid, [contract_id], '', {}, context=context) + template = self.browse(cr, uid, ref('account_analytic_account_0'),context=context) + res = self.on_change_template(cr, uid, [contract_id], template.id, context=context) + self.write(cr, uid, [contract_id], res['value'], context=context) line_obj = self.pool.get('account.analytic.invoice.line') - contract = self.browse(cr, uid, contract_id) + contract = self.browse(cr, uid, contract_id, context=context) assert template.partner_id.id == contract.partner_id.id or res['value']['partner_id'], "Customer of contract is not match with Contract Template" assert template.company_id.id == contract.company_id.id, "Company of contract is not match with Contract Template" assert template.date_start == contract.date_start, "Start Date of contract is not match with Contract Template" @@ -49,7 +49,7 @@ invoice_obj = self.pool.get('account.invoice') contract_invoice = invoice_obj.search(cr, uid, [('origin','=','Agrement of the loan for current month')]) template_invoice = invoice_obj.search(cr, uid, [('origin','=','Loan EMI Agrement')]) - inv = invoice_obj.browse(cr ,uid, contract_invoice)[0] + inv = invoice_obj.browse(cr ,uid, contract_invoice, context=context)[0] result = invoice_obj._amount_all(cr, uid, contract_invoice, '', {}, {}) assert inv.state == 'draft', 'Contract created invoice not in draft state.' assert inv.amount_untaxed == contract.amount_untaxed, "Contract Invoice's Total tax excluded is not same as contract"