42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
#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 ModelSQL, fields
|
|
from trytond.pyson import Eval
|
|
from trytond.pool import PoolMeta
|
|
|
|
__all__ = ['Template', 'Product', 'TemplateLotType']
|
|
__metaclass__ = PoolMeta
|
|
|
|
|
|
class Template:
|
|
__name__ = 'product.template'
|
|
|
|
# TODO to replace with a Multiple Selection
|
|
lot_required = fields.Many2Many('product.template-stock.lot.type',
|
|
'template', 'type', 'Lot Required',
|
|
help='The type of location for which lot is required',
|
|
states={
|
|
'invisible': ~Eval('type').in_(['goods', 'assets']),
|
|
},
|
|
depends=['type'])
|
|
|
|
|
|
class Product:
|
|
__name__ = 'product.product'
|
|
|
|
def lot_is_required(self, from_, to):
|
|
'Is product lot required for move with "from_" and "to" location ?'
|
|
lot_required = [t.code for t in self.lot_required]
|
|
for location in (from_, to):
|
|
if location.type in lot_required:
|
|
return True
|
|
|
|
|
|
class TemplateLotType(ModelSQL):
|
|
'Template - Stock Lot Type'
|
|
__name__ = 'product.template-stock.lot.type'
|
|
|
|
template = fields.Many2One('product.template', 'Template', required=True,
|
|
select=True)
|
|
type = fields.Many2One('stock.lot.type', 'Type', required=True)
|