From b3ac2d2f485ad2d6fb71b8816c324539af14e688 Mon Sep 17 00:00:00 2001 From: William Henroin Date: Mon, 30 Oct 2017 11:27:21 +0100 Subject: [PATCH] [REF] purchase_requisition: new stages workflow for blanket orders The stages workflow of purchase tender is not suitable for blanket order. the steps bid selection is use only with purchase tender. Now : PT : draft -> confirmed -> bid selection -> closed BO : draft -> ongoing -> closed --- .../models/purchase_requisition.py | 23 +++++++++++++++---- .../views/purchase_requisition_views.xml | 21 +++++++++-------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py index dffda14ab6e..3de53910d9d 100644 --- a/addons/purchase_requisition/models/purchase_requisition.py +++ b/addons/purchase_requisition/models/purchase_requisition.py @@ -6,6 +6,16 @@ from odoo.addons import decimal_precision as dp from odoo.exceptions import UserError +PURCHASE_REQUISITION_STATES = [ + ('draft', 'Draft'), + ('ongoing', 'Ongoing'), + ('in_progress', 'Confirmed'), + ('open', 'Bid Selection'), + ('done', 'Closed'), + ('cancel', 'Cancelled') +] + + class PurchaseRequisitionType(models.Model): _name = "purchase.requisition.type" _description = "Purchase Agreement Type" @@ -59,15 +69,18 @@ class PurchaseRequisition(models.Model): purchase_ids = fields.One2many('purchase.order', 'requisition_id', string='Purchase Orders', states={'done': [('readonly', True)]}) line_ids = fields.One2many('purchase.requisition.line', 'requisition_id', string='Products to Purchase', states={'done': [('readonly', True)]}, copy=True) warehouse_id = fields.Many2one('stock.warehouse', string='Warehouse') - state = fields.Selection([('draft', 'Draft'), ('in_progress', 'Confirmed'), - ('open', 'Bid Selection'), ('done', 'Done'), - ('cancel', 'Cancelled')], + state = fields.Selection(PURCHASE_REQUISITION_STATES, 'Status', track_visibility='onchange', required=True, copy=False, default='draft') + state_blanket_order = fields.Selection(PURCHASE_REQUISITION_STATES, compute='_set_state') 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) + @api.depends('state') + def _set_state(self): + self.state_blanket_order = self.state + @api.model def create(self, vals): rec = super(PurchaseRequisition, self).create(vals) @@ -123,7 +136,9 @@ class PurchaseRequisition(models.Model): if requisition_line.product_qty <= 0.0: raise UserError(_('You cannot confirm the blanket order without quantity.')) requisition_line.create_supplier_info() - self.write({'state': 'in_progress'}) + self.write({'state': 'ongoing'}) + else: + self.write({'state': 'in_progress'}) @api.multi def action_open(self): diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml index e1f17b6dc5b..220e4e22998 100644 --- a/addons/purchase_requisition/views/purchase_requisition_views.xml +++ b/addons/purchase_requisition/views/purchase_requisition_views.xml @@ -80,7 +80,7 @@ + domain="[('state', 'in', ('in_progress', 'open', 'ongoing')), ('vendor_id', 'in', (partner_id, False))]"/> @@ -139,13 +139,14 @@ attrs="{'invisible': [('state', '!=', 'open')]}"/>