From 36ee30f34881372be5e0bb24e82a2cc084a7229b Mon Sep 17 00:00:00 2001 From: pso Date: Fri, 10 Dec 2010 15:19:58 +0530 Subject: [PATCH 1/2] [FIX] account: Improved product onchange in invoice line lp bug: https://launchpad.net/bugs/539539 fixed bzr revid: pso@tinyerp.com-20101210094958-vphz0yrgcuuufiln --- addons/account/invoice.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 3f675f90a07..859550a84b2 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1399,18 +1399,25 @@ class account_invoice_line(osv.osv): a = fpos_obj.map_account(cr, uid, fpos, a) if a: result['account_id'] = a - + + tax_ids = self.pool.get('account.tax').search(cr, uid, [('company_id', '=', company_id)]) if type in ('out_invoice', 'out_refund'): - taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) - tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) + def_sale_taxes = map(lambda x: x.id, res.taxes_id) + sale_tax_list = [tax for tax in tax_ids if tax in def_sale_taxes] + sale_tax_id = self.pool.get('account.tax').browse(cr, uid, sale_tax_list) + sale_taxes = sale_tax_id and sale_tax_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) + tax_id = fpos_obj.map_tax(cr, uid, fpos, sale_taxes) else: - taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) - tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) + def_pur_taxes = map(lambda x: x.id, res.supplier_taxes_id) + pur_tax_list = [tax for tax in tax_ids if tax in def_pur_taxes] + pur_tax_id = self.pool.get('account.tax').browse(cr, uid, pur_tax_list) + pur_taxes = pur_tax_id and pur_tax_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) + tax_id = fpos_obj.map_tax(cr, uid, fpos, pur_taxes) + if type in ('in_invoice', 'in_refund'): result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} ) else: result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id}) - # if not name: result['name'] = res.partner_ref @@ -1420,7 +1427,7 @@ class account_invoice_line(osv.osv): res2 = res.uom_id.category_id.id if res2: domain = {'uos_id':[('category_id','=',res2 )]} - + result['categ_id'] = res.categ_id.id res_final = {'value':result, 'domain':domain} From bf2bebd1544f1f996cecd4af979e8da6a868c8f5 Mon Sep 17 00:00:00 2001 From: pso Date: Fri, 10 Dec 2010 16:53:05 +0530 Subject: [PATCH 2/2] [IMP] account: Improved var name bzr revid: pso@tinyerp.com-20101210112305-yom9q4c86xa3815r --- addons/account/invoice.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 859550a84b2..e4fad3faa4a 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1402,17 +1402,17 @@ class account_invoice_line(osv.osv): tax_ids = self.pool.get('account.tax').search(cr, uid, [('company_id', '=', company_id)]) if type in ('out_invoice', 'out_refund'): - def_sale_taxes = map(lambda x: x.id, res.taxes_id) - sale_tax_list = [tax for tax in tax_ids if tax in def_sale_taxes] - sale_tax_id = self.pool.get('account.tax').browse(cr, uid, sale_tax_list) - sale_taxes = sale_tax_id and sale_tax_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) - tax_id = fpos_obj.map_tax(cr, uid, fpos, sale_taxes) + sale_taxes_def = map(lambda x: x.id, res.taxes_id) + sale_tax_ids = [tax for tax in tax_ids if tax in sale_taxes_def] + sale_taxes = self.pool.get('account.tax').browse(cr, uid, sale_tax_ids) + sale_taxes_all = sale_taxes and sale_taxes or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) + tax_id = fpos_obj.map_tax(cr, uid, fpos, sale_taxes_all) else: - def_pur_taxes = map(lambda x: x.id, res.supplier_taxes_id) - pur_tax_list = [tax for tax in tax_ids if tax in def_pur_taxes] - pur_tax_id = self.pool.get('account.tax').browse(cr, uid, pur_tax_list) - pur_taxes = pur_tax_id and pur_tax_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) - tax_id = fpos_obj.map_tax(cr, uid, fpos, pur_taxes) + pur_taxes_def = map(lambda x: x.id, res.supplier_taxes_id) + pur_tax_ids = [tax for tax in tax_ids if tax in pur_taxes_def] + pur_taxes = self.pool.get('account.tax').browse(cr, uid, pur_tax_ids) + pur_taxes_all = pur_taxes and pur_taxes or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) + tax_id = fpos_obj.map_tax(cr, uid, fpos, pur_taxes_all) if type in ('in_invoice', 'in_refund'): result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} )