mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
FIX sale_planner Carrier testing/plannning in 12.0
This commit is contained in:
@@ -92,11 +92,11 @@ class DeliveryCarrier(models.Model):
|
|||||||
# date calculations needs an extra day
|
# date calculations needs an extra day
|
||||||
effective_transit_days = transit_days + 1
|
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:
|
if not last_day:
|
||||||
return self._calculate_date_delivered_naive(date_planned, transit_days)
|
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):
|
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)
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ class FakeSaleOrder():
|
|||||||
self.team_id = None
|
self.team_id = None
|
||||||
self.project_id = None
|
self.project_id = None
|
||||||
self.amount_total = 0.0
|
self.amount_total = 0.0
|
||||||
|
self.date_order = fields.Date.today()
|
||||||
for attr, value in kwargs.items():
|
for attr, value in kwargs.items():
|
||||||
setattr(self, attr, value)
|
setattr(self, attr, value)
|
||||||
|
|
||||||
@@ -143,6 +144,8 @@ class FakeSaleOrder():
|
|||||||
"""
|
"""
|
||||||
yield self
|
yield self
|
||||||
|
|
||||||
|
def _compute_amount_total_without_delivery(self):
|
||||||
|
return self.amount_total
|
||||||
|
|
||||||
def distance(lat_1, lon_1, lat_2, lon_2):
|
def distance(lat_1, lon_1, lat_2, lon_2):
|
||||||
R = 6373.0
|
R = 6373.0
|
||||||
@@ -251,6 +254,8 @@ class SaleOrderMakePlan(models.TransientModel):
|
|||||||
base_option['carrier_id'] = order.carrier_id.id
|
base_option['carrier_id'] = order.carrier_id.id
|
||||||
|
|
||||||
if plan_shipping and not self.env.context.get('skip_plan_shipping'):
|
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)
|
options = self.generate_shipping_options(base_option, fake_order)
|
||||||
else:
|
else:
|
||||||
options = [base_option]
|
options = [base_option]
|
||||||
@@ -724,16 +729,11 @@ class SaleOrderMakePlan(models.TransientModel):
|
|||||||
_logger.warn('returning None because carrier: ' + str(carrier))
|
_logger.warn('returning None because carrier: ' + str(carrier))
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
carrier = carrier.verify_carrier(order_fake.partner_shipping_id)
|
carrier = carrier.available_carriers(order_fake.partner_shipping_id)
|
||||||
if not carrier:
|
if not carrier:
|
||||||
return None
|
return None
|
||||||
#price_unit = carrier.get_price_available(order)
|
res = carrier.rate_shipment(order_fake)
|
||||||
# ^^ ends up calling carrier.get_price_from_picking(order_total, weight, volume, quantity)
|
price_unit = res['price']
|
||||||
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)
|
|
||||||
if order_fake.company_id.currency_id.id != order_fake.pricelist_id.currency_id.id:
|
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)
|
price_unit = order_fake.company_id.currency_id.with_context(date=order_fake.date_order).compute(price_unit, order_fake.pricelist_id.currency_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user