Se limpia la casa
This commit is contained in:
parent
659f08cbf6
commit
b7dd21f7a6
119
maintenance.py
119
maintenance.py
@ -5,7 +5,7 @@ from trytond.model import (
|
||||
from trytond.wizard import (
|
||||
Button, StateAction, StateTransition, StateView, Wizard)
|
||||
from trytond.modules.company import CompanyReport
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pyson import Bool, Eval, If, Id, Equal
|
||||
from trytond.pool import Pool
|
||||
from trytond.modules.currency.fields import Monetary
|
||||
@ -19,10 +19,10 @@ import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import math as mt
|
||||
|
||||
from io import BytesIO
|
||||
from io import BytesIO
|
||||
from trytond.exceptions import UserError
|
||||
|
||||
_digits = (16, 2)
|
||||
_digits = (16, 2)
|
||||
|
||||
|
||||
class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
@ -31,32 +31,38 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
_rec_name = 'rec_name'
|
||||
_order_name = 'code'
|
||||
|
||||
|
||||
_states = {'readonly': If(Eval('state') != 'draft', True)}
|
||||
|
||||
|
||||
code = fields.Char("Code", readonly=True, select=True)
|
||||
reference = fields.Char("Reference", select=True,
|
||||
help="The identification of an external origin.")
|
||||
description = fields.Char("Description",states=_states)
|
||||
help="The identification of an external origin.")
|
||||
description = fields.Char("Description", states=_states)
|
||||
sale_date = fields.Char("Sale Date")
|
||||
contract_origin = fields.Reference("Contract Base", selection='get_origin_contract', select=True,
|
||||
states={'readonly': If(Eval('state') == 'finished', True)})
|
||||
sale_origin = fields.Reference("Sale Origin", selection='get_origin', select=True,
|
||||
states={'readonly': True})
|
||||
contract_origin = fields.Reference(
|
||||
"Contract Base", selection='get_origin_contract', select=True,
|
||||
states={'readonly': If(Eval('state') == 'finished', True)})
|
||||
sale_origin = fields.Reference(
|
||||
"Sale Origin", selection='get_origin', select=True,
|
||||
states={'readonly': True})
|
||||
company = fields.Many2One('company.company', "Company", readonly=True)
|
||||
maintenance_type = fields.Selection([('initial','Initial'),
|
||||
maintenance_type = fields.Selection([('initial', 'Initial'),
|
||||
('preventive', 'Preventive'),
|
||||
('corrective', 'Corrective')
|
||||
], "Maintenance Type", states=_states)
|
||||
propietary = fields.Many2One('party.party', "Propietary", required=True, states=_states)
|
||||
propietary_address = fields.Many2One('party.address', "Propietary Address", required=True,
|
||||
domain=[('party', '=', Eval('propietary'))],
|
||||
states=_states)
|
||||
lines = fields.One2Many('optical_equipment.maintenance', 'service_maintenance', "Lines")
|
||||
propietary = fields.Many2One('party.party', "Propietary", required=True,
|
||||
states=_states)
|
||||
propietary_address = fields.Many2One(
|
||||
'party.address', "Propietary Address", required=True,
|
||||
domain=[('party', '=', Eval('propietary'))],
|
||||
states=_states)
|
||||
lines = fields.One2Many(
|
||||
'optical_equipment.maintenance', 'service_maintenance', "Lines")
|
||||
estimated_agended = fields.DateTime("Date Maintenance", readonly=True)
|
||||
current_agended = fields.Many2One('optical_equipment_maintenance.diary', "Current Agended",
|
||||
states=_states)
|
||||
history_agended = fields.Many2Many('optical_equipment_maintenance.service-maintenance.diary', 'maintenance_service', 'agended', "History Agended", readonly=True)
|
||||
current_agended = fields.Many2One(
|
||||
'optical_equipment_maintenance.diary', "Current Agended",
|
||||
states=_states)
|
||||
history_agended = fields.Many2Many(
|
||||
'optical_equipment_maintenance.service-maintenance.diary', 'maintenance_service', 'agended', "History Agended", readonly=True)
|
||||
state_agended = fields.Selection([('no_agenda', "No agenda"),
|
||||
('agended', "Agended"),
|
||||
('in_progress', "In progress"),
|
||||
@ -79,7 +85,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
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'),
|
||||
'readonly': (Eval('state') == 'finished'),
|
||||
'required': If(Eval('state') == 'in_progress', True)},)
|
||||
moisture_min = fields.Float("Moisture Min", states={
|
||||
'readonly': If(Eval('state') == 'finished', True),
|
||||
@ -88,18 +94,18 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
'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)},)
|
||||
|
||||
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)},)
|
||||
|
||||
@fields.depends('maintenance_type', 'code')
|
||||
def get_rec_name(self, name):
|
||||
if self.maintenance_type and self.code:
|
||||
name = str(self.maintenance_type) + '@' + str(self.code)
|
||||
else:
|
||||
name = str(self.maintenance_type) + '@' + 'Borrador'
|
||||
|
||||
|
||||
return name
|
||||
|
||||
@classmethod
|
||||
@ -123,7 +129,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
@staticmethod
|
||||
def default_company():
|
||||
return Transaction().context.get('company')
|
||||
|
||||
|
||||
@staticmethod
|
||||
def default_temperature_min():
|
||||
pool = Pool()
|
||||
@ -141,7 +147,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
temperature_max = config.temperature_max
|
||||
|
||||
return temperature_max
|
||||
|
||||
|
||||
@staticmethod
|
||||
def default_moisture_min():
|
||||
pool = Pool()
|
||||
@ -159,7 +165,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
temperature_uom = config.temperature_uom.id
|
||||
|
||||
return temperature_uom
|
||||
|
||||
|
||||
@staticmethod
|
||||
def default_moisture_uom():
|
||||
pool = Pool()
|
||||
@ -168,7 +174,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
moisture_uom = config.moisture_uom.id
|
||||
|
||||
return moisture_uom
|
||||
|
||||
|
||||
@staticmethod
|
||||
def default_moisture_max():
|
||||
pool = Pool()
|
||||
@ -177,7 +183,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
moisture_max = config.moisture_max
|
||||
|
||||
return moisture_max
|
||||
|
||||
|
||||
@classmethod
|
||||
def default_maintenance_type(self):
|
||||
return 'preventive'
|
||||
@ -198,7 +204,7 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
SaleLine = pool.get('sale.line')
|
||||
|
||||
return [Sale.__name__, SaleLine.__name__]
|
||||
|
||||
|
||||
@classmethod
|
||||
def get_origin(cls):
|
||||
Model = Pool().get('ir.model')
|
||||
@ -215,7 +221,6 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
|
||||
return [Contract.__name__]
|
||||
|
||||
|
||||
@classmethod
|
||||
def get_origin_contract(cls):
|
||||
Model = Pool().get('ir.model')
|
||||
@ -238,7 +243,6 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
raise UserError(str('Validation Error'))
|
||||
else:
|
||||
raise UserError(gettext('optical_equipment.msg_not_sequence_equipment'))
|
||||
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action(
|
||||
@ -260,7 +264,6 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
maintenance.current_agended.state = 'in_progress'
|
||||
maintenance.current_agended.save()
|
||||
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('finished')
|
||||
@ -270,21 +273,20 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
maintenance.current_agended.save()
|
||||
|
||||
|
||||
|
||||
class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
'Equipment Maintenance Line'
|
||||
__name__ = 'optical_equipment.maintenance'
|
||||
#_rec_name = 'rec_name'
|
||||
_states={'required': True,
|
||||
'readonly': Eval('state').in_(['finished'])}
|
||||
# _rec_name = 'rec_name'
|
||||
_states = {'required': True,
|
||||
'readonly': Eval('state').in_(['finished'])}
|
||||
|
||||
service_maintenance = fields.Many2One('optical_equipment_maintenance.service', "Maintenance Service",
|
||||
ondelete='CASCADE', select=True,
|
||||
domain=[('state', 'in', ['draft','in_progress', 'finished']),
|
||||
domain=[('state', 'in', ['draft', 'in_progress', 'finished']),
|
||||
('propietary', '=', Eval('propietary'))],
|
||||
states=_states)
|
||||
code = fields.Char(
|
||||
"Code", select=True,states={'readonly': True })
|
||||
"Code", select=True, states={'readonly': True})
|
||||
maintenance_type = fields.Selection([('initial', 'Initial'),
|
||||
('preventive', 'Preventive'),
|
||||
('corrective', 'Corrective')], "Maintenance Type", states=_states)
|
||||
@ -343,13 +345,12 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
# name = str(self.maintenance_type) + '@' + str(self.code)
|
||||
# else:
|
||||
# name = str(self.maintenance_type) + '@' + 'Borrador'
|
||||
|
||||
# return name
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(MaintenanceServiceLine, cls).__setup__()
|
||||
cls._transitions.update({
|
||||
cls._transitions.update({
|
||||
('draft', 'finished')
|
||||
})
|
||||
cls._buttons.update({
|
||||
@ -382,7 +383,7 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
@staticmethod
|
||||
def default_company():
|
||||
return Transaction().context.get('company')
|
||||
|
||||
|
||||
@classmethod
|
||||
def default_state(cls):
|
||||
return 'draft'
|
||||
@ -400,16 +401,14 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
if self.temperature_min:
|
||||
pool = Pool()
|
||||
Measurements = pool.get('product.uom')
|
||||
self.temperature_uom = Measurements.search(['name', '=', 'Celsius'])[0].id
|
||||
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
|
||||
|
||||
|
||||
@fields.depends('service_maintenance')
|
||||
def on_change_service_maintenance(self):
|
||||
if self.service_maintenance:
|
||||
@ -424,20 +423,20 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
self.moisture_uom = service.moisture_uom
|
||||
else:
|
||||
self.propietary = None
|
||||
self.propietary_address = 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
|
||||
self.moisture_uom = None
|
||||
|
||||
@fields.depends('equipment', 'patterns_equipments')
|
||||
def on_change_equipment(self):
|
||||
if self.equipment:
|
||||
self.patterns_equipments = self.equipment.product.k_pattern
|
||||
self.equipment_calibrate = self.equipment.product.calibration
|
||||
self.initial_operation = self.equipment.product.initial_operation
|
||||
self.initial_operation = self.equipment.product.initial_operation
|
||||
self.check_equipment = self.equipment.product.check_equipment
|
||||
self.check_electric_system = self.equipment.product.check_electric_system
|
||||
self.clean_int_ext = self.equipment.product.clean_int_ext
|
||||
@ -452,7 +451,7 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
self.clean_int_ext = False
|
||||
self.clean_eyes = False
|
||||
self.check_calibration = False
|
||||
|
||||
|
||||
def get_next_maintenance(self, action):
|
||||
next_maintenance = None
|
||||
if self.service_maintenance.estimated_agended:
|
||||
@ -470,7 +469,7 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
sum_samples = sum(samples)
|
||||
n_samples = len(samples)
|
||||
mean = sum_samples / n_samples
|
||||
dev_std_square = sum((l-mean)**2 for l in samples) / (n_samples -1)
|
||||
dev_std_square = sum((l-mean)**2 for l in samples) / (n_samples - 1)
|
||||
dev_std = mt.sqrt(dev_std_square)
|
||||
|
||||
return dev_std
|
||||
@ -495,7 +494,7 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
|
||||
def get_k_certificated_calibration(self):
|
||||
k_certificated_calibration = 2
|
||||
|
||||
|
||||
return k_certicated_calibration
|
||||
|
||||
def get_uncertain_U_b1(self):
|
||||
@ -731,7 +730,7 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView):
|
||||
maintenance.graph_calibration = image
|
||||
maintenance.save()
|
||||
|
||||
|
||||
|
||||
class MaintenanceLine(ModelSQL, ModelView):
|
||||
'Maintenance Line'
|
||||
__name__ = 'optical_equipment.maintenance.line'
|
||||
@ -787,7 +786,7 @@ class MaintenanceLine(ModelSQL, ModelView):
|
||||
if not self.replacement:
|
||||
self.unit = None
|
||||
return
|
||||
|
||||
|
||||
if not self.unit or self.unit.category != category:
|
||||
self.unit = self.replacement.sale_uom
|
||||
|
||||
@ -802,8 +801,8 @@ class MaintenanceLine(ModelSQL, ModelView):
|
||||
self.quantity = 1
|
||||
if not self.unit or self.unit.category != category:
|
||||
self.unit = self.maintenance_activity.sale_uom
|
||||
|
||||
|
||||
|
||||
|
||||
class MaintenanceActivity(ModelView, ModelSQL):
|
||||
'Maintenance Activitys'
|
||||
__name__ = 'optical_equipment_maintenance.activity'
|
||||
@ -846,7 +845,7 @@ class NewPropietaryMaintenance(Wizard):
|
||||
Button('Create', 'change_propietary', 'tryton-ok', default=True),
|
||||
])
|
||||
change_propietary = StateAction('optical_equipment.act_optical_equipment_form')
|
||||
|
||||
|
||||
def do_change_propietary(self, action):
|
||||
old_propietary = self.start.old_propietary
|
||||
services = self.start.maintenance_service
|
||||
@ -861,7 +860,7 @@ class NewPropietaryMaintenance(Wizard):
|
||||
maintenance.propietary = new_propietary
|
||||
maintenance.propietary_address = new_address
|
||||
maintenance.save()
|
||||
|
||||
|
||||
|
||||
class MaintenanceServiceReport(CompanyReport):
|
||||
__name__ = 'optical_equipment_maintenance.service'
|
||||
|
Loading…
Reference in New Issue
Block a user