first commit
This commit is contained in:
54
modules/production_routing/production.py
Normal file
54
modules/production_routing/production.py
Normal file
@@ -0,0 +1,54 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.pyson import Eval, If
|
||||
|
||||
|
||||
class BOM(metaclass=PoolMeta):
|
||||
__name__ = 'production.bom'
|
||||
|
||||
routings = fields.Many2Many(
|
||||
'production.routing-production.bom', 'bom', 'routing', "Routings")
|
||||
|
||||
|
||||
class Production(metaclass=PoolMeta):
|
||||
__name__ = 'production'
|
||||
routing = fields.Many2One('production.routing', 'Routing',
|
||||
domain=[
|
||||
If(Eval('state').in_(['request', 'draft']),
|
||||
('boms', '=', Eval('bom', 0)),
|
||||
()),
|
||||
],
|
||||
states={
|
||||
'readonly': ~Eval('state').in_(['request', 'draft']),
|
||||
'invisible': ~Eval('bom'),
|
||||
})
|
||||
|
||||
@fields.depends('bom', 'routing')
|
||||
def on_change_bom(self):
|
||||
super().on_change_bom()
|
||||
if self.bom:
|
||||
if self.routing:
|
||||
if self.bom not in self.routing.boms:
|
||||
self.routing = None
|
||||
else:
|
||||
self.routing = None
|
||||
|
||||
@fields.depends('routing')
|
||||
def compute_lead_time(self, pattern=None):
|
||||
pattern = pattern.copy() if pattern is not None else {}
|
||||
pattern.setdefault(
|
||||
'routing', self.routing.id if self.routing else None)
|
||||
return super().compute_lead_time(pattern=pattern)
|
||||
|
||||
@classmethod
|
||||
def compute_request(
|
||||
cls, product, warehouse, quantity, date, company,
|
||||
order_point=None, bom_pattern=None):
|
||||
production = super().compute_request(
|
||||
product, warehouse, quantity, date, company,
|
||||
order_point=order_point, bom_pattern=bom_pattern)
|
||||
if bom := product.get_bom(bom_pattern):
|
||||
production.routing = bom.routing
|
||||
return production
|
||||
Reference in New Issue
Block a user