14 add link between sale order line and mrp production

This commit is contained in:
Benoit
2023-03-31 11:02:06 +02:00
parent 3bce740d1b
commit b64952f273
5 changed files with 32 additions and 0 deletions

View File

@@ -4,3 +4,4 @@ from . import mrp_production
from . import mrp_workorder from . import mrp_workorder
from . import stock_rule from . import stock_rule
from . import sale_order from . import sale_order
from . import sale_order_line

View File

@@ -32,3 +32,10 @@ class MrpProduction(models.Model):
client_order_ref = fields.Char( client_order_ref = fields.Char(
related="sale_id.client_order_ref", string="Customer Reference", store=True related="sale_id.client_order_ref", string="Customer Reference", store=True
) )
sale_line_ids = fields.Many2many(
comodel_name="sale.order.line",
relation="sale_line_production_rel",
column1="production_id",
column2="line_id",
string="Sale order line",
)

View File

@@ -0,0 +1,17 @@
# Copyright 2021 Akretion (http://www.akretion.com).
# @author Benoît GUILLOT <benoit.guillot@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
production_ids = fields.Many2many(
comodel_name="mrp.production",
relation="sale_line_production_rel",
column1="line_id",
column2="production_id",
string="Manufacturing orders",
)

View File

@@ -34,4 +34,10 @@ class StockRule(models.Model):
res["source_procurement_group_id"] = ( res["source_procurement_group_id"] = (
values.get("group_id").id if values.get("group_id", False) else False values.get("group_id").id if values.get("group_id", False) else False
) )
moves = values.get("move_dest_ids")
line_ids = moves.sale_line_id
while moves.move_dest_ids:
moves = moves.move_dest_ids
line_ids |= moves.sale_line_id
res["sale_line_ids"] = line_ids and [(4, x.id) for x in line_ids] or False
return res return res

View File

@@ -49,6 +49,7 @@ class TestMrpSaleInfo(common.SavepointCase):
prev_productions = self.env["mrp.production"].search([]) prev_productions = self.env["mrp.production"].search([])
self.sale_order.action_confirm() self.sale_order.action_confirm()
production = self.env["mrp.production"].search([]) - prev_productions production = self.env["mrp.production"].search([]) - prev_productions
self.assertEqual(production.sale_line_ids, self.sale_order.order_line)
self.assertEqual(production.sale_id, self.sale_order) self.assertEqual(production.sale_id, self.sale_order)
self.assertEqual(production.partner_id, self.partner) self.assertEqual(production.partner_id, self.partner)
self.assertEqual(production.client_order_ref, self.sale_order.client_order_ref) self.assertEqual(production.client_order_ref, self.sale_order.client_order_ref)