From 9493d39b9f72055df58cb5d4bd12ebee16961263 Mon Sep 17 00:00:00 2001 From: sinergia Date: Thu, 6 Oct 2022 21:19:48 -0500 Subject: [PATCH] changes finished --- maintenance.py | 163 +++++++++++++++++--------------- product.py | 9 +- view/calibration_total_form.xml | 16 ++++ view/calibration_total_tree.xml | 1 + 4 files changed, 108 insertions(+), 81 deletions(-) diff --git a/maintenance.py b/maintenance.py index 9c4f3a6..0ab93de 100644 --- a/maintenance.py +++ b/maintenance.py @@ -150,16 +150,17 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): def finished(cls, maintenances): pass - class Maintenance(Workflow, ModelSQL, ModelView): 'Equipment Maintenance' __name__ = 'optical_equipment.maintenance' - _states={'required': True} + _states={'required': True, + 'readonly': Eval('state').in_(['finished'])} service_maintenance = fields.Many2One('optical_equipment_maintenance.service', "Maintenance Service", - ondelete='CASCADE', select=True) + ondelete='CASCADE', select=True, + states=_states) code = fields.Char( "Code", select=True,states={'readonly': True }) maintenance_type = fields.Selection([('preventive', 'Preventive'), @@ -181,16 +182,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): states=_states, depends=['service_maintenance']) #when the maintenance is in agended status - diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary', - states=_states) - #estimated_agended = fields.DateTime("Date Maintenance") - #state_agended = fields.Selection([('no_agenda', "No agenda"), - # ('agended', "Agended"), - # ('in_progress', "In progress"), - # ('finish', "Finish"), - # ('failed', "Failed")], "State Agenda") - - #technical = fields.Many2One('company.employee', "Technical") + diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary') #Preventive maintenance initial_operation = fields.Boolean("Verificiación inicial de funcionamiento") check_equipment = fields.Boolean("Revisión del Equipo") @@ -199,7 +191,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): clean_eyes = fields.Boolean("Limpieza de lentes y espejos") optical = fields.Boolean("Optical") check_calibration = fields.Boolean("Verificar Calibración") - maintenance_activity = fields.One2Many('optical_equipment_maintenance.activity', 'maintenance', "Maintenance Activitys", states=_states) + maintenance_activity = fields.One2Many('optical_equipment_maintenance.activity', 'maintenance', "Maintenance Activitys") #Calibration patterns_equipments = fields.Char("K Pattern", states={'readonly': True}, depends=['equipment']) @@ -210,21 +202,6 @@ class Maintenance(Workflow, ModelSQL, ModelView): states={'readonly': Eval('state') == 'finished'}) maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines') - """ - temperature_min = fields.Float("Temp Min") - temperature_max = fields.Float("Temp Max") - temperature_uom = fields.Many2One('product.uom', 'Temperature UOM', - domain=[('category', '=', Id('optical_equipment', "uom_cat_temperature"))], - states={'invisible' : If(Eval('temperature_min') == None, True)}, - depends=['itemperature_min']) - - moisture_min = fields.Float("Moisture Min") - moisture_max = fields.Float("Moisture Max") - 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)}, - depends=['moisture_min']) - """ @classmethod def __setup__(cls): super(Maintenance, cls).__setup__() @@ -234,7 +211,8 @@ class Maintenance(Workflow, ModelSQL, ModelView): cls._buttons.update({ 'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])}, 'finished': {'invisible': Eval('state').in_(['finished'])}, - 'calibrate': {'invisible': (Eval('lines_calibration') == () | Eval('state').in_(['finished']),)} + 'calibrate': {'invisible': (Eval('lines_calibration') == ()) | (Eval('state').in_(['finished'])), + 'depends': ['state'],} }) @classmethod @@ -273,7 +251,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): 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 = round(mt.sqrt(dev_std_square), 2) + dev_std = mt.sqrt(dev_std_square) return dev_std @@ -283,7 +261,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): uncertain type A """ n_samples = len(samples) - uncertain_type_A = round(dev_std /mt.sqrt(n_samples),2) + uncertain_type_A = dev_std /mt.sqrt(n_samples) return uncertain_type_A @@ -315,21 +293,27 @@ class Maintenance(Workflow, ModelSQL, ModelView): return uncertain_b2 def get_uncertain_b2_analog(self): - #Incertidumbre por resolución Análoga - # a contante que viene del equipo + """ + Incertidumbre por resolución Análoga + a contante que viene del equipo + """ uncertain_b2_analog = d/a * math.sqrt(3) return uncertain_b2_analog def get_uncertain_combinated(self): - #Incertidumbre Combinada + """ + Incertidumbre Combinada + """ sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2**2 uncertain_c = math.sqrt(sum_uncertain_c) return uncertain_c def get_uncertain_eff(self): - #Grados Efectivos de libertad + """ + Grados Efectivos de libertad + """ uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(sample)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2**4/U_subi)) return uncertain_eff @@ -389,40 +373,68 @@ class Maintenance(Workflow, ModelSQL, ModelView): samples = dates[pattern] U_subi = maintenance.equipment.product.Usubi uncertain_pattern = maintenance.equipment.product.uncertainy_pattern - #d_resolution = maintenance.equipment.product.d_resolution - d_resolution = 0.25 - a_resolution = maintenance.equipment.product.a_factor_resolution MEP = maintenance.equipment.product.MEP dev_std = cls.get_standard_deviation(samples) uncertain_type_A = cls.get_uncertain_type_A(samples, dev_std) - uncertain_b1 = MEP / mt.sqrt(3) k_certificated_calibration = 2 - uncertain_b1a = round(uncertain_pattern / k_certificated_calibration, 2) - uncertain_b2_digital = round(d_resolution / 2*mt.sqrt(3),2) - uncertain_b2_analog = round(d_resolution / a_resolution*mt.sqrt(3),2) - sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2_digital**2 - uncertain_c = round(mt.sqrt(sum_uncertain_c),2) - uncertain_eff = round(uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_digital**4/U_subi)),2) - t_student = round(t.ppf(1-0.025, uncertain_eff),2) + uncertain_b1 = MEP / mt.sqrt(3) #Ub1_patron a 2 Decimales + uncertain_b1a = uncertain_pattern / k_certificated_calibration #Ub1_MEP + + if maintenance.equipment.product.resolution_type == "analoga": + a_resolution = maintenance.equipment.product.analog_resolution + factor_a = maintenance.equipment.product.a_factor_resolution + uncertain_b2_analog = (a_resolution) / (factor_a*mt.sqrt(3)) + sum_uncertain_c = (uncertain_type_A**2) + (uncertain_b1**2) + (uncertain_b2_analog**2) + uncertain_c = mt.sqrt(sum_uncertain_c) + uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_analog**4/U_subi)) + elif maintenance.equipment.product.resolution_type == "digital": + d_resolution = maintenance.equipment.product.d_resolution + uncertain_b2_digital = (d_resolution) / (2*mt.sqrt(3)) + sum_uncertain_c = (uncertain_type_A**2) + (uncertain_b1**2) + (uncertain_b2_digital**2) + uncertain_c = mt.sqrt(sum_uncertain_c) + uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_digital**4/U_subi)) + + + t_student = t.ppf(1-0.025, uncertain_eff) uncertain_expanded = round((t_student * uncertain_c),2) - calibrationLineTotal = CalibrationLineTotal( - dev_std=dev_std, - uncertain_type_A=uncertain_type_A, - uncertain_pattern=uncertain_pattern, - k_c_calibration=k_certificated_calibration, - uncertain_U_b1=uncertain_b1a, - d_resolution=d_resolution, - uncertain_U_b2_dig=uncertain_b2_digital, - uncertain_U_b2_ana=uncertain_b2_analog, - uncertain_combinated=uncertain_c, - uncertain_eff=uncertain_eff, - t_student=t_student, - uncertain_expanded=uncertain_expanded - ) + if maintenance.equipment.product.resolution_type == "analoga": + calibrationLineTotal = CalibrationLineTotal( + dev_std=dev_std, + uncertain_type_A=uncertain_type_A, + uncertain_pattern=uncertain_pattern, + k_c_calibration=k_certificated_calibration, + uncertain_U_b1=uncertain_b1, + d_resolution=a_resolution, + uncertain_U_b2_dig=0, + uncertain_U_b2_ana=uncertain_b2_analog, + uncertain_combinated=uncertain_c, + uncertain_eff=uncertain_eff, + t_student=t_student, + uncertain_expanded=uncertain_expanded, + state='Aprobado' if uncertain_expanded < a_resolution else 'Rechazado' + ) + maintenance.calibration_total += (calibrationLineTotal,) + maintenance.save() - maintenance.calibration_total += (calibrationLineTotal,) - maintenance.save() + elif maintenance.equipment.product.resolution_type == "digital": + calibrationLineTotal = CalibrationLineTotal( + dev_std=dev_std, + uncertain_type_A=uncertain_type_A, + uncertain_pattern=uncertain_pattern, + k_c_calibration=k_certificated_calibration, + uncertain_U_b1=uncertain_b1, + d_resolution=d_resolution, + uncertain_U_b2_dig=uncertain_b2_digital, + uncertain_U_b2_ana=0, + uncertain_combinated=uncertain_c, + uncertain_eff=uncertain_eff, + t_student=t_student, + uncertain_expanded=uncertain_expanded, + state='Aprobado' if uncertain_expanded < d_resolution else 'Rechazado' + ) + maintenance.calibration_total += (calibrationLineTotal,) + maintenance.save() class Calibration(ModelSQL, ModelView): @@ -433,20 +445,21 @@ class Calibration(ModelSQL, ModelView): maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", ondelete="CASCADE", select=True, required=True) - dev_std = fields.Float("Standart Desviation", _digits, states=_states) - uncertain_type_A = fields.Float("Uncertain Type A", _digits, states=_states) - uncertain_pattern = fields.Float("Uncertain Pattern", _digits, states=_states) - k_c_calibration = fields.Float("K Crt Calibration", _digits,states=_states) - uncertain_U_b1 = fields.Float("U_b1", _digits, states=_states) - d_resolution = fields.Float("d_resolution", _digits, states=_states) - uncertain_U_b2_dig = fields.Float("U_b2", _digits, states=_states) - uncertain_U_b2_ana = fields.Float("U_b2", _digits, states=_states) - uncertain_combinated = fields.Float("U_combinated", _digits, states=_states) - uncertain_eff = fields.Float("U eff", _digits, states=_states) - t_student = fields.Float("T Student", _digits, states=_states) + dev_std = fields.Float("Standart Desviation", states=_states) + uncertain_type_A = fields.Float("Uncertain Type A", states=_states) + uncertain_pattern = fields.Float("Uncertain Pattern", states=_states) + k_c_calibration = fields.Float("K Crt Calibration",states=_states) + uncertain_U_b1 = fields.Float("U_b1", states=_states) + d_resolution = fields.Float("d_resolution", states=_states) + uncertain_U_b2_dig = fields.Float("U_b2", states=_states) + uncertain_U_b2_ana = fields.Float("U_b2", states=_states) + uncertain_combinated = fields.Float("U_combinated", states=_states) + uncertain_eff = fields.Float("U eff", states=_states) + t_student = fields.Float("T Student", states=_states) uncertain_expanded = fields.Float("Uexpand", _digits, states=_states) - + state = fields.Char('State') + class CalibrationSample(sequence_ordered(), ModelView, ModelSQL): 'Samples of Calibration' __name__ = 'optical_equipment.maintenance.calibration_sample' diff --git a/product.py b/product.py index ce3e9d9..da00bf5 100644 --- a/product.py +++ b/product.py @@ -169,16 +169,13 @@ class Template(metaclass=PoolMeta): states={'required': Eval('calibration', False)}, depends=['calibration']) d_resolution = fields.Float("Resolution d", - states={'invisible': If(Eval('resolution_type') != 'digital', True), - 'required': Eval('calibration', False)}, + states={'invisible': If(Eval('resolution_type') != 'digital', True)}, depends=['resolution_type']) analog_resolution = fields.Float("Analog resolution", - states={'invisible': If(Eval('resolution_type') != 'analoga', True), - 'required': Eval('calibration', False)}, + states={'invisible': If(Eval('resolution_type') != 'analoga', True),}, depends=['resolution_type']) a_factor_resolution = fields.Float("(a) Resolution", - states={'invisible': If(Eval('resolution_type') != 'analoga', True), - 'required': Eval('calibration', False)}, + states={'invisible': If(Eval('resolution_type') != 'analoga', True)}, depends=['resolution_type']) Usubi = fields.Integer("Usub i",states={'required': Eval('calibration', False)},) diff --git a/view/calibration_total_form.xml b/view/calibration_total_form.xml index 6aea585..c6511a3 100644 --- a/view/calibration_total_form.xml +++ b/view/calibration_total_form.xml @@ -12,4 +12,20 @@