Se limpia la casa

This commit is contained in:
sinergia 2023-09-11 10:16:25 -05:00
parent 659f08cbf6
commit b7dd21f7a6

View File

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