Files
stock-logistics-warehouse/stock_picking_show_linked/models/stock_picking.py
2022-06-27 16:40:06 -05:00

49 lines
1.9 KiB
Python

# Copyright 2022 ForgeFlow S.L. (https://www.forgeflow.com)
# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class StockPicking(models.Model):
_inherit = "stock.picking"
dest_picking_count = fields.Integer(compute="_compute_picking_count")
origin_picking_count = fields.Integer(compute="_compute_picking_count")
@api.depends("move_lines")
def _compute_picking_count(self):
for record in self:
origin_pickings = record.mapped("move_lines.move_orig_ids.picking_id")
dest_pickings = record.mapped("move_lines.move_dest_ids.picking_id")
record.origin_picking_count = len(origin_pickings)
record.dest_picking_count = len(dest_pickings)
def _get_action_link(self, pickings):
result = self.env["ir.actions.actions"]._for_xml_id(
"stock.action_picking_tree_all"
)
# choose the view_mode accordingly
if not pickings or len(pickings) > 1:
result["domain"] = "[('id','in',%s)]" % pickings
elif len(pickings) == 1:
res = self.env.ref("stock.view_picking_form", False)
form_view = [(res and res.id or False, "form")]
if "views" in result:
result["views"] = form_view + [
(state, view) for state, view in result["views"] if view != "form"
]
else:
result["views"] = form_view
result["res_id"] = pickings[0]
return result
def action_stock_picking_origin(self):
pick_ids = self.mapped("move_lines.move_orig_ids.picking_id")
result = self._get_action_link(pick_ids.ids)
return result
def action_stock_picking_destination(self):
pick_ids = self.mapped("move_lines.move_dest_ids.picking_id")
result = self._get_action_link(pick_ids.ids)
return result