mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
105 lines
3.9 KiB
Python
105 lines
3.9 KiB
Python
# Copyright 2019 Eficent Business and IT Consulting Services S.L.
|
|
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class MrpBom(models.Model):
|
|
_inherit = "mrp.bom"
|
|
|
|
code = fields.Char(
|
|
track_visibility="onchange",
|
|
)
|
|
product_tmpl_id = fields.Many2one(
|
|
track_visibility="always",
|
|
)
|
|
product_qty = fields.Float(
|
|
track_visibility="onchange",
|
|
)
|
|
picking_type_id = fields.Many2one(
|
|
track_visibility="onchange",
|
|
)
|
|
type = fields.Selection(
|
|
track_visibility="onchange",
|
|
)
|
|
|
|
@api.multi
|
|
def write(self, values):
|
|
bom_line_ids = {}
|
|
if 'bom_line_ids' in values:
|
|
for bom in self:
|
|
del_lines = []
|
|
for line in values['bom_line_ids']:
|
|
if line[0] == 2:
|
|
del_lines.append(line[1])
|
|
if del_lines:
|
|
bom.message_post_with_view(
|
|
'mrp_bom_tracking.track_bom_template',
|
|
values={
|
|
'lines': self.env["mrp.bom.line"].browse(
|
|
del_lines),
|
|
'mode': 'Removed',
|
|
},
|
|
subtype_id=self.env.ref('mail.mt_note').id,
|
|
)
|
|
bom_line_ids[bom.id] = bom.bom_line_ids
|
|
res = super(MrpBom, self).write(values)
|
|
if 'bom_line_ids' in values:
|
|
for bom in self:
|
|
new_lines = bom.bom_line_ids - bom_line_ids[bom.id]
|
|
if new_lines:
|
|
bom.message_post_with_view(
|
|
'mrp_bom_tracking.track_bom_template',
|
|
values={
|
|
'lines': new_lines,
|
|
'mode': 'New',
|
|
},
|
|
subtype_id=self.env.ref('mail.mt_note').id,
|
|
)
|
|
return res
|
|
|
|
|
|
class MrpBomLine(models.Model):
|
|
_inherit = "mrp.bom.line"
|
|
|
|
@api.multi
|
|
def write(self, values):
|
|
if 'product_id' in values:
|
|
for bom in self.mapped('bom_id'):
|
|
lines = self.filtered(lambda l: l.bom_id == bom)
|
|
product_id = values.get('product_id')
|
|
if product_id:
|
|
product_id = self.env["product.product"].browse(
|
|
product_id)
|
|
product_id = product_id or lines.product_id
|
|
if lines:
|
|
bom.message_post_with_view(
|
|
'mrp_bom_tracking.track_bom_template_2',
|
|
values={
|
|
'lines': lines,
|
|
'product_id': product_id,
|
|
},
|
|
subtype_id=self.env.ref('mail.mt_note').id,
|
|
)
|
|
elif 'product_qty' in values or 'product_uom_id' in values:
|
|
for bom in self.mapped('bom_id'):
|
|
lines = self.filtered(lambda l: l.bom_id == bom)
|
|
if lines:
|
|
product_qty = values.get(
|
|
'product_qty') or lines.product_qty
|
|
product_uom_id = values.get('product_uom_id')
|
|
if product_uom_id:
|
|
product_uom_id = self.env["product.uom"].browse(
|
|
product_uom_id)
|
|
product_uom_id = product_uom_id or lines.product_uom_id
|
|
bom.message_post_with_view(
|
|
'mrp_bom_tracking.track_bom_line_template',
|
|
values={
|
|
'lines': lines,
|
|
'product_qty': product_qty,
|
|
'product_uom_id': product_uom_id,
|
|
},
|
|
subtype_id=self.env.ref('mail.mt_note').id,
|
|
)
|
|
return super(MrpBomLine, self).write(values)
|