diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 9cb4314ddeb..43f09bebc49 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -172,7 +172,7 @@ - + @@ -280,7 +280,7 @@ - + diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 563a1d1331b..269a4a0c0f4 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1290,6 +1290,20 @@ class account_invoice_line(osv.osv): 'price_unit': _price_unit_default, } + def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + if context is None: + context = {} + res = super(account_invoice_line,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) + if context.get('type', False): + doc = etree.XML(res['arch']) + for node in doc.xpath("//field[@name='product_id']"): + if context['type'] in ('in_invoice', 'in_refund'): + node.set('domain', "[('purchase_ok', '=', True)]") + else: + node.set('domain', "[('sale_ok', '=', True)]") + res['arch'] = etree.tostring(doc) + return res + def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None): if context is None: context = {}