diff --git a/maintenance.py b/maintenance.py index af19563..0917763 100644 --- a/maintenance.py +++ b/maintenance.py @@ -69,7 +69,32 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): ], "State", required=True, readonly=True, sort=True) rec_name = fields.Function(fields.Char('rec_name'), 'get_rec_name') - + temperature_min = fields.Float("Temp Min", states={ + 'readonly': If(Eval('state') == 'finished', True), + 'required': If(Eval('state') == 'in_progress', True)}) + temperature_max = fields.Float("Temp Max", states={ + 'readonly': If(Eval('state') == 'finished', True), + 'required': If(Eval('state') == 'in_progress', True)}) + temperature_uom = fields.Many2One('product.uom', 'Temperature UOM', + domain=[('category', '=', Id('optical_equipment', "uom_cat_temperature"))], + states={'invisible': If(Eval('temperature_min') == None, True), + 'readonly' : (Eval('state') == 'finished'), + 'required': If(Eval('state') == 'in_progress', True)}, + depends=['itemperature_min'] + ) + moisture_min = fields.Float("Moisture Min", states={ + 'readonly': If(Eval('state') == 'finished', True), + 'required': If(Eval('state') == 'in_progress', True)}) + moisture_max = fields.Float("Moisture Max", states={ + 'readonly': If(Eval('state') == 'finished', True), + 'required': If(Eval('state') == 'in_progress', True)}) + moisture_uom = fields.Many2One('product.uom', "Moisture UOM", + domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))], + states={'invisible' : If(Eval('moisture_min') == None, True), + 'readonly': Eval('state') == 'finished', + 'required': If(Eval('state') == 'in_progress', True)}, + depends=['moisture_min']) + @fields.depends('maintenance_type', 'code') def get_rec_name(self, name): if self.maintenance_type and self.code: @@ -107,7 +132,21 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): @classmethod def default_state(self): return 'draft' - + + @fields.depends('temperature_min', 'temperature_uom') + def on_change_temperature_min(self): + if self.temperature_min: + pool = Pool() + Measurements = pool.get('product.uom') + self.temperature_uom = Measurements.search(['name', '=', 'Celsius'])[0].id + + + @fields.depends('moisture_min', 'moisture_uom') + def on_change_moisture_min(self): + pool = Pool() + Measurements = pool.get('product.uom') + self.moisture_uom = Measurements.search(['name', '=', 'Relative Humedity'])[0].id + @classmethod def _get_origin(cls): 'Return list of Model names for origin Reference' @@ -236,7 +275,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): states={'invisible' : If(Eval('moisture_min') == None, True), 'readonly': Eval('state') == 'finished'}, depends=['moisture_min'] - ) + ) graph_calibration = fields.Binary('Graphs') @@ -250,8 +289,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): cls._buttons.update({ 'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])}, 'finished': {'invisible': (Eval('state').in_(['finished'])) | - ((Eval('maintenance_type') == 'corrective') & (Eval('maintenance_lines') == ())) | - (Eval('calibration_total') == ())}, + ((Eval('maintenance_type') == 'corrective') & (Eval('maintenance_lines') == ()))}, 'calibrate': {'invisible': (Eval('lines_calibration') == ()) | (Eval('state').in_(['finished'])), 'depends': ['state'],} }) @@ -331,9 +369,9 @@ class Maintenance(Workflow, ModelSQL, ModelView): next_maintenance = None if self.service_maintenance.estimated_agended: if self.propietary.client_type == "ips": - next_maintenance = self.service_maintenance.estimated_agended + timedelta(days=365) - else: next_maintenance = self.service_maintenance.estimated_agended + timedelta(days=182) + else: + next_maintenance = self.service_maintenance.estimated_agended + timedelta(days=365) return next_maintenance def get_standard_deviation(samples): @@ -467,8 +505,26 @@ class Maintenance(Workflow, ModelSQL, ModelView): @fields.depends('service_maintenance') def on_change_service_maintenance(self): - self.propietary = self.service_maintenance.propietary - self.propietary_address = self.service_maintenance.propietary_address + if self.service_maintenance: + self.propietary = self.service_maintenance.propietary + self.propietary_address = self.service_maintenance.propietary_address + service = self.service_maintenance + self.temperature_min = service.temperature_min + self.temperature_max = service.temperature_max + self.temperature_uom = service.temperature_uom + self.moisture_min = service.moisture_min + self.moisture_max = service.moisture_max + self.moisture_uom = service.moisture_uom + else: + self.propietary = None + self.propietary_address = None + self.temperature_min = None + self.temperature_max = None + self.temperature_uom = None + self.moisture_min = None + self.moisture_max = None + self.moisture_uom = None + @fields.depends('equipment', 'patterns_equipments') def on_change_equipment(self): @@ -488,7 +544,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): @Workflow.transition('finished') def finished(cls, maintenances): for maintenance in maintenances: - if maintenance.calibration_total == (): + if maintenance.equipment.product.calibration and maintenance.calibration_total == (): raise UserError("No puede finalizar este mantenimiento sin una calibración") else: maintenance.state = 'finished' @@ -891,9 +947,9 @@ class CreateContractInitial(ModelView, ModelSQL): if self.party: self.invoice_address = self.party.address_get(type='invoice') if self.party.client_type == "ips": - self.end_date = Date.today() + timedelta(days=365) - else: self.end_date = Date.today() + timedelta(days=182) + else: + self.end_date = Date.today() + timedelta(days=365) class CreateContract(Wizard): diff --git a/maintenance.xml b/maintenance.xml index d514ec5..466357e 100644 --- a/maintenance.xml +++ b/maintenance.xml @@ -236,18 +236,6 @@ optical_equipment.maintenance,-1 - - Capacitation - optical_equipment_maintenance.service - optical_equipment_maintenance.service - optical_equipment/report/Capacitation.fodt - - - - form_print - optical_equipment_maintenance.service,-1 - - Maintenance Service optical_equipment.maintenance @@ -261,15 +249,15 @@ - Maintenance Service - optical_equipment.maintenance - optical_equipment.maintenance + Time Line Maintenance Service + optical_equipment_maintenance.service + optical_equipment_maintenance.service optical_equipment/report/Maintenance_Timeline.fodt form_print - optical_equipment.maintenance,-1 + optical_equipment_maintenance.service,-1 stock.shipment.out,-1 + + Capacitation + stock.shipment.out + stock.shipment.out + optical_equipment/report/Capacitation.fodt + + + + form_print + stock.shipment.out,-1 + + diff --git a/view/maintenance_service_form.xml b/view/maintenance_service_form.xml index 73965ec..ae83528 100644 --- a/view/maintenance_service_form.xml +++ b/view/maintenance_service_form.xml @@ -21,6 +21,18 @@