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 @@
+
+
diff --git a/view/maintenance_sample_form.xml b/view/maintenance_sample_form.xml
index 9e43770..d621da1 100644
--- a/view/maintenance_sample_form.xml
+++ b/view/maintenance_sample_form.xml
@@ -12,5 +12,9 @@
-
+
+
+
+
+