diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py
index 6325863fd26..e327798329d 100644
--- a/addons/purchase/models/purchase.py
+++ b/addons/purchase/models/purchase.py
@@ -236,7 +236,8 @@ class PurchaseOrder(models.Model):
else:
self.fiscal_position_id = self.env['account.fiscal.position'].with_context(company_id=self.company_id.id).get_fiscal_position(self.partner_id.id)
self.payment_term_id = self.partner_id.property_supplier_payment_term_id.id
- self.currency_id = self.partner_id.property_purchase_currency_id.id or self.env.user.company_id.currency_id.id
+ if not self.currency_id:
+ self.currency_id = self.partner_id.property_purchase_currency_id.id or self.env.user.company_id.currency_id.id
return {}
@api.onchange('fiscal_position_id')
diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py
index 6072ee11411..03571f67dd5 100644
--- a/addons/purchase_requisition/models/purchase_requisition.py
+++ b/addons/purchase_requisition/models/purchase_requisition.py
@@ -76,6 +76,8 @@ class PurchaseRequisition(models.Model):
account_analytic_id = fields.Many2one('account.analytic.account', 'Analytic Account')
picking_type_id = fields.Many2one('stock.picking.type', 'Operation Type', required=True, default=_get_picking_in)
is_quantity_copy = fields.Selection(related='type_id.quantity_copy', readonly=True)
+ currency_id = fields.Many2one('res.currency', 'Currency', required=True,
+ default=lambda self: self.env.user.company_id.currency_id.id)
@api.depends('state')
def _set_state(self):
@@ -184,7 +186,7 @@ class PurchaseRequisition(models.Model):
class SupplierInfo(models.Model):
_inherit = "product.supplierinfo"
_order = 'sequence, purchase_requisition_id desc, min_qty desc, price'
-
+
purchase_requisition_id = fields.Many2one('purchase.requisition', related='purchase_requisition_line_id.requisition_id', string='Blanket order')
purchase_requisition_line_id = fields.Many2one('purchase.requisition.line')
@@ -300,7 +302,6 @@ class PurchaseOrder(models.Model):
else:
partner = requisition.vendor_id
payment_term = partner.property_supplier_payment_term_id
- currency = partner.property_purchase_currency_id or requisition.company_id.currency_id
FiscalPosition = self.env['account.fiscal.position']
fpos = FiscalPosition.get_fiscal_position(partner.id)
@@ -310,7 +311,7 @@ class PurchaseOrder(models.Model):
self.fiscal_position_id = fpos.id
self.payment_term_id = payment_term.id,
self.company_id = requisition.company_id.id
- self.currency_id = currency.id
+ self.currency_id = requisition.currency_id.id
self.origin = requisition.name
self.partner_ref = requisition.name # to control vendor bill based on agreement reference
self.notes = requisition.description
@@ -349,10 +350,6 @@ class PurchaseOrder(models.Model):
if requisition.type_id.quantity_copy != 'copy':
product_qty = 0
- # Compute price_unit in appropriate currency
- if requisition.company_id.currency_id != currency:
- price_unit = requisition.company_id.currency_id.compute(price_unit, currency)
-
# Create PO line
order_line_values = line._prepare_purchase_order_line(
name=name, product_qty=product_qty, price_unit=price_unit,
@@ -434,4 +431,6 @@ class ProcurementRule(models.Model):
res = super(ProcurementRule, self)._prepare_purchase_order(product_id, product_qty, product_uom, origin, values, partner)
res['partner_ref'] = values['supplier'].purchase_requisition_id.name
res['requisition_id'] = values['supplier'].purchase_requisition_id.id
+ if values['supplier'].purchase_requisition_id.currency_id:
+ res['currency_id'] = values['supplier'].purchase_requisition_id.currency_id.id
return res
diff --git a/addons/purchase_requisition/tests/test_purchase_requisition.py b/addons/purchase_requisition/tests/test_purchase_requisition.py
index 54530a96fc0..dfa381b5caa 100644
--- a/addons/purchase_requisition/tests/test_purchase_requisition.py
+++ b/addons/purchase_requisition/tests/test_purchase_requisition.py
@@ -15,6 +15,7 @@ class TestPurchaseRequisition(common.TransactionCase):
self.product_13_id = self.ref('product.product_product_13')
self.res_partner_1_id = self.ref('base.res_partner_1')
self.res_company_id = self.ref('base.main_company')
+ self.env.user.company_id.currency_id = self.env.ref("base.USD").id
self.ResUser = self.env['res.users']
# Create a user as 'Purchase Requisition Manager'
@@ -174,6 +175,7 @@ class TestPurchaseRequisition(common.TransactionCase):
'line_ids': [line1],
'type_id': requisition_type.id,
'vendor_id': vendor1.id,
+ 'currency_id': self.env.ref("base.USD").id,
})
requisition_blanket.action_in_progress()
diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml
index a591dd9f1ce..907dca3fe04 100644
--- a/addons/purchase_requisition/views/purchase_requisition_views.xml
+++ b/addons/purchase_requisition/views/purchase_requisition_views.xml
@@ -172,6 +172,7 @@
+