diff --git a/addons/purchase/company.py b/addons/purchase/company.py
index c0f15294f03..eea108573b9 100644
--- a/addons/purchase/company.py
+++ b/addons/purchase/company.py
@@ -1,13 +1,19 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from openerp import api, fields, models, _
+from openerp import fields, models
class company(models.Model):
_inherit = 'res.company'
- po_lead = fields.Float(string='Purchase Lead Time', required=True,
- help="Margin of error for vendor lead times. When the system "\
- "generates Purchase Orders for procuring products, "\
- "they will be scheduled that many days earlier "\
+
+ po_lead = fields.Float(string='Purchase Lead Time', required=True,\
+ help="Margin of error for vendor lead times. When the system "
+ "generates Purchase Orders for procuring products, "
+ "they will be scheduled that many days earlier "
"to cope with unexpected vendor delays.", default=1.0)
+ po_double_validation = fields.Selection([
+ ('one_step', 'Confirm purchase orders in one step'),
+ ('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")
diff --git a/addons/purchase/company_view.xml b/addons/purchase/company_view.xml
index e35bf1c24b5..5a8a112ba28 100644
--- a/addons/purchase/company_view.xml
+++ b/addons/purchase/company_view.xml
@@ -10,6 +10,7 @@
+
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 48be52f429b..be48ce543df 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -145,6 +145,7 @@ class PurchaseOrder(models.Model):
product_id = fields.Many2one('product.product', related='order_line.product_id', string='Product')
create_uid = fields.Many2one('res.users', 'Responsible')
company_id = fields.Many2one('res.company', 'Company', required=True, select=1, states=READONLY_STATES, default=lambda self: self.env.user.company_id.id)
+ po_double_validation = fields.Selection(related='company_id.po_double_validation', store=False, readonly=True)
picking_type_id = fields.Many2one('stock.picking.type', 'Deliver To', states=READONLY_STATES, required=True, default=_default_picking_type,\
help="This will determine picking type of incoming shipment")
@@ -242,7 +243,13 @@ class PurchaseOrder(models.Model):
@api.multi
def button_confirm(self):
- return self.button_approve()
+ # Deal with double validation process
+ if 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()
@api.multi
def button_cancel(self):
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index ec497ca41a6..cf72b1e2c60 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -143,14 +143,18 @@
-
+
-
+
+
@@ -183,6 +187,7 @@
+