changes finished

This commit is contained in:
sinergia 2022-10-06 21:19:48 -05:00
parent 221c887cb6
commit 9493d39b9f
4 changed files with 108 additions and 81 deletions

View File

@ -150,16 +150,17 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
def finished(cls, maintenances): def finished(cls, maintenances):
pass pass
class Maintenance(Workflow, ModelSQL, ModelView): class Maintenance(Workflow, ModelSQL, ModelView):
'Equipment Maintenance' 'Equipment Maintenance'
__name__ = 'optical_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", service_maintenance = fields.Many2One('optical_equipment_maintenance.service', "Maintenance Service",
ondelete='CASCADE', select=True) ondelete='CASCADE', select=True,
states=_states)
code = fields.Char( code = fields.Char(
"Code", select=True,states={'readonly': True }) "Code", select=True,states={'readonly': True })
maintenance_type = fields.Selection([('preventive', 'Preventive'), maintenance_type = fields.Selection([('preventive', 'Preventive'),
@ -181,16 +182,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
states=_states, states=_states,
depends=['service_maintenance']) depends=['service_maintenance'])
#when the maintenance is in agended status #when the maintenance is in agended status
diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary', 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")
#Preventive maintenance #Preventive maintenance
initial_operation = fields.Boolean("Verificiación inicial de funcionamiento") initial_operation = fields.Boolean("Verificiación inicial de funcionamiento")
check_equipment = fields.Boolean("Revisión del Equipo") 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") clean_eyes = fields.Boolean("Limpieza de lentes y espejos")
optical = fields.Boolean("Optical") optical = fields.Boolean("Optical")
check_calibration = fields.Boolean("Verificar Calibración") 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 #Calibration
patterns_equipments = fields.Char("K Pattern", states={'readonly': True}, patterns_equipments = fields.Char("K Pattern", states={'readonly': True},
depends=['equipment']) depends=['equipment'])
@ -210,21 +202,6 @@ class Maintenance(Workflow, ModelSQL, ModelView):
states={'readonly': Eval('state') == 'finished'}) states={'readonly': Eval('state') == 'finished'})
maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines') 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 @classmethod
def __setup__(cls): def __setup__(cls):
super(Maintenance, cls).__setup__() super(Maintenance, cls).__setup__()
@ -234,7 +211,8 @@ class Maintenance(Workflow, ModelSQL, ModelView):
cls._buttons.update({ cls._buttons.update({
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])}, 'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
'finished': {'invisible': Eval('state').in_(['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 @classmethod
@ -273,7 +251,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
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 = round(mt.sqrt(dev_std_square), 2) dev_std = mt.sqrt(dev_std_square)
return dev_std return dev_std
@ -283,7 +261,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
uncertain type A uncertain type A
""" """
n_samples = len(samples) 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 return uncertain_type_A
@ -315,21 +293,27 @@ class Maintenance(Workflow, ModelSQL, ModelView):
return uncertain_b2 return uncertain_b2
def get_uncertain_b2_analog(self): 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) uncertain_b2_analog = d/a * math.sqrt(3)
return uncertain_b2_analog return uncertain_b2_analog
def get_uncertain_combinated(self): def get_uncertain_combinated(self):
#Incertidumbre Combinada """
Incertidumbre Combinada
"""
sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2**2 sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2**2
uncertain_c = math.sqrt(sum_uncertain_c) uncertain_c = math.sqrt(sum_uncertain_c)
return uncertain_c return uncertain_c
def get_uncertain_eff(self): 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)) 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 return uncertain_eff
@ -389,40 +373,68 @@ class Maintenance(Workflow, ModelSQL, ModelView):
samples = dates[pattern] samples = dates[pattern]
U_subi = maintenance.equipment.product.Usubi U_subi = maintenance.equipment.product.Usubi
uncertain_pattern = maintenance.equipment.product.uncertainy_pattern 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 MEP = maintenance.equipment.product.MEP
dev_std = cls.get_standard_deviation(samples) dev_std = cls.get_standard_deviation(samples)
uncertain_type_A = cls.get_uncertain_type_A(samples, dev_std) uncertain_type_A = cls.get_uncertain_type_A(samples, dev_std)
uncertain_b1 = MEP / mt.sqrt(3)
k_certificated_calibration = 2 k_certificated_calibration = 2
uncertain_b1a = round(uncertain_pattern / k_certificated_calibration, 2) uncertain_b1 = MEP / mt.sqrt(3) #Ub1_patron a 2 Decimales
uncertain_b2_digital = round(d_resolution / 2*mt.sqrt(3),2) uncertain_b1a = uncertain_pattern / k_certificated_calibration #Ub1_MEP
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 if maintenance.equipment.product.resolution_type == "analoga":
uncertain_c = round(mt.sqrt(sum_uncertain_c),2) a_resolution = maintenance.equipment.product.analog_resolution
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) factor_a = maintenance.equipment.product.a_factor_resolution
t_student = round(t.ppf(1-0.025, uncertain_eff),2) 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) uncertain_expanded = round((t_student * uncertain_c),2)
calibrationLineTotal = CalibrationLineTotal( if maintenance.equipment.product.resolution_type == "analoga":
dev_std=dev_std, calibrationLineTotal = CalibrationLineTotal(
uncertain_type_A=uncertain_type_A, dev_std=dev_std,
uncertain_pattern=uncertain_pattern, uncertain_type_A=uncertain_type_A,
k_c_calibration=k_certificated_calibration, uncertain_pattern=uncertain_pattern,
uncertain_U_b1=uncertain_b1a, k_c_calibration=k_certificated_calibration,
d_resolution=d_resolution, uncertain_U_b1=uncertain_b1,
uncertain_U_b2_dig=uncertain_b2_digital, d_resolution=a_resolution,
uncertain_U_b2_ana=uncertain_b2_analog, uncertain_U_b2_dig=0,
uncertain_combinated=uncertain_c, uncertain_U_b2_ana=uncertain_b2_analog,
uncertain_eff=uncertain_eff, uncertain_combinated=uncertain_c,
t_student=t_student, uncertain_eff=uncertain_eff,
uncertain_expanded=uncertain_expanded 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,) elif maintenance.equipment.product.resolution_type == "digital":
maintenance.save() 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): class Calibration(ModelSQL, ModelView):
@ -433,20 +445,21 @@ class Calibration(ModelSQL, ModelView):
maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", ondelete="CASCADE", maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", ondelete="CASCADE",
select=True, required=True) select=True, required=True)
dev_std = fields.Float("Standart Desviation", _digits, states=_states) dev_std = fields.Float("Standart Desviation", states=_states)
uncertain_type_A = fields.Float("Uncertain Type A", _digits, states=_states) uncertain_type_A = fields.Float("Uncertain Type A", states=_states)
uncertain_pattern = fields.Float("Uncertain Pattern", _digits, states=_states) uncertain_pattern = fields.Float("Uncertain Pattern", states=_states)
k_c_calibration = fields.Float("K Crt Calibration", _digits,states=_states) k_c_calibration = fields.Float("K Crt Calibration",states=_states)
uncertain_U_b1 = fields.Float("U_b1", _digits, states=_states) uncertain_U_b1 = fields.Float("U_b1", states=_states)
d_resolution = fields.Float("d_resolution", _digits, states=_states) d_resolution = fields.Float("d_resolution", states=_states)
uncertain_U_b2_dig = fields.Float("U_b2", _digits, states=_states) uncertain_U_b2_dig = fields.Float("U_b2", states=_states)
uncertain_U_b2_ana = fields.Float("U_b2", _digits, states=_states) uncertain_U_b2_ana = fields.Float("U_b2", states=_states)
uncertain_combinated = fields.Float("U_combinated", _digits, states=_states) uncertain_combinated = fields.Float("U_combinated", states=_states)
uncertain_eff = fields.Float("U eff", _digits, states=_states) uncertain_eff = fields.Float("U eff", states=_states)
t_student = fields.Float("T Student", _digits, states=_states) t_student = fields.Float("T Student", states=_states)
uncertain_expanded = fields.Float("Uexpand", _digits, states=_states) uncertain_expanded = fields.Float("Uexpand", _digits, states=_states)
state = fields.Char('State')
class CalibrationSample(sequence_ordered(), ModelView, ModelSQL): class CalibrationSample(sequence_ordered(), ModelView, ModelSQL):
'Samples of Calibration' 'Samples of Calibration'
__name__ = 'optical_equipment.maintenance.calibration_sample' __name__ = 'optical_equipment.maintenance.calibration_sample'

View File

@ -169,16 +169,13 @@ class Template(metaclass=PoolMeta):
states={'required': Eval('calibration', False)}, states={'required': Eval('calibration', False)},
depends=['calibration']) depends=['calibration'])
d_resolution = fields.Float("Resolution d", d_resolution = fields.Float("Resolution d",
states={'invisible': If(Eval('resolution_type') != 'digital', True), states={'invisible': If(Eval('resolution_type') != 'digital', True)},
'required': Eval('calibration', False)},
depends=['resolution_type']) depends=['resolution_type'])
analog_resolution = fields.Float("Analog resolution", analog_resolution = fields.Float("Analog resolution",
states={'invisible': If(Eval('resolution_type') != 'analoga', True), states={'invisible': If(Eval('resolution_type') != 'analoga', True),},
'required': Eval('calibration', False)},
depends=['resolution_type']) depends=['resolution_type'])
a_factor_resolution = fields.Float("(a) Resolution", a_factor_resolution = fields.Float("(a) Resolution",
states={'invisible': If(Eval('resolution_type') != 'analoga', True), states={'invisible': If(Eval('resolution_type') != 'analoga', True)},
'required': Eval('calibration', False)},
depends=['resolution_type']) depends=['resolution_type'])
Usubi = fields.Integer("Usub i",states={'required': Eval('calibration', False)},) Usubi = fields.Integer("Usub i",states={'required': Eval('calibration', False)},)

View File

@ -12,4 +12,20 @@
<field name="k_c_calibration"/> <field name="k_c_calibration"/>
<label name="uncertain_U_b1"/> <label name="uncertain_U_b1"/>
<field name="uncertain_U_b1"/> <field name="uncertain_U_b1"/>
<label name="d_resolution"/>
<field name="d_resolution"/>
<label name="uncertain_U_b2_dig"/>
<field name="uncertain_U_b2_dig"/>
<label name="uncertain_U_b2_ana"/>
<field name="uncertain_U_b2_ana"/>
<label name="uncertain_combinated"/>
<field name="uncertain_combinated"/>
<label name="uncertain_eff"/>
<field name="uncertain_eff"/>
<label name="t_student"/>
<field name="t_student"/>
<label name="uncertain_expanded"/>
<field name="uncertain_expanded"/>
<label name="state"/>
<field name="state"/>
</form> </form>

View File

@ -14,4 +14,5 @@
<field name="uncertain_eff" expand="1"/> <field name="uncertain_eff" expand="1"/>
<field name="t_student" expand="1"/> <field name="t_student" expand="1"/>
<field name="uncertain_expanded" expand="1"/> <field name="uncertain_expanded" expand="1"/>
<field name="state" expand="1"/>
</tree> </tree>