From 24556120e78e4d38f762c7e8dfc083d231cebcb4 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Tue, 7 Jul 2015 14:40:12 +0200 Subject: [PATCH] [FIX] purchase: apply appropriate fiscal position when PO created automatically When a PO is created automatically from a procurement, the fiscal position is not chosen correctly. We need to choose the fiscal position in the same way if the PO is created manually or automatically. Follows commit 1062905acbb8c1dac004005b9bd7c43592a45e74 Fixes #3863 opw-643916 --- addons/purchase/purchase.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 1ca44c91072..bd445dd94a5 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1336,6 +1336,7 @@ class procurement_order(osv.osv): pricelist_obj = self.pool.get('product.pricelist') prod_obj = self.pool.get('product.product') acc_pos_obj = self.pool.get('account.fiscal.position') + po_obj = self.pool.get('purchase.order') seller_qty = procurement.product_id.seller_qty if procurement.location_id.usage != 'customer' else 0.0 pricelist_id = partner.property_product_pricelist_purchase.id @@ -1350,7 +1351,12 @@ class procurement_order(osv.osv): new_context.update({'lang': partner.lang, 'partner_id': partner.id}) product = prod_obj.browse(cr, uid, procurement.product_id.id, context=new_context) taxes_ids = procurement.product_id.supplier_taxes_id - taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids) + # It is necessary to have the appropriate fiscal position to get the right tax mapping + fiscal_position = False + fiscal_position_id = po_obj.onchange_partner_id(cr, uid, None, partner.id, context=context)['value']['fiscal_position'] + if fiscal_position_id: + fiscal_position = acc_pos_obj.browse(cr, uid, fiscal_position_id, context=context) + taxes = acc_pos_obj.map_tax(cr, uid, fiscal_position, taxes_ids) name = product.display_name if product.description_purchase: name += '\n' + product.description_purchase @@ -1462,7 +1468,7 @@ class procurement_order(osv.osv): 'currency_id': partner.property_product_pricelist_purchase and partner.property_product_pricelist_purchase.currency_id.id or procurement.company_id.currency_id.id, 'date_order': purchase_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT), 'company_id': procurement.company_id.id, - 'fiscal_position': partner.property_account_position and partner.property_account_position.id or False, + 'fiscal_position': po_obj.onchange_partner_id(cr, uid, None, partner.id, context=context)['value']['fiscal_position'], 'payment_term_id': partner.property_supplier_payment_term.id or False, 'dest_address_id': procurement.partner_dest_id.id, }