diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 80e32bcfa42..7ffc65d93f9 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -301,7 +301,8 @@ class purchase_order(osv.osv): raise osv.except_osv(_('Error !'), _('There is no expense account defined for this product: "%s" (id:%d)') % (ol.product_id.name, ol.product_id.id,)) else: a = self.pool.get('ir.property').get(cr, uid, 'property_account_expense_categ', 'product.category') - a = self.pool.get('account.fiscal.position').map_account(cr, uid, o.partner_id, a) + fpos = o.fiscal_position or False + a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, a) il.append(self.inv_line_create(a,ol)) a = o.partner_id.property_account_payable.id @@ -445,7 +446,7 @@ class purchase_order_line(osv.osv): return super(purchase_order_line, self).copy(cr, uid, id, default, context) def product_id_change(self, cr, uid, ids, pricelist, product, qty, uom, - partner_id, date_order=False): + partner_id, date_order=False, fiscal_position=False): if not pricelist: raise osv.except_osv(_('No Pricelist !'), _('You have to select a pricelist in the purchase form !\nPlease set one before choosing a product.')) if not product: @@ -488,7 +489,8 @@ class purchase_order_line(osv.osv): partner = self.pool.get('res.partner').browse(cr, uid, partner_id) taxes = self.pool.get('account.tax').browse(cr, uid,map(lambda x: x.id, prod.supplier_taxes_id)) - res['value']['taxes_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner, taxes) + fpos = fiscal_position and self.pool.get('account.fiscal.position').browse(cr, uid, fiscal_position) or False + res['value']['taxes_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, taxes) res2 = self.pool.get('product.uom').read(cr, uid, [uom], ['category_id']) res3 = prod.uom_id.category_id.id diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index c0398b8bd5a..fb7e08a37f0 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -172,7 +172,7 @@
- + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 165979976f4..58852e00d8b 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -785,7 +785,8 @@ class sale_order_line(osv.osv): if uosqty: pu = round(line.price_unit * line.product_uom_qty / uosqty, int(config['price_accuracy'])) - a = self.pool.get('account.fiscal.position').map_account(cr, uid, line.order_id.partner_id, a) + fpos = line.order_id.fiscal_position or False + a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, a) inv_id = self.pool.get('account.invoice.line').create(cr, uid, { 'name': line.name, 'origin':line.order_id.name, @@ -849,7 +850,7 @@ class sale_order_line(osv.osv): def product_id_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, - lang=False, update_tax=True, date_order=False, packaging=False): + lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False): warning={} product_uom_obj = self.pool.get('product.uom') partner_obj = self.pool.get('res.partner') @@ -905,11 +906,11 @@ class sale_order_line(osv.osv): result .update({'type': product_obj.procure_method}) if product_obj.description_sale: result['notes'] = product_obj.description_sale - + fpos = fiscal_position and self.pool.get('account.fiscal.position').browse(cr, uid, fiscal_position) or False if update_tax: #The quantity only have changed result['delay'] = (product_obj.sale_delay or 0.0) partner = partner_obj.browse(cr, uid, partner_id) - result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner, product_obj.taxes_id) + result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, product_obj.taxes_id) result['name'] = product_obj.partner_ref domain = {} diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 5ef60c4e2ad..72511c2d1a5 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -118,19 +118,19 @@