Skip to content

Commit

Permalink
[IMP] sell_only_by_packaging: support negative rounding when converti…
Browse files Browse the repository at this point in the history
…ng packaging qty
  • Loading branch information
duongtq committed Jul 18, 2024
1 parent 01ad918 commit acd29db
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
13 changes: 12 additions & 1 deletion sell_only_by_packaging/models/product_product.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,16 @@ def _convert_packaging_qty(self, qty, uom, packaging):
)
!= 0
):
qty = qty - (qty % q) + q
forced_qty = qty - (qty % q) + q
# Support negative rounding
if (
float_compare(
qty,
0.0,
precision_rounding=0.001,
)
< 0
):
forced_qty = forced_qty - q
return forced_qty
return qty
25 changes: 25 additions & 0 deletions sell_only_by_packaging/tests/test_sale_only_by_packaging.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,31 @@ def test_convert_packaging_qty(self):
self.assertAlmostEqual(
so_line.product_uom_qty, 220, places=self.precision
)
# Check with negative quantity
so_line.product_uom_qty = -52
self.assertAlmostEqual(
so_line.product_uom_qty, -60, places=self.precision
)
so_line.product_uom_qty = -40
self.assertAlmostEqual(
so_line.product_uom_qty, -40, places=self.precision
)
so_line.product_uom_qty = -38
self.assertAlmostEqual(
so_line.product_uom_qty, -40, places=self.precision
)
so_line.product_uom_qty = -22
self.assertAlmostEqual(
so_line.product_uom_qty, -40, places=self.precision
)
so_line.product_uom_qty = -72
self.assertAlmostEqual(
so_line.product_uom_qty, -80, places=self.precision
)
so_line.product_uom_qty = -209.98
self.assertAlmostEqual(
so_line.product_uom_qty, -220, places=self.precision
)

def test_onchange_qty_is_not_pack_multiple(self):
"""Check package when qantity is not a multiple of package quantity.
Expand Down

0 comments on commit acd29db

Please sign in to comment.