From ee2b9fae3519c2494f34dacf15d0a3b5bd8fbd06 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Tue, 31 Oct 2017 16:37:14 +0100 Subject: [PATCH] [FIX] sale_stock: launch procurement rule and locked If the user chose to "lock confirmed orders" in the sales's settings, the procurements where not runned correctly and the associated delivery orders were not created. This issue is caused by the fact that `_action_launch_procurement_rule` was done on done sale order line. We refactore the method so that we call this method always when the sale order line are in `sale` state. Fixes #20599 --- addons/sale/models/sale.py | 11 ++++++++--- addons/sale_stock/models/sale_order.py | 5 ++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 24b35183f68..e05b4db37cc 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -515,7 +515,7 @@ class SaleOrder(models.Model): self.write({'state': 'sale'}) @api.multi - def action_confirm(self): + def _action_confirm(self): for order in self.filtered(lambda order: order.partner_id not in order.message_partner_ids): order.message_subscribe([order.partner_id.id]) self.write({ @@ -524,8 +524,6 @@ class SaleOrder(models.Model): }) if self.env.context.get('send_email'): self.force_quotation_send() - if self.env['ir.config_parameter'].sudo().get_param('sale.auto_done_setting'): - self.action_done() # create an analytic account if at least an expense product if any([expense_policy != 'no' for expense_policy in self.order_line.mapped('product_id.expense_policy')]): @@ -534,6 +532,13 @@ class SaleOrder(models.Model): return True + @api.multi + def action_confirm(self): + self._action_confirm() + if self.env['ir.config_parameter'].sudo().get_param('sale.auto_done_setting'): + self.action_done() + return True + @api.multi def _create_analytic_account(self, prefix=None): for order in self: diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index 38a01917cf4..e61adb554b1 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -34,11 +34,10 @@ class SaleOrder(models.Model): procurement_group_id = fields.Many2one('procurement.group', 'Procurement Group', copy=False) @api.multi - def action_confirm(self): - result = super(SaleOrder, self).action_confirm() + def _action_confirm(self): + super(SaleOrder, self)._action_confirm() for order in self: order.order_line._action_launch_procurement_rule() - return result @api.depends('picking_ids') def _compute_picking_ids(self):