summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/purchase/models/purchase.py10
-rw-r--r--addons/purchase_stock/tests/test_purchase_lead_time.py8
2 files changed, 10 insertions, 8 deletions
diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py
index 674e09b0daa..e2d254d56fe 100644
--- a/addons/purchase/models/purchase.py
+++ b/addons/purchase/models/purchase.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from datetime import datetime
+from datetime import datetime, time
from dateutil.relativedelta import relativedelta
from itertools import groupby
+from pytz import timezone, UTC
from werkzeug.urls import url_encode
from odoo import api, fields, models, SUPERUSER_ID, _
@@ -922,9 +923,10 @@ class PurchaseOrderLine(models.Model):
"""
date_order = po.date_order if po else self.order_id.date_order
if date_order:
- return date_order + relativedelta(days=seller.delay if seller else 0)
+ date_planned = date_order + relativedelta(days=seller.delay if seller else 0)
else:
- return datetime.today() + relativedelta(days=seller.delay if seller else 0)
+ date_planned = datetime.today() + relativedelta(days=seller.delay if seller else 0)
+ return timezone(self.order_id.user_id.tz or 'UTC').localize(datetime.combine(date_planned.date(), time.max)).astimezone(UTC).replace(tzinfo=None, microsecond=0, second=0)
@api.depends('product_id', 'date_order')
def _compute_analytic_id_and_tag_ids(self):
@@ -945,7 +947,7 @@ class PurchaseOrderLine(models.Model):
return
# Reset date, price and quantity since _onchange_quantity will provide default values
- self.date_planned = self.order_id.date_planned or datetime.today().strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ self.date_planned = self.order_id.date_planned or timezone(self.order_id.user_id.tz or 'UTC').localize(datetime.combine(datetime.today(), time.max)).astimezone(UTC).replace(tzinfo=None, microsecond=0, second=0)
self.price_unit = self.product_qty = 0.0
self._product_id_change()
diff --git a/addons/purchase_stock/tests/test_purchase_lead_time.py b/addons/purchase_stock/tests/test_purchase_lead_time.py
index f01aad815e3..e42e2104733 100644
--- a/addons/purchase_stock/tests/test_purchase_lead_time.py
+++ b/addons/purchase_stock/tests/test_purchase_lead_time.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, time
from unittest.mock import patch
from odoo import fields
@@ -33,7 +33,7 @@ class TestPurchaseLeadTime(PurchaseTestCommon):
self.assertEqual(purchase.date_order, order_date, 'Order date should be equal to: Date of the procurement order - Purchase Lead Time - Delivery Lead Time.')
# Check scheduled date of purchase order
- schedule_date = order_date + timedelta(days=self.product_1.seller_ids.delay)
+ schedule_date = datetime.combine(order_date + timedelta(days=self.product_1.seller_ids.delay), time.max).replace(microsecond=0, second=0)
self.assertEqual(purchase.order_line.date_planned, schedule_date, 'Schedule date should be equal to: Order date of Purchase order + Delivery Lead Time.')
# check the picking created or not
@@ -70,11 +70,11 @@ class TestPurchaseLeadTime(PurchaseTestCommon):
self.assertEqual(purchase2.date_order, order_date, 'Order date should be equal to: Date of the procurement order - Delivery Lead Time.')
# Check scheduled date of purchase order line for product_1
- schedule_date_1 = order_date + timedelta(days=self.product_1.seller_ids.delay)
+ schedule_date_1 = datetime.combine(order_date + timedelta(days=self.product_1.seller_ids.delay), time.max).replace(microsecond=0, second=0)
self.assertEqual(order_line_pro_1.date_planned, schedule_date_1, 'Schedule date of purchase order line for product_1 should be equal to: Order date of purchase order + Delivery Lead Time of product_1.')
# Check scheduled date of purchase order line for product_2
- schedule_date_2 = order_date + timedelta(days=self.product_2.seller_ids.delay)
+ schedule_date_2 = datetime.combine(order_date + timedelta(days=self.product_2.seller_ids.delay), time.max).replace(microsecond=0, second=0)
self.assertEqual(order_line_pro_2.date_planned, schedule_date_2, 'Schedule date of purchase order line for product_2 should be equal to: Order date of purchase order + Delivery Lead Time of product_2.')
# Check scheduled date of purchase order