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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/view/calibration_total_tree.xml b/view/calibration_total_tree.xml
index cd24f14..449facb 100644
--- a/view/calibration_total_tree.xml
+++ b/view/calibration_total_tree.xml
@@ -14,4 +14,5 @@
+