diff --git a/maintenance.py b/maintenance.py index c9a9063..dbafdac 100644 --- a/maintenance.py +++ b/maintenance.py @@ -5,7 +5,7 @@ from trytond.model import ( from trytond.wizard import ( Button, StateAction, StateTransition, StateView, Wizard) from trytond.transaction import Transaction -from trytond.pyson import Bool, Eval, If, Id +from trytond.pyson import Bool, Eval, If, Id, Equal from trytond.pool import Pool from trytond.modules.currency.fields import Monetary from trytond.modules.product import price_digits @@ -238,6 +238,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): ('propietary_address', '=', Eval('propietary_address'))], states=_states, depends=['service_maintenance']) + equipment_calibrate = fields.Boolean("Calibrate Equipment", states={'readonly': False}) #when the maintenance is in agended status diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary') #Preventive maintenance @@ -253,10 +254,11 @@ class Maintenance(Workflow, ModelSQL, ModelView): patterns_equipments = fields.Char("K Pattern", states={'readonly': True}, depends=['equipment']) lines_calibration = fields.One2Many('optical_equipment.maintenance.calibration_sample', 'maintenance', "Lines of Calibration", - states={'readonly': Eval('state') == 'finished'}) - + states={'readonly': Eval('state') == 'finished', + 'required': Eval('equipment_calibrate')}) calibration_total = fields.One2Many('optical_equipment.maintenance.calibration', 'maintenance', "Calibration Total", - states={'readonly': Eval('state') == 'finished'}) + states={'readonly': Eval('state') == 'finished', + 'required': Eval('equipment_calibrate')}) maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines') description_activity = fields.Char('Activity') next_maintenance = fields.Function(fields.Date('Next Maintenance'), 'get_next_maintenance') @@ -267,8 +269,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): domain=[('category', '=', Id('optical_equipment', "uom_cat_temperature"))], states={'invisible': If(Eval('temperature_min') == None, True), 'readonly' : (Eval('state') == 'finished')}, - depends=['itemperature_min'] - ) + depends=['itemperature_min']) moisture_min = fields.Float("Moisture Min") moisture_max = fields.Float("Moisture Max") moisture_uom = fields.Many2One('product.uom', "Moisture UOM", @@ -303,6 +304,12 @@ class Maintenance(Workflow, ModelSQL, ModelView): }), ('//page[@id="corrective"]', 'states',{ 'invisible': If(Eval('maintenance_type') != 'corrective', True), + }), + ('//page[@id="calibration"]', 'states',{ + 'invisible': ~Eval('equipment_calibrate'), + }), + ('//page[@id="graph"]', 'states',{ + 'invisible': ~Eval('equipment_calibrate'), }) ] @@ -531,8 +538,10 @@ class Maintenance(Workflow, ModelSQL, ModelView): def on_change_equipment(self): if self.equipment and self.equipment.product.calibration: self.patterns_equipments = self.equipment.product.k_pattern + self.equipment_calibrate = self.equipment.product.calibration else: self.patterns_equipments = None + self.equipment_calibrate = False @classmethod @ModelView.button @@ -684,11 +693,12 @@ class CalibrationSample(sequence_ordered(), ModelView, ModelSQL): __name__ = 'optical_equipment.maintenance.calibration_sample' - maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance', - ondelete='CASCADE') - product = fields.Function(fields.Integer("Product ID"), 'get_product_id') + maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance') + product = fields.Function(fields.Integer("Product ID"), 'on_change_with_product') number_sample = fields.Float("Sample #", _digits) - value_patterns = fields.Many2One('optical_equipment.product_pattern', "Value Pattern", ondelete='RESTRICT', required=True) + value_patterns = fields.Many2One('optical_equipment.product_pattern', "Value Pattern", ondelete='RESTRICT', required=True, + domain=[('product', '=', Eval('product'))], + depends=['product']) value_equipment = fields.Float("Value in Equipment", _digits, required=True, states={'readonly': Eval('value_patterns') == None}) mistake = fields.Float("Mistake", _digits) @@ -697,14 +707,12 @@ class CalibrationSample(sequence_ordered(), ModelView, ModelSQL): depends=['mistake']) - @fields.depends('maintenance', 'product') - def get_product_id(self, name): - product = None - if self.maintenance and self.maintenance.equipment: - product = self.maintenance.equipment.product.id - - return product - + + @fields.depends('maintenance', '_parent_maintenance.equipment') + def on_change_with_product(self, name=None): + if self.maintenance: + return self.maintenance.equipment.product.template.id + @fields.depends('value_patterns', 'value_equipment', 'mistake', 'mistake_rate') def on_change_value_equipment(self): diff --git a/view/maintenance_form.xml b/view/maintenance_form.xml index bf10a6b..e756537 100644 --- a/view/maintenance_form.xml +++ b/view/maintenance_form.xml @@ -16,6 +16,8 @@