From 6a56d194e0e0751dba83bdac707ef110c3f5bef3 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Sat, 16 Mar 2019 14:14:17 -0700 Subject: [PATCH] FIX `sale_planner` Carrier testing/plannning in 12.0 --- sale_planner/models/delivery.py | 6 +++--- sale_planner/wizard/order_planner.py | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sale_planner/models/delivery.py b/sale_planner/models/delivery.py index 17a5eb25..08c0a8d5 100644 --- a/sale_planner/models/delivery.py +++ b/sale_planner/models/delivery.py @@ -92,11 +92,11 @@ class DeliveryCarrier(models.Model): # date calculations needs an extra day effective_transit_days = transit_days + 1 - last_day = self.delivery_calendar_id.plan_days(effective_transit_days, date_planned, compute_leaves=True) + last_day = self.delivery_calendar_id.plan_days_end(effective_transit_days, date_planned, compute_leaves=True) if not last_day: return self._calculate_date_delivered_naive(date_planned, transit_days) - return fields.Datetime.to_string(last_day) + return last_day def _calculate_date_delivered_naive(self, date_planned, transit_days): - return fields.Datetime.to_string(date_planned + timedelta(days=transit_days)) + return date_planned + timedelta(days=transit_days) diff --git a/sale_planner/wizard/order_planner.py b/sale_planner/wizard/order_planner.py index db9d2fda..e02d8b90 100644 --- a/sale_planner/wizard/order_planner.py +++ b/sale_planner/wizard/order_planner.py @@ -134,6 +134,7 @@ class FakeSaleOrder(): self.team_id = None self.project_id = None self.amount_total = 0.0 + self.date_order = fields.Date.today() for attr, value in kwargs.items(): setattr(self, attr, value) @@ -143,6 +144,8 @@ class FakeSaleOrder(): """ yield self + def _compute_amount_total_without_delivery(self): + return self.amount_total def distance(lat_1, lon_1, lat_2, lon_2): R = 6373.0 @@ -251,6 +254,8 @@ class SaleOrderMakePlan(models.TransientModel): base_option['carrier_id'] = order.carrier_id.id if plan_shipping and not self.env.context.get('skip_plan_shipping'): + if base_option.get('date_planned'): + fake_order.date_order = base_option['date_planned'] options = self.generate_shipping_options(base_option, fake_order) else: options = [base_option] @@ -724,16 +729,11 @@ class SaleOrderMakePlan(models.TransientModel): _logger.warn('returning None because carrier: ' + str(carrier)) return None else: - carrier = carrier.verify_carrier(order_fake.partner_shipping_id) + carrier = carrier.available_carriers(order_fake.partner_shipping_id) if not carrier: return None - #price_unit = carrier.get_price_available(order) - # ^^ ends up calling carrier.get_price_from_picking(order_total, weight, volume, quantity) - order_total = order_fake.amount_total - weight = sum((line.product_id.weight or 0.0) * line.product_uom_qty for line in order_fake.order_line if line.product_id.type == 'product') - volume = sum((line.product_id.volume or 0.0) * line.product_uom_qty for line in order_fake.order_line if line.product_id.type == 'product') - quantity = sum((line.product_uom_qty or 0.0) for line in order_fake.order_line if line.product_id.type == 'product') - price_unit = carrier.get_price_from_picking(order_total, weight, volume, quantity) + res = carrier.rate_shipment(order_fake) + price_unit = res['price'] if order_fake.company_id.currency_id.id != order_fake.pricelist_id.currency_id.id: price_unit = order_fake.company_id.currency_id.with_context(date=order_fake.date_order).compute(price_unit, order_fake.pricelist_id.currency_id)