mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
[MIG][16.0] stock_reserve_rule
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
{
|
||||
"name": "Stock Reservation Rules",
|
||||
"summary": "Configure reservation rules by location",
|
||||
"version": "15.0.1.0.0",
|
||||
"version": "16.0.1.0.0",
|
||||
"author": "Camptocamp, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/stock-logistics-warehouse",
|
||||
"category": "Stock Management",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="location_id" ref="stock.stock_location_stock" />
|
||||
<field name="location_dest_id" ref="stock.stock_location_customers" />
|
||||
<field
|
||||
name="move_lines"
|
||||
name="move_ids"
|
||||
model="stock.move"
|
||||
eval="[(0, 0, {
|
||||
'name': obj().env.ref('stock_reserve_rule.product_funky_socks').name,
|
||||
@@ -29,7 +29,7 @@
|
||||
<field name="location_id" ref="stock.stock_location_stock" />
|
||||
<field name="location_dest_id" ref="stock.stock_location_customers" />
|
||||
<field
|
||||
name="move_lines"
|
||||
name="move_ids"
|
||||
model="stock.move"
|
||||
eval="[(0, 0, {
|
||||
'name': obj().env.ref('stock_reserve_rule.product_funky_socks').name,
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
|
||||
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||
* Denis Roussel <denis.roussel@acsone.eu>
|
||||
|
||||
@@ -166,13 +166,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
)
|
||||
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin2.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin2.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -203,13 +203,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
)
|
||||
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone1_bin2.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone1_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -230,13 +230,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
)
|
||||
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 50},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 50},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -257,14 +257,14 @@ class TestReserveRule(common.TransactionCase):
|
||||
)
|
||||
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone1_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone1_bin1.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "partially_available")
|
||||
@@ -292,13 +292,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -323,13 +323,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -356,13 +356,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 100},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 100},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 100},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -394,15 +394,15 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin2.id, "product_qty": 150.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 50.0},
|
||||
{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 150.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 50.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -425,7 +425,7 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
|
||||
# We expect to take 50 in zone1/bin1 as it will empty a bin,
|
||||
@@ -434,8 +434,8 @@ class TestReserveRule(common.TransactionCase):
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin1.id, "product_qty": 50.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 30.0},
|
||||
{"location_id": self.loc_zone1_bin1.id, "reserved_uom_qty": 50.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 30.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -473,7 +473,7 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
|
||||
# We expect to take 60 in zone1/bin2 as it will empty a bin and
|
||||
@@ -483,8 +483,8 @@ class TestReserveRule(common.TransactionCase):
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin2.id, "product_qty": 60.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 20.0},
|
||||
{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 60.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 20.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -509,13 +509,13 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 10.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 10.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -552,14 +552,14 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin2.id, "product_qty": 500.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "product_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 40.0},
|
||||
{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 500.0},
|
||||
{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 40.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -596,14 +596,14 @@ class TestReserveRule(common.TransactionCase):
|
||||
picking = self._create_picking(self.wh, [(self.product1, 50)])
|
||||
picking.action_assign()
|
||||
self.assertRecordValues(
|
||||
picking.move_lines.move_line_ids,
|
||||
[{"location_id": self.loc_zone1_bin2.id, "product_qty": 50.0}],
|
||||
picking.move_ids.move_line_ids,
|
||||
[{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 50.0}],
|
||||
)
|
||||
picking2 = self._create_picking(self.wh, [(self.product1, 50)])
|
||||
picking2.action_assign()
|
||||
self.assertRecordValues(
|
||||
picking2.move_lines.move_line_ids,
|
||||
[{"location_id": self.loc_zone1_bin2.id, "product_qty": 50.0}],
|
||||
picking2.move_ids.move_line_ids,
|
||||
[{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 50.0}],
|
||||
)
|
||||
|
||||
def test_rule_packaging_0_packaging(self):
|
||||
@@ -677,14 +677,14 @@ class TestReserveRule(common.TransactionCase):
|
||||
],
|
||||
)
|
||||
picking.action_assign()
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
ml = move.move_line_ids
|
||||
self.assertRecordValues(
|
||||
ml,
|
||||
[
|
||||
{"location_id": self.loc_zone1_bin2.id, "product_qty": 500.0},
|
||||
{"location_id": self.loc_zone2_bin2.id, "product_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "product_qty": 10.0},
|
||||
{"location_id": self.loc_zone1_bin2.id, "reserved_uom_qty": 500.0},
|
||||
{"location_id": self.loc_zone2_bin2.id, "reserved_uom_qty": 50.0},
|
||||
{"location_id": self.loc_zone3_bin1.id, "reserved_uom_qty": 10.0},
|
||||
],
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
@@ -702,7 +702,7 @@ class TestReserveRule(common.TransactionCase):
|
||||
{"location_id": self.loc_zone2.id, "sequence": 2},
|
||||
],
|
||||
)
|
||||
move = picking.move_lines
|
||||
move = picking.move_ids
|
||||
|
||||
move.location_id = self.loc_zone2
|
||||
picking.action_assign()
|
||||
@@ -712,6 +712,6 @@ class TestReserveRule(common.TransactionCase):
|
||||
# never take any quantity in zone1.
|
||||
|
||||
self.assertRecordValues(
|
||||
ml, [{"location_id": self.loc_zone2_bin1.id, "product_qty": 80.0}]
|
||||
ml, [{"location_id": self.loc_zone2_bin1.id, "reserved_uom_qty": 80.0}]
|
||||
)
|
||||
self.assertEqual(move.state, "assigned")
|
||||
|
||||
Reference in New Issue
Block a user