bemade-addons/improved_mo_origin/models/mrp_production.py
2025-05-29 21:35:47 -04:00

71 lines
2.2 KiB
Python

from odoo import models, fields, api
class MrpProduction(models.Model):
_inherit = "mrp.production"
customer_ids = fields.Many2many(
comodel_name="res.partner",
compute="_compute_customers",
string="Customers",
store=True,
compute_sudo=True,
)
source_sale_orders = fields.Char(
compute="_compute_source_sale_orders",
string="Sale Order(s)",
store=True,
compute_sudo=True,
)
source_sale_ids = fields.Many2many(
comodel_name="sale.order",
compute="_compute_source_sale_ids",
compute_sudo=True,
)
def _get_related_sales(self):
self.ensure_one()
return (
self.mapped("procurement_group_id")
.mapped("mrp_production_ids")
.mapped("move_dest_ids")
.mapped("group_id")
.mapped("sale_id")
)
@api.depends(
"procurement_group_id",
"procurement_group_id.mrp_production_ids",
"procurement_group_id.mrp_production_ids.move_dest_ids",
"procurement_group_id.stock_move_ids.move_dest_ids",
)
def _compute_customers(self):
for rec in self:
rec.customer_ids = rec._get_related_sales().mapped("partner_id").ids
if not rec.customer_ids:
sources = rec._get_sources()
if sources:
rec.customer_ids = sources.customer_ids
@api.depends(
"procurement_group_id",
"procurement_group_id.mrp_production_ids",
"procurement_group_id.mrp_production_ids.move_dest_ids",
"procurement_group_id.stock_move_ids.move_dest_ids",
)
def _compute_source_sale_ids(self):
for rec in self:
source_sale_ids = rec._get_related_sales()
sources = rec._get_sources()
if not source_sale_ids and sources:
source_sale_ids = sources.source_sale_ids
rec.source_sale_ids = source_sale_ids
@api.depends("source_sale_ids")
def _compute_source_sale_orders(self):
for rec in self:
rec.source_sale_orders = (
", ".join(rec.source_sale_ids.mapped("name"))
if rec.source_sale_ids
else ""
)