Skip to content

Commit

Permalink
Merge pull request #442 from ForgeFlow/14.0-fix-rma_scrap
Browse files Browse the repository at this point in the history
[FIX] rma_scrap: no scrap if qty to scrap = 0.0
  • Loading branch information
LoisRForgeFlow authored Jul 12, 2023
2 parents 7737ced + 481626d commit 3da8341
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
56 changes: 55 additions & 1 deletion rma_scrap/models/stock_scrap.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Copyright 2022 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.html).

from odoo import fields, models
from odoo import _, fields, models
from odoo.exceptions import UserError
from odoo.tools import float_compare, float_is_zero


class StockScrap(models.Model):
Expand Down Expand Up @@ -39,3 +41,55 @@ def action_view_rma_line(self):
result["views"] = [(res and res.id or False, "form")]
result["res_id"] = self.rma_line_id.id
return result

def action_validate(self):
self.ensure_one()
if float_is_zero(
self.scrap_qty, precision_rounding=self.product_uom_id.rounding
):
raise UserError(_("You can only enter positive quantities."))
if self.product_id.type != "product":
return self.do_scrap()
precision = self.env["decimal.precision"].precision_get(
"Product Unit of Measure"
)
available_qty = sum(
self.env["stock.quant"]
._gather(
self.product_id,
self.location_id,
self.lot_id,
self.package_id,
self.owner_id,
strict=True,
)
.mapped("quantity")
)
scrap_qty = self.product_uom_id._compute_quantity(
self.scrap_qty, self.product_id.uom_id
)
if float_compare(available_qty, scrap_qty, precision_digits=precision) >= 0:
return self.do_scrap()
else:
ctx = dict(self.env.context)
ctx.update(
{
"default_product_id": self.product_id.id,
"default_location_id": self.location_id.id,
"default_scrap_id": self.id,
"default_quantity": scrap_qty,
"default_product_uom_name": self.product_id.uom_name,
}
)
return {
"name": self.product_id.display_name
+ _(": Insufficient Quantity To Scrap"),
"view_mode": "form",
"res_model": "stock.warn.insufficient.qty.scrap",
"view_id": self.env.ref(
"stock.stock_warn_insufficient_qty_scrap_form_view"
).id,
"type": "ir.actions.act_window",
"context": ctx,
"target": "new",
}
27 changes: 25 additions & 2 deletions rma_scrap/tests/test_rma_scrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,20 @@ def test_01_rma_scrap_received(self):
"active_id": 1,
}
).create({})
wizard._create_picking()

self.assertEqual(rma.qty_to_receive, 1.00)
self.assertFalse(rma.qty_to_scrap)

action_picking = wizard.action_create_picking()
picking = self.env["stock.picking"].browse([action_picking["res_id"]])
picking.move_line_ids[0].qty_done = rma.qty_to_receive

picking.button_validate()
rma._compute_qty_to_scrap()

self.assertFalse(rma.qty_to_receive)
self.assertEqual(rma.qty_received, 1.00)
self.assertEqual(rma.qty_to_scrap, 1.00)
wizard = self.rma_make_scrap_wiz.with_context(
{
"active_ids": rma.id,
Expand All @@ -129,6 +141,8 @@ def test_01_rma_scrap_received(self):
scrap.action_validate()
move = scrap.move_id
self.assertEqual(move.product_id.id, self.product_1.id)
self.assertFalse(rma.qty_to_scrap)
self.assertEqual(rma.qty_scrap, 1.00)

def test_02_rma_scrap_ordered(self):
rma = self.rma_line_obj.create(
Expand All @@ -147,6 +161,11 @@ def test_02_rma_scrap_ordered(self):
rma._onchange_operation_id()
rma.action_rma_to_approve()
rma._compute_qty_to_scrap()

self.assertEqual(rma.qty_to_receive, 1.00)
self.assertEqual(rma.qty_to_scrap, 1.00)
self.assertFalse(rma.qty_in_scrap)

wizard = self.rma_make_scrap_wiz.with_context(
{
"active_ids": rma.id,
Expand All @@ -169,4 +188,8 @@ def test_02_rma_scrap_ordered(self):
scrap = self.env["stock.scrap"].browse([action["res_id"]])
self.assertEqual(scrap.location_id.id, self.stock_rma_location.id)
self.assertEqual(scrap.move_id.id, False)
self.assertTrue(scrap.action_validate())
self.assertEqual(rma.qty_in_scrap, 1.00)
res = scrap.action_validate()
scrap.do_scrap()
self.assertTrue(res)
self.assertEqual(rma.qty_scrap, 1.00)

0 comments on commit 3da8341

Please sign in to comment.