Merge PR #1647 into 14.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2023-03-07 16:43:44 +00:00
5 changed files with 33 additions and 7 deletions

View File

@@ -69,7 +69,7 @@ class StockMove(models.Model):
def _action_cancel(self):
res = super()._action_cancel()
self.mapped("allocation_ids.stock_request_id").check_done()
self.mapped("allocation_ids.stock_request_id").check_cancel()
return res
def _action_done(self, cancel_backorder=False):

View File

@@ -236,6 +236,7 @@ class StockRequest(models.Model):
def action_cancel(self):
self.sudo().mapped("move_ids")._action_cancel()
self.write({"state": "cancel"})
self.mapped("order_id").check_cancel()
return True
def action_done(self):
@@ -243,6 +244,12 @@ class StockRequest(models.Model):
self.mapped("order_id").check_done()
return True
def check_cancel(self):
for request in self:
if request._check_cancel_allocation():
request.write({"state": "cancel"})
request.mapped("order_id").check_cancel()
def check_done(self):
precision = self.env["decimal.precision"].precision_get(
"Product Unit of Measure"
@@ -259,11 +266,13 @@ class StockRequest(models.Model):
>= 0
):
request.action_done()
elif request._check_done_allocation():
request.action_done()
elif request._check_cancel_allocation():
# If qty_done=0 and qty_cancelled>0 it's cancelled
request.write({"state": "cancel"})
request.mapped("order_id").check_cancel()
return True
def _check_done_allocation(self):
def _check_cancel_allocation(self):
precision = self.env["decimal.precision"].precision_get(
"Product Unit of Measure"
)

View File

@@ -249,6 +249,12 @@ class StockRequestOrder(models.Model):
rec.action_done()
return
def check_cancel(self):
for rec in self:
if not rec.stock_request_ids.filtered(lambda r: r.state != "cancel"):
rec.write({"state": "cancel"})
return
def action_view_transfer(self):
action = self.env["ir.actions.act_window"]._for_xml_id(
"stock.action_picking_tree_all"

View File

@@ -680,7 +680,7 @@ class TestStockRequestBase(TestStockRequest):
self.assertEqual(stock_request_2.qty_in_progress, 0)
self.assertEqual(stock_request_2.qty_done, 0)
self.assertEqual(stock_request_2.qty_cancelled, 6)
self.assertEqual(stock_request_2.state, "done")
self.assertEqual(stock_request_2.state, "cancel")
def test_cancel_request(self):
expected_date = fields.Datetime.now()
@@ -1064,8 +1064,11 @@ class TestStockRequestBase(TestStockRequest):
sr2.refresh()
sr3.refresh()
self.assertEqual(sr1.state, "done")
self.assertEqual(sr1.qty_done, 5)
self.assertEqual(sr1.qty_cancelled, 0)
self.assertEqual(sr2.state, "done")
self.assertEqual(sr2.state, "cancel")
self.assertEqual(sr2.qty_done, 1)
self.assertEqual(sr2.qty_cancelled, 4)
self.assertEqual(sr3.state, "done")
self.assertEqual(sr3.state, "cancel")
self.assertEqual(sr3.qty_done, 0)
self.assertEqual(sr3.qty_cancelled, 5)

View File

@@ -97,6 +97,14 @@ class TestStockRequestMrp(TestStockRequest):
order.with_context(bypass_confirm_wizard=True).action_cancel()
self.assertEqual(production.state, "cancel")
def test_stock_request_order_production_action_cancel(self):
order = self._create_stock_request(self.stock_request_user, [(self.product, 5)])
order.action_confirm()
production = fields.first(order.stock_request_ids.production_ids)
self.assertEqual(production.state, "confirmed")
production.action_cancel()
self.assertEqual(order.state, "cancel")
def test_view_actions(self):
order = self._create_stock_request(self.stock_request_user, [(self.product, 5)])
order.action_confirm()