Skip to content

Commit

Permalink
[IMP] stock_inventory_verification_request: compute involved lines an…
Browse files Browse the repository at this point in the history
…d quants
  • Loading branch information
JoanSForgeFlow committed Nov 11, 2024
1 parent 413f8fe commit 7ea8a15
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ def _compute_created_inventory_count(self):
column1="slot_verification_request_id",
column2="move_line_id",
string="Involved Stock Moves",
compute="_compute_involved_move_lines",
store=False,
)
involved_move_line_count = fields.Integer(
compute="_compute_involved_move_line_count"
Expand All @@ -110,6 +112,8 @@ def _compute_created_inventory_count(self):
column1="slot_verification_request_id",
column2="quant_id",
string="Involved Inventory Quants",
compute="_compute_involved_quants",
store=False,
)
involved_quant_count = fields.Integer(compute="_compute_involved_quant_count")
created_inventory_ids = fields.One2many(
Expand All @@ -120,6 +124,28 @@ def _compute_created_inventory_count(self):
)
created_inventory_count = fields.Integer(compute="_compute_created_inventory_count")

@api.depends("location_id", "product_id", "lot_id", "state")
def _compute_involved_move_lines(self):
for rec in self:
# Only compute if the state is 'open'
if rec.state == "open":
rec.involved_move_line_ids = self.env["stock.move.line"].search(
rec._get_involved_move_lines_domain()
)
else:
rec.involved_move_line_ids = self.env["stock.move.line"]

@api.depends("location_id", "product_id", "lot_id", "state")
def _compute_involved_quants(self):
for rec in self:
# Only compute if the state is 'open'
if rec.state == "open":
rec.involved_quant_ids = self.env["stock.quant"].search(
rec._get_involved_quants_domain()
)
else:
rec.involved_quant_ids = self.env["stock.quant"]

def _get_involved_move_lines_domain(self):
domain = [
"|",
Expand All @@ -140,24 +166,8 @@ def _get_involved_quants_domain(self):
domain.append(("lot_id", "=", self.lot_id.id))
return domain

def _get_involved_quants_and_locations(self):
involved_move_lines = self.env["stock.move.line"].search(
self._get_involved_move_lines_domain()
)
involved_quants = self.env["stock.quant"].search(
self._get_involved_quants_domain()
)
return involved_move_lines, involved_quants

def action_confirm(self):
self.write({"state": "open"})
for rec in self:
(
involved_moves_lines,
involved_quants,
) = rec._get_involved_quants_and_locations()
rec.involved_move_line_ids = involved_moves_lines
rec.involved_quant_ids = involved_quants
return True

def action_cancel(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def setUp(self):
}
).action_apply_inventory()

def test_svr_creation(self):
def test_01_svr_creation(self):
"""Tests the creation of Slot Verification Requests."""
inventory = self.obj_inventory.create(
{
Expand Down Expand Up @@ -104,7 +104,7 @@ def test_svr_creation(self):
for quant in inventory.stock_quant_ids:
quant.action_open_svr()

def test_svr_workflow(self):
def test_02_svr_workflow(self):
"""Tests workflow of Slot Verification Request."""
test_svr = self.env["stock.slot.verification.request"].create(
{
Expand Down Expand Up @@ -135,7 +135,7 @@ def test_svr_workflow(self):
"Slot Verification Request not marked as cancelled.",
)

def test_view_methods(self):
def test_03_view_methods(self):
"""Tests the methods used to handle de UI."""
test_svr = self.env["stock.slot.verification.request"].create(
{
Expand All @@ -152,7 +152,7 @@ def test_view_methods(self):
test_svr.action_view_move_lines()
test_svr.action_view_quants()

def test_svr_full_workflow(self):
def test_04_svr_full_workflow(self):
test_svr = self.env["stock.slot.verification.request"].create(
{
"location_id": self.test_loc.id,
Expand Down Expand Up @@ -182,7 +182,7 @@ def test_svr_full_workflow(self):
"Slot Verification Request not marked as cancelled.",
)

def test_user_permissions_on_svr(self):
def test_05_user_permissions_on_svr(self):
"""Tests that users without the correct permissions cannot change SVR state."""
test_svr = self.env["stock.slot.verification.request"].create(
{
Expand All @@ -197,17 +197,69 @@ def test_user_permissions_on_svr(self):
with self.assertRaises(AccessError):
test_svr.with_user(self.user).action_solved()

def test_06_action_view_methods(self):
"""Tests the view methods in Slot Verification Request."""
svr = self.obj_svr.create(
{
"location_id": self.test_loc.id,
"state": "wait",
"product_id": self.product1.id,
}
)
svr.action_view_move_lines()
svr.action_view_quants()
svr.action_create_inventory_adjustment()
svr.action_view_inventories()

def test_07_involved_move_lines_compute(self):
move = self.obj_move.create(
{
"name": "Test Move",
"product_id": self.product1.id,
"product_uom_qty": 10,
"product_uom": self.product1.uom_id.id,
"location_id": self.test_loc.id,
"location_dest_id": self.test_loc.id,
}
)
move._action_confirm()
move._action_assign()
move_line = move.move_line_ids[0]
test_svr = self.obj_svr.create(
{
"location_id": self.test_loc.id,
"state": "wait",
"product_id": self.product1.id,
}
)
test_svr.action_confirm()
self.assertEqual(
test_svr.state, "open", "Slot Verification Request not confirmed properly."
)
self.assertIn(
move_line,
test_svr.involved_move_line_ids,
"Move line not found in involved_move_line_ids",
)

def test_action_view_methods(self):
"""Tests the view methods in Slot Verification Request."""
svr = self.obj_svr.create(
{
"location_id": self.test_loc.id,
"state": "wait",
"product_id": self.product1.id,
}
)
svr.action_view_move_lines()
svr.action_view_quants()
svr.action_create_inventory_adjustment()
svr.action_view_inventories()
def test_08_involved_quants_compute(self):
self.quant3 = self.env["stock.quant"].create(
{
"location_id": self.test_loc.id,
"product_id": self.product1.id,
"quantity": 20.0,
}
)
test_svr = self.obj_svr.create(
{
"location_id": self.test_loc.id,
"state": "wait",
"product_id": self.product1.id,
}
)
test_svr.action_confirm()
self.assertIn(
self.quant3,
test_svr.involved_quant_ids,
"Quant3 not found in involved_quant_ids",
)

0 comments on commit 7ea8a15

Please sign in to comment.