diff --git a/addons/purchase/company.py b/addons/purchase/company.py
index eea108573b9..46827a93708 100644
--- a/addons/purchase/company.py
+++ b/addons/purchase/company.py
@@ -17,3 +17,5 @@ class company(models.Model):
('two_step', 'Get 2 levels of approvals to confirm a purchase order')
], string="Levels of Approvals", default='one_step',\
help="Provide a double validation mechanism for purchases")
+ po_double_validation_amount = fields.Monetary(string='Double validation amount', default=5000,\
+ help="Minimum amount for which a double validation is required")
diff --git a/addons/purchase/company_view.xml b/addons/purchase/company_view.xml
index 5a8a112ba28..e57d15acb84 100644
--- a/addons/purchase/company_view.xml
+++ b/addons/purchase/company_view.xml
@@ -11,6 +11,7 @@
+
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 14fd845f054..2985406e5c2 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -280,12 +280,14 @@ class PurchaseOrder(models.Model):
line.product_id.write(vals)
# Deal with double validation process
- if self.user_has_groups('purchase.group_purchase_manager'):
+ if self.po_double_validation == 'one_step'\
+ or (self.po_double_validation == 'two_step'\
+ and self.amount_total < self.env.user.company_id.currency_id.compute(self.company_id.po_double_validation_amount, self.currency_id))\
+ or self.user_has_groups('purchase.group_purchase_manager'):
return self.button_approve()
- elif self.po_double_validation == 'two_step':
- self.write({'state': 'to approve'})
else:
- return self.button_approve()
+ self.write({'state': 'to approve'})
+ return {}
@api.multi
def button_cancel(self):
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index cf72b1e2c60..a24ad02cbc5 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -151,10 +151,7 @@
-
-
+