[FIX] stock: use timedelta instead of relativedelta
Suppose we have a delta between two datetimes:
delta = dt1 - dt0
If delta is negative but less than a day, ``delta.days`` returns -1 (which is
compensated by positive seconds). In order to avoid this surprising effect,
use ``delta.total_seconds()`` to compute the number of days.
This commit is contained in:
@@ -288,10 +288,10 @@ class StockMove(models.Model):
|
|||||||
if propagated_date_field:
|
if propagated_date_field:
|
||||||
current_date = datetime.strptime(move.date_expected, DEFAULT_SERVER_DATETIME_FORMAT)
|
current_date = datetime.strptime(move.date_expected, DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
new_date = datetime.strptime(vals.get(propagated_date_field), DEFAULT_SERVER_DATETIME_FORMAT)
|
new_date = datetime.strptime(vals.get(propagated_date_field), DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
delta = relativedelta.relativedelta(new_date, current_date)
|
delta_days = (new_date - current_date).total_seconds() / 86400
|
||||||
if abs(delta.days) >= move.company_id.propagation_minimum_delta:
|
if abs(delta_days) >= move.company_id.propagation_minimum_delta:
|
||||||
old_move_date = datetime.strptime(move.move_dest_id.date_expected, DEFAULT_SERVER_DATETIME_FORMAT)
|
old_move_date = datetime.strptime(move.move_dest_id.date_expected, DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
new_move_date = (old_move_date + relativedelta.relativedelta(days=delta.days or 0)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
new_move_date = (old_move_date + relativedelta.relativedelta(days=delta_days or 0)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
propagated_changes_dict['date_expected'] = new_move_date
|
propagated_changes_dict['date_expected'] = new_move_date
|
||||||
#For pushed moves as well as for pulled moves, propagate by recursive call of write().
|
#For pushed moves as well as for pulled moves, propagate by recursive call of write().
|
||||||
#Note that, for pulled moves we intentionally don't propagate on the procurement.
|
#Note that, for pulled moves we intentionally don't propagate on the procurement.
|
||||||
|
|||||||
Reference in New Issue
Block a user