lims_industry/lims_sale/lims_sale_industry: fix readonly property in fields

This commit is contained in:
Adri?n Bernardi 2019-12-06 17:50:30 -03:00
parent 20e2db1bd1
commit 02f8a214be
3 changed files with 67 additions and 34 deletions

View file

@ -64,6 +64,12 @@ class Sample(metaclass=PoolMeta):
hours_oil = fields.Integer('Hs. Oil')
changed_oil = fields.Boolean('Did change Oil?')
@classmethod
def __setup__(cls):
super(Sample, cls).__setup__()
cls.product_type.states['readonly'] = True
cls.matrix.states['readonly'] = True
@fields.depends('component')
def on_change_component(self):
if self.component:
@ -178,6 +184,8 @@ class CreateSampleStart(metaclass=PoolMeta):
super(CreateSampleStart, cls).__setup__()
for field in ('component', 'comercial_product'):
cls.analysis_domain.on_change_with.add(field)
cls.product_type.states['readonly'] = True
cls.matrix.states['readonly'] = True
@fields.depends('component')
def on_change_component(self):

View file

@ -39,8 +39,12 @@ class Sale(metaclass=PoolMeta):
states={'readonly': ~Eval('state').in_(['draft', 'quotation'])},
depends=['state'])
clauses = fields.Many2Many('sale.sale-sale.clause', 'sale', 'clause',
'Clauses')
send_email = fields.Boolean('Send automatically by Email')
'Clauses',
states={'readonly': Eval('state') != 'draft'},
depends=['state'])
send_email = fields.Boolean('Send automatically by Email',
states={'readonly': Eval('state') != 'draft'},
depends=['state'])
@classmethod
def __setup__(cls):
@ -194,40 +198,55 @@ class SaleLine(metaclass=PoolMeta):
product_type = fields.Many2One('lims.product.type', 'Product type',
domain=['OR', ('id', '=', Eval('product_type')),
('id', 'in', Eval('product_type_domain'))],
depends=['product_type_domain'])
states={'readonly': Eval('sale_state') != 'draft'},
depends=['product_type_domain', 'sale_state'])
product_type_domain = fields.Function(fields.Many2Many('lims.product.type',
None, None, 'Product type domain'),
'on_change_with_product_type_domain')
matrix = fields.Many2One('lims.matrix', 'Matrix',
domain=['OR', ('id', '=', Eval('matrix')),
('id', 'in', Eval('matrix_domain'))],
depends=['matrix_domain', 'services'])
states={'readonly': Eval('sale_state') != 'draft'},
depends=['matrix_domain', 'services', 'sale_state'])
matrix_domain = fields.Function(fields.Many2Many('lims.matrix',
None, None, 'Matrix domain'), 'on_change_with_matrix_domain')
analysis = fields.Many2One('lims.analysis', 'Service',
domain=['OR', ('id', '=', Eval('analysis')),
('id', 'in', Eval('analysis_domain'))],
depends=['analysis_domain'])
states={'readonly': Eval('sale_state') != 'draft'},
depends=['analysis_domain', 'sale_state'])
analysis_domain = fields.Function(fields.Many2Many('lims.analysis',
None, None, 'Analysis domain'), 'on_change_with_analysis_domain')
method = fields.Many2One('lims.lab.method', 'Method',
domain=['OR', ('id', '=', Eval('method')),
('id', 'in', Eval('method_domain'))],
states={'invisible': Bool(Eval('method_invisible'))},
depends=['method_domain', 'method_invisible'])
states={
'invisible': Bool(Eval('method_invisible')),
'readonly': Eval('sale_state') != 'draft',
},
depends=['method_domain', 'method_invisible', 'sale_state'])
method_invisible = fields.Function(fields.Boolean('Method invisible'),
'on_change_with_method_invisible')
method_domain = fields.Function(fields.Many2Many('lims.lab.method',
None, None, 'Method domain'), 'on_change_with_method_domain')
expiration_date = fields.Date('Expiration date')
print_price = fields.Boolean('Print price on quotation')
expiration_date = fields.Date('Expiration date',
states={'readonly': Eval('sale_state') != 'draft'},
depends=['sale_state'])
print_price = fields.Boolean('Print price on quotation',
states={'readonly': Eval('sale_state') != 'draft'},
depends=['sale_state'])
print_service_detail = fields.Boolean('Print service detail',
states={'invisible': Bool(Eval('print_service_detail_invisible'))},
depends=['print_service_detail_invisible'])
states={
'invisible': Bool(Eval('print_service_detail_invisible')),
'readonly': Eval('sale_state') != 'draft',
},
depends=['print_service_detail_invisible', 'sale_state'])
print_service_detail_invisible = fields.Function(fields.Boolean(
'Print service detail invisible'),
'on_change_with_print_service_detail_invisible')
unlimited_quantity = fields.Boolean('Unlimited quantity')
unlimited_quantity = fields.Boolean('Unlimited quantity',
states={'readonly': Eval('sale_state') != 'draft'},
depends=['sale_state'])
@staticmethod
def default_product_type_domain():

View file

@ -7,7 +7,7 @@ from trytond.wizard import Wizard, StateView, StateTransition, StateReport, \
StateAction, Button
from trytond.report import Report
from trytond.pool import PoolMeta, Pool
from trytond.pyson import PYSONEncoder, Eval, And, Bool, If
from trytond.pyson import PYSONEncoder, Eval, And, Bool, If, Or
from trytond.transaction import Transaction
from trytond.exceptions import UserError
from trytond.i18n import gettext
@ -22,23 +22,26 @@ __all__ = ['Sale', 'SalePlant', 'SaleEquipment', 'SaleComponent',
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
lubrication_plan = fields.Boolean('Lubrication plan')
_states = {'readonly': Eval('state') != 'draft'}
lubrication_plan = fields.Boolean('Lubrication plan',
states=_states, depends=['state'])
plants = fields.Many2Many('sale.sale-lims.plant',
'sale', 'plant', 'Plants',
domain=[('party', '=', Eval('party'))],
depends=['party'])
states=_states, depends=['party', 'state'])
equipments = fields.Many2Many('sale.sale-lims.equipment',
'sale', 'equipment', 'Equipments',
domain=[('plant', 'in', Eval('plants'))],
depends=['plants'])
states=_states, depends=['plants', 'state'])
components = fields.Many2Many('sale.sale-lims.component',
'sale', 'component', 'Components',
domain=[('equipment', 'in', Eval('equipments'))],
depends=['equipments'])
states=_states, depends=['equipments', 'state'])
contacts = fields.Many2Many('sale.sale-party.address',
'sale', 'address', 'Contacts',
domain=[('id', 'in', Eval('contacts_domain'))],
depends=['contacts_domain'])
states=_states, depends=['contacts_domain', 'state'])
contacts_domain = fields.Function(fields.Many2Many('party.address',
None, None, 'Contacts domain'), 'on_change_with_contacts_domain')
label_from = fields.Integer('Label from', readonly=True)
@ -151,20 +154,20 @@ class SaleLine(metaclass=PoolMeta):
plants = fields.Many2Many('sale.line-lims.plant',
'line', 'plant', 'Plants',
states={
'readonly': Bool(Eval('_parent_sale', {}).get(
'plants', False)),
'readonly': Or(Eval('sale_state') != 'draft',
Bool(Eval('_parent_sale', {}).get('plants', False))),
'required': And(
Bool(Eval('_parent_sale', {}).get('lubrication_plan', False)),
Bool(Eval('analysis')),
~Bool(Eval('_parent_sale', {}).get('plants', []))),
},
domain=[('party', '=', Eval('_parent_sale', {}).get('party', None))],
depends=['_parent_sale', 'analysis'])
depends=['_parent_sale', 'analysis', 'sale_state'])
equipments = fields.Many2Many('sale.line-lims.equipment',
'line', 'equipment', 'Equipments',
states={
'readonly': Bool(Eval('_parent_sale', {}).get(
'equipments', False)),
'readonly': Or(Eval('sale_state') != 'draft',
Bool(Eval('_parent_sale', {}).get('equipments', False))),
'required': And(
Bool(Eval('_parent_sale', {}).get('lubrication_plan', False)),
Bool(Eval('analysis')),
@ -173,12 +176,12 @@ class SaleLine(metaclass=PoolMeta):
domain=[If(Bool(Eval('plants')),
('plant', 'in', Eval('plants')),
('plant', 'in', Eval('_parent_sale', {}).get('plants', [])))],
depends=['plants', '_parent_sale', 'analysis'])
depends=['plants', '_parent_sale', 'analysis', 'sale_state'])
components = fields.Many2Many('sale.line-lims.component',
'line', 'component', 'Components',
states={
'readonly': Bool(Eval('_parent_sale', {}).get(
'components', False)),
'readonly': Or(Eval('sale_state') != 'draft',
Bool(Eval('_parent_sale', {}).get('components', False))),
'required': And(
Bool(Eval('_parent_sale', {}).get('lubrication_plan', False)),
Bool(Eval('analysis')),
@ -188,25 +191,28 @@ class SaleLine(metaclass=PoolMeta):
('equipment', 'in', Eval('equipments')),
('equipment', 'in', Eval('_parent_sale', {}).get(
'equipments', [])))],
depends=['equipments', '_parent_sale', 'analysis'])
depends=['equipments', '_parent_sale', 'analysis', 'sale_state'])
label_from = fields.Integer('Label from', readonly=True,
depends=['_parent_sale'], states={
states={
'invisible': ~Bool(Eval('_parent_sale', {}).get(
'lubrication_plan', False)),
})
'readonly': Eval('sale_state') != 'draft',
},
depends=['_parent_sale', 'sale_state'])
label_to = fields.Integer('Label to', readonly=True,
depends=['_parent_sale'], states={
states={
'invisible': ~Bool(Eval('_parent_sale', {}).get(
'lubrication_plan', False)),
})
'readonly': Eval('sale_state') != 'draft',
},
depends=['_parent_sale', 'sale_state'])
@classmethod
def __setup__(cls):
super(SaleLine, cls).__setup__()
cls.expiration_date.states = {
'required': And(
cls.expiration_date.states['required'] = And(
Bool(Eval('_parent_sale', {}).get('lubrication_plan', False)),
Bool(Eval('analysis')))}
Bool(Eval('analysis')))
cls.expiration_date.depends.extend(['_parent_sale', 'analysis'])
@classmethod