From 41c09796cda11e2f87527c45b6d1edfe660d57c5 Mon Sep 17 00:00:00 2001 From: "Mathias Mathy (MAMA)" Date: Thu, 19 Oct 2023 11:40:34 +0200 Subject: [PATCH] [IMP] repair: consolidate creation from sale order Main changes: Consolidate the relation between a sale order line and the repair order it has created. Before: When a product trigger the creation of a repair order from a sale order line, the 'Repair Request' field of the repair order is defined by the product name. After: When a product trigger the creation of a repair order from a sale order line, set the product and its quantity on the created repair order if the product is of type storable or consumable. Moreover, define the 'Repair Request' field of the repair order by the description of the sale line rather than by the product name. closes odoo/odoo#139177 Signed-off-by: William Henrotin (whe) --- addons/repair/models/repair.py | 14 +++++++++----- addons/repair/models/sale_order.py | 7 +++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/addons/repair/models/repair.py b/addons/repair/models/repair.py index 8d6542a10cb..b6f300d4c23 100644 --- a/addons/repair/models/repair.py +++ b/addons/repair/models/repair.py @@ -148,10 +148,10 @@ class Repair(models.Model): sale_order_line_id = fields.Many2one( 'sale.order.line', check_company=True, readonly=True, copy=False, help="Sale Order Line from which the Repair Order comes from.") - repair_request = fields.Char( - related='sale_order_line_id.product_id.display_name', + repair_request = fields.Text( + related='sale_order_line_id.name', string='Repair Request', - help="Product from which the Repair Order was created.") + help="Sale Order Line Description.") # Return Binding picking_id = fields.Many2one( @@ -431,8 +431,12 @@ class Repair(models.Model): }) product_moves = self.env['stock.move'].create(product_move_vals) - self.move_id = product_moves.id - + repair_move = {m.repair_id.id: m for m in product_moves} + for repair in self: + move_id = repair_move.get(repair.id, False) + if move_id: + repair.move_id = move_id + self.sale_order_line_id.move_ids.picked = True all_moves = self.move_ids + product_moves all_moves._action_done() diff --git a/addons/repair/models/sale_order.py b/addons/repair/models/sale_order.py index ebcb06bea7f..4bf88693c73 100644 --- a/addons/repair/models/sale_order.py +++ b/addons/repair/models/sale_order.py @@ -101,6 +101,13 @@ class SaleOrderLine(models.Model): 'sale_order_line_id': line.id, 'picking_type_id': order.warehouse_id.repair_type_id.id, }) + if line.product_template_id.type in ('consu', 'product'): + new_repair_vals[-1].update({ + 'product_id': line.product_id.id, + 'product_qty': line.product_uom_qty, + 'product_uom': line.product_uom.id, + }) + if new_repair_vals: self.env['repair.order'].sudo().create(new_repair_vals)