From 1b4c1082f2fb071907fa56affeb94d11c1aae93d Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Sun, 26 Jun 2022 07:59:33 +0200 Subject: [PATCH] [IMP][rma] add smart button for internal transfers --- rma/models/rma_order.py | 18 +++++++++++++++++ rma/models/rma_order_line.py | 33 +++++++++++++++++++++++++++++++ rma/views/rma_order_line_view.xml | 20 +++++++++++++------ rma/views/rma_order_view.xml | 14 +++++++++++++ 4 files changed, 79 insertions(+), 6 deletions(-) diff --git a/rma/models/rma_order.py b/rma/models/rma_order.py index e6af15d2..08309edd 100644 --- a/rma/models/rma_order.py +++ b/rma/models/rma_order.py @@ -25,6 +25,13 @@ class RmaOrder(models.Model): pickings |= line._get_in_pickings() rec.in_shipment_count = len(pickings) + def _compute_int_picking_count(self): + for rec in self: + pickings = self.env["stock.picking"] + for line in rec.rma_line_ids: + pickings |= line._get_int_pickings() + rec.int_picking_count = len(pickings) + def _compute_out_shipment_count(self): for rec in self: pickings = self.env["stock.picking"] @@ -96,6 +103,9 @@ class RmaOrder(models.Model): in_shipment_count = fields.Integer( compute="_compute_in_shipment_count", string="# of Shipments" ) + int_picking_count = fields.Integer( + compute="_compute_int_picking_count", string="# of Internal Transfers" + ) out_shipment_count = fields.Integer( compute="_compute_out_shipment_count", string="# of Outgoing Shipments" ) @@ -185,6 +195,14 @@ class RmaOrder(models.Model): shipments |= line._get_in_pickings() return self._view_shipments(result, shipments) + def action_view_int_pickings(self): + action = self.env.ref("stock.action_picking_tree_all") + result = action.sudo().read()[0] + shipments = self.env["stock.picking"] + for line in self.rma_line_ids: + shipments |= line._get_int_pickings() + return self._view_shipments(result, shipments) + def action_view_out_shipments(self): action = self.env.ref("stock.action_picking_tree_all") result = action.sudo().read()[0] diff --git a/rma/models/rma_order_line.py b/rma/models/rma_order_line.py index f307575e..b0aa96a3 100644 --- a/rma/models/rma_order_line.py +++ b/rma/models/rma_order_line.py @@ -58,6 +58,16 @@ class RmaOrderLine(models.Model): pickings |= move.picking_id return pickings + @api.model + def _get_int_pickings(self): + pickings = self.env["stock.picking"] + for move in self.move_ids: + first_usage = move._get_first_usage() + last_usage = move._get_last_usage() + if last_usage == "internal" and first_usage == "internal": + pickings |= move.picking_id + return pickings + @api.model def _get_out_pickings(self): pickings = self.env["stock.picking"] @@ -75,6 +85,11 @@ class RmaOrderLine(models.Model): pickings = line._get_in_pickings() line.in_shipment_count = len(pickings) + def _compute_int_picking_count(self): + for line in self: + pickings = line._get_int_pickings() + line.int_picking_count = len(pickings) + def _compute_out_shipment_count(self): for line in self: pickings = line._get_out_pickings() @@ -301,6 +316,9 @@ class RmaOrderLine(models.Model): in_shipment_count = fields.Integer( compute="_compute_in_shipment_count", string="# of Shipments" ) + int_picking_count = fields.Integer( + compute="_compute_int_picking_count", string="# of Internal Transfers" + ) out_shipment_count = fields.Integer( compute="_compute_out_shipment_count", string="# of Deliveries" ) @@ -709,6 +727,21 @@ class RmaOrderLine(models.Model): result["res_id"] = shipments.ids[0] return result + def action_view_int_pickings(self): + action = self.env.ref("stock.action_picking_tree_all") + result = action.sudo().read()[0] + shipments = self.env["stock.picking"] + for line in self: + shipments |= line._get_int_pickings() + # choose the view_mode accordingly + if len(shipments) != 1: + result["domain"] = "[('id', 'in', " + str(shipments.ids) + ")]" + elif len(shipments) == 1: + res = self.env.ref("stock.view_picking_form", False) + result["views"] = [(res and res.id or False, "form")] + result["res_id"] = shipments.ids[0] + return result + def action_view_out_shipments(self): action = self.env.ref("stock.action_picking_tree_all") result = action.sudo().read()[0] diff --git a/rma/views/rma_order_line_view.xml b/rma/views/rma_order_line_view.xml index e8f8a702..e62e8981 100644 --- a/rma/views/rma_order_line_view.xml +++ b/rma/views/rma_order_line_view.xml @@ -109,6 +109,20 @@ string="Shipments" /> + - - +