From 7d69f01477a2d5dd93974737978d7af11cfc8b6d Mon Sep 17 00:00:00 2001 From: Arnold Moyaux <arm@odoo.com> Date: Wed, 6 Nov 2019 13:55:18 +0000 Subject: [PATCH] [FIX] purchase_requistion: call for tender zero lines Usecase to reproduce: - Create a purchase requistion with type Call For Tender - Update a line and set the price to zero. UserError 'You cannot confirm the blanket order without price.' raised. It happens because the write don't process the same check than create and don't check if the purchase_requistion is a blanket order or a call for tender. It also doens't check the current state of the purchase_requisition. closes odoo/odoo#39883 Task: 2120211 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com> --- addons/purchase_requisition/models/purchase_requisition.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py index d091618fd1c1..a73107288003 100644 --- a/addons/purchase_requisition/models/purchase_requisition.py +++ b/addons/purchase_requisition/models/purchase_requisition.py @@ -224,7 +224,9 @@ class PurchaseRequisitionLine(models.Model): def write(self, vals): res = super(PurchaseRequisitionLine, self).write(vals) if 'price_unit' in vals: - if vals['price_unit'] <= 0.0: + if vals['price_unit'] <= 0.0 and any( + requisition.state not in ['draft', 'cancel', 'done'] and + requisition.is_quantity_copy == 'none' for requisition in self.mapped('requisition_id')): raise UserError(_('You cannot confirm the blanket order without price.')) # If the price is updated, we have to update the related SupplierInfo self.supplier_info_ids.write({'price': vals['price_unit']}) -- GitLab