[IMP]account_analytic_analysis: Improve onchange template and set context in added code

bzr revid: dbr@tinyerp.com-20130307060259-zu4ufsgasgvxkq8w
This commit is contained in:
DBR (OpenERP) 2013-03-07 11:32:59 +05:30
parent b4e9d6679b
commit 5303cef954
2 changed files with 16 additions and 14 deletions

View File

@ -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)

View File

@ -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"