Skip to content

Commit f3e6849

Browse files
committed
fixup! stock_average_daily_sale: returns handling
1 parent 7bb974d commit f3e6849

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

stock_average_daily_sale/models/stock_average_daily_sale.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,21 @@ class StockAverageDailySale(models.Model):
9292
recommended_qty = fields.Float(
9393
required=True,
9494
digits="Product Unit of Measure",
95-
help="Minimal recommended quantity in stock. Formula: average daily qty * number days in stock + safety",
95+
help=(
96+
"Recommended minimal quantity in stock. The bigger of the two values of:\n"
97+
"I) number of days in stock * average daily quantity * average daily consumption count\n"
98+
"II) number of days in stock * average quantity by consumption"
99+
),
96100
)
97101
recommended_qty_incl_returns = fields.Float(
98102
required=True,
99103
digits="Product Unit of Measure",
100104
help=(
101-
"Minimal recommended quantity in stock taking into account returns. "
102-
"Formula: (average daily qty - average return qty) * number days in stock + safety"
105+
"Recommended minimal quantity in stock taking into account returns. "
106+
"The bigger of the two values of:\n"
107+
"I) number of days in stock * (average daily quantity - average daily return quantity) "
108+
"* (average daily consumption count - average daily returns count)\n"
109+
"II) number of days in stock * (average quantity by consumption - average quantity by return)"
103110
),
104111
)
105112
sale_ok = fields.Boolean(
@@ -415,8 +422,8 @@ def _create_materialized_view(self):
415422
(cfg.number_days_qty_in_stock * average_qty_by_sale)
416423
) as recommended_qty,
417424
GREATEST(
418-
(cfg.number_days_qty_in_stock * (average_qty_by_sale - average_qty_by_return) * (average_daily_sales_count - average_daily_returns_count)) + ((ds.daily_standard_deviation - dsr.daily_standard_deviation) * cfg.safety_factor * sqrt(nbr_days)),
419-
(cfg.number_days_qty_in_stock * (average_qty_by_sale - average_qty_by_return))
425+
(cfg.number_days_qty_in_stock * (average_qty_by_sale - COALESCE(average_qty_by_return, 0)) * (average_daily_sales_count - COALESCE(average_daily_returns_count, 0))) + ((ds.daily_standard_deviation - COALESCE(dsr.daily_standard_deviation, 0)) * cfg.safety_factor * sqrt(nbr_days)),
426+
(cfg.number_days_qty_in_stock * (average_qty_by_sale - COALESCE(average_qty_by_return, 0)))
420427
) as recommended_qty_incl_returns
421428
FROM averages t
422429
JOIN daily_standard_deviation ds on ds.id= t.window_id

stock_average_daily_sale/tests/test_average_daily_sale.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def test_average_sale(self):
5959
"average_qty_by_sale": 10.0,
6060
"qty_in_stock": 40.0,
6161
"recommended_qty": 20.0,
62+
"average_qty_by_return": 0.0,
63+
"average_daily_returns_count": 0.0,
64+
"recommended_qty_incl_returns": 20.0,
6265
"warehouse_id": self.warehouse_0.id,
6366
}
6467
],
@@ -74,6 +77,7 @@ def test_average_sale(self):
7477
"average_qty_by_sale": 12.0,
7578
"qty_in_stock": 48.0,
7679
"recommended_qty": 24.0,
80+
"recommended_qty_incl_returns": 24.0,
7781
"warehouse_id": self.warehouse_0.id,
7882
}
7983
],
@@ -151,6 +155,7 @@ def test_average_sale_multiple(self):
151155
"nbr_sales": 2.0,
152156
"average_qty_by_sale": 8.0,
153157
"recommended_qty": 16.0,
158+
"recommended_qty_incl_returns": 16.0,
154159
"qty_in_stock": 44.0,
155160
"warehouse_id": self.warehouse_0.id,
156161
}

0 commit comments

Comments
 (0)