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 @@