From d7f5a1b25e4c14af49cccd65ad3b6e0553a77faa Mon Sep 17 00:00:00 2001 From: len-odoo Date: Mon, 25 Jun 2018 15:02:12 +0200 Subject: [PATCH] [FIX] delivery, sale, sale_order_dates: ignore delivery line in commitment date computation The commitment date is computed using every line from the sale order. When the picking policy is set to direct, it takes the earliest date among the sums of the order date and lead time. However when the delivery is set, is adds a line with an order date of 'now' and no lead time. This date thus necessarily becomes the commitment date, bypassing what was intended by setting a lead times on products. We simply ignore delivery lines in this computation. opw 1855646 --- addons/delivery/models/sale_order.py | 4 ++++ addons/sale/models/sale.py | 4 ++++ addons/sale_order_dates/models/sale_order.py | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index e2bcd1c2c1d..ec3bb082fc5 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -117,3 +117,7 @@ class SaleOrderLine(models.Model): if not line.product_id or not line.product_uom or not line.product_uom_qty: return 0.0 line.product_qty = line.product_uom._compute_quantity(line.product_uom_qty, line.product_id.uom_id) + + def _is_delivery(self): + self.ensure_one() + return self.is_delivery diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 1b9c1185390..e83adc49e5c 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -1231,3 +1231,7 @@ class SaleOrderLine(models.Model): so_line.write({'qty_delivered': qty}) return True + + def _is_delivery(self): + self.ensure_one() + return False diff --git a/addons/sale_order_dates/models/sale_order.py b/addons/sale_order_dates/models/sale_order.py index 0a01683040d..d206e4c8f3d 100644 --- a/addons/sale_order_dates/models/sale_order.py +++ b/addons/sale_order_dates/models/sale_order.py @@ -33,7 +33,7 @@ class SaleOrder(models.Model): for order in self: dates_list = [] order_datetime = fields.Datetime.from_string(order.date_order) - for line in order.order_line.filtered(lambda x: x.state != 'cancel'): + for line in order.order_line.filtered(lambda x: x.state != 'cancel' and not x._is_delivery()): dt = order_datetime + timedelta(days=line.customer_lead or 0.0) dates_list.append(dt) if dates_list: