diff --git a/rma/models/__init__.py b/rma/models/__init__.py index 612e4aaa7..a57381a19 100644 --- a/rma/models/__init__.py +++ b/rma/models/__init__.py @@ -2,6 +2,7 @@ from . import rma_order_line from . import rma_operation from . import stock_move +from . import stock_quant_package from . import stock_warehouse from . import product from . import product_category diff --git a/rma/models/stock_quant_package.py b/rma/models/stock_quant_package.py new file mode 100644 index 000000000..658a82b03 --- /dev/null +++ b/rma/models/stock_quant_package.py @@ -0,0 +1,14 @@ +# Copyright (C) 2023 ForgeFlow S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + +from odoo import models + + +class QuantPackage(models.Model): + _inherit = "stock.quant.package" + + def _allowed_to_move_between_transfers(self): + res = super()._allowed_to_move_between_transfers() + return res and self.location_id != self.env.ref( + "stock.stock_location_customers" + ) diff --git a/rma/wizards/rma_make_picking.py b/rma/wizards/rma_make_picking.py index 4105e2535..9362a155b 100644 --- a/rma/wizards/rma_make_picking.py +++ b/rma/wizards/rma_make_picking.py @@ -213,7 +213,7 @@ def action_create_picking(self): action = self.item_ids.line_id.action_view_in_shipments() # Force the reservation of the RMA specific lot for incoming shipments. # FIXME: still needs fixing, not reserving appropriate serials. - for move in pickings.move_lines.filtered( + for move in pickings.move_ids.filtered( lambda x: x.state not in ("draft", "cancel", "done", "waiting") and x.rma_line_id and x.product_id.tracking in ("lot", "serial") @@ -232,7 +232,7 @@ def action_create_picking(self): ) move.move_line_ids.write( { - "product_uom_qty": 1 if picking_type == "incoming" else 0, + "reserved_uom_qty": 1 if picking_type == "incoming" else 0, "qty_done": 0, "package_id": len(quants) == 1 and quants.package_id.id, } @@ -240,11 +240,12 @@ def action_create_picking(self): elif move.product_id.tracking == "lot": if picking_type == "incoming": qty = self.item_ids.filtered( - lambda x: x.line_id.id == move.rma_line_id.id + lambda x, move=move: x.line_id.id == move.rma_line_id.id ).qty_to_receive + else: qty = self.item_ids.filtered( - lambda x: x.line_id.id == move.rma_line_id.id + lambda x, move=move: x.line_id.id == move.rma_line_id.id ).qty_to_deliver move_line_data = move._prepare_move_line_vals() move_line_data.update( @@ -252,7 +253,7 @@ def action_create_picking(self): "lot_id": move.rma_line_id.lot_id.id, "product_uom_id": move.product_id.uom_id.id, "qty_done": 0, - "product_uom_qty": qty if picking_type == "incoming" else 0, + "reserved_uom_qty": qty if picking_type == "incoming" else 0, } ) move_line_model.create(move_line_data)