[IMP] purchase: set scheduled date to the last minute of that day
When set scheduled date on PO line, set it to be the last minute of that day to correctly decide the late of the receipt. Task 2265912 PR #52693 Related: odoo/enterprise#11034 Related: odoo/upgrade#1323 Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user