init model calibrations

This commit is contained in:
sinergia 2022-08-03 16:21:55 -05:00
parent 5c857d8a9e
commit 9981598350
5 changed files with 84 additions and 10 deletions

View File

@ -1,7 +1,7 @@
from collections import defaultdict from collections import defaultdict
from trytond.pool import Pool from trytond.pool import Pool
from trytond.model import ( from trytond.model import (
Workflow, ModelSQL, ModelView, Unique, fields) DeactivableMixin, Workflow, ModelSQL, ModelView, Unique, fields)
from trytond.pyson import Eval, If from trytond.pyson import Eval, If
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.i18n import gettext from trytond.i18n import gettext
@ -11,7 +11,7 @@ from trytond.exceptions import UserError
_MAINTENANCE_FREQUENCY = [("none", ''), _MAINTENANCE_FREQUENCY = [("none", ''),
("6", 'Seis Meses'), ("6", 'Seis Meses'),
("12", 'Doce Meses')] ("12", 'Doce Meses')]
class OpticalEquipment(Workflow, ModelSQL, ModelView): class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView):
'Optical Equipment' 'Optical Equipment'
__name__ = 'optical_equipment.equipment' __name__ = 'optical_equipment.equipment'

View File

@ -3,6 +3,8 @@ from trytond.model import (
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.pyson import Eval, If from trytond.pyson import Eval, If
class Maintenance(Workflow, ModelSQL, ModelView): class Maintenance(Workflow, ModelSQL, ModelView):
'Equipment Maintenance' 'Equipment Maintenance'
__name__ = 'optical_equipment.maintenance' __name__ = 'optical_equipment.maintenance'
@ -14,11 +16,13 @@ class Maintenance(Workflow, ModelSQL, ModelView):
maintenance_type = fields.Selection([('preventive', 'Preventive'), maintenance_type = fields.Selection([('preventive', 'Preventive'),
('corrective', 'Corrective') ('corrective', 'Corrective')
], "Maintenance Type") ], "Maintenance Type")
state = fields.Selection([
('draft', "Draft"), state = fields.Selection([('draft', "Draft"),
('agended', "Agended"), ('agended', "Agended"),
('in_progress', "In Progress") ('in_progress', "In Progress"),
], "State",required=True, readonly=True, sort=False) ('failed', "Failed"),
('finished', "Finished")
], "State",required=True, readonly=True, sort=False)
company = fields.Many2One('company.company', "Company", readonly=True) company = fields.Many2One('company.company', "Company", readonly=True)
propietary = fields.Many2One('party.party', "Propietary", required=True) propietary = fields.Many2One('party.party', "Propietary", required=True)
@ -26,7 +30,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
domain=[('party', '=', Eval('propietary'))] domain=[('party', '=', Eval('propietary'))]
) )
equipment = fields.Many2One('optical_equipment.equipment', "Equipment", equipment = fields.Many2One('optical_equipment.equipment', "Equipment",
domain=[]) domain=[('state', '!=', 'draft')])
#when the maintenance is in agended status #when the maintenance is in agended status
@ -50,7 +54,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
# maintenance_activity = fields.Many2Many('optical_equipment.maintenance-product.product', 'activity', 'maintenance', "Maintenance Activitys") # maintenance_activity = fields.Many2Many('optical_equipment.maintenance-product.product', 'activity', 'maintenance', "Maintenance Activitys")
maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines') maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines')
@classmethod @classmethod
def __setup__(cls): def __setup__(cls):
super(Maintenance, cls).__setup__() super(Maintenance, cls).__setup__()
@ -65,6 +69,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
'in_progress': {}, 'in_progress': {},
'finished': {}, 'finished': {},
}) })
@staticmethod @staticmethod
def default_company(): def default_company():
return Transaction().context.get('company') return Transaction().context.get('company')
@ -73,6 +78,10 @@ class Maintenance(Workflow, ModelSQL, ModelView):
def default_state(cls): def default_state(cls):
return 'draft' return 'draft'
@classmethod
def default_maintenance_type(cls):
return 'preventive'
@classmethod @classmethod
def default_state_agended(cls): def default_state_agended(cls):
return 'no_agenda' return 'no_agenda'
@ -101,6 +110,18 @@ class Maintenance(Workflow, ModelSQL, ModelView):
def finished(cls, maintenances): def finished(cls, maintenances):
pass pass
@classmethod
def view_attributes(cls):
return super(Maintenance, cls).view_attributes() + [
('//page[@id="preventive"]', 'states', {
'invisible': If(Eval('maintenance_type') != 'preventive', True),
}),
('//page[@id="corrective"]', 'states',{
'invisible': If(Eval('maintenance_type') != 'corrective', True),
})
]
class MaintenanceActivity(ModelSQL): class MaintenanceActivity(ModelSQL):
'Maintenance - Products' 'Maintenance - Products'
__name__ = 'optical_equipment.maintenance-product.product' __name__ = 'optical_equipment.maintenance-product.product'
@ -120,3 +141,41 @@ class MaintenanceLine(ModelSQL, ModelView):
],) ],)
maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance', ondelete='CASCADE', select=True) maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance', ondelete='CASCADE', select=True)
maintenance_activity = fields.Many2One('product.product', 'Maintenance activity') maintenance_activity = fields.Many2One('product.product', 'Maintenance activity')
class Calibration(ModelSQL, ModelView):
'Calibration of Maintenance'
__name__ = 'optical_equipment.maintenance.calibration'
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'])
average = fields.Float("Average")
class CalibrationSample(sequence_ordered(), ModelView, ModelSQL):
'Samples of Calibration'
__name__ = 'optical_equipment.maintenance.calibration_sample'
maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance',
ondelete='CASCADE')
)
number_sample = fields.Integer("Sample #")
value_pattern = fields.Integer("Value in Pattern")
value_equipment = fields.Float("Value in Equipment")
mistake = fields.Floatr("Mistake")
mistake_rate = fields.Float("% Mistake")
expanded_uncertainty = fields.Floats("Uncertainy Expanded")

View File

@ -60,9 +60,18 @@
<field name="count" eval="True"/> <field name="count" eval="True"/>
<field name="act_window" ref="act_maintenance_form"/> <field name="act_window" ref="act_maintenance_form"/>
</record> </record>
<record model="ir.action.act_window.domain" id="act_maintenance_form_domain_failed">
<field name="name">Failed</field>
<field name="sequence" eval="30"/>
<field name="domain"
eval="[('state', '=', 'failed')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_maintenance_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_maintenance_form_domain_finished"> <record model="ir.action.act_window.domain" id="act_maintenance_form_domain_finished">
<field name="name">Finished</field> <field name="name">Finished</field>
<field name="sequence" eval="30"/> <field name="sequence" eval="40"/>
<field name="domain" <field name="domain"
eval="[('state', '=', 'finished')]" eval="[('state', '=', 'finished')]"
pyson="1"/> pyson="1"/>

View File

@ -44,6 +44,10 @@
<field name="maintenance_lines"/> <field name="maintenance_lines"/>
<field name="maintenance_lines"/> <field name="maintenance_lines"/>
</page> </page>
<page string="Calibration" id="calibration">
<label name="maintenance_lines"/>
<field name="maintenance_lines"/>
</page>
</notebook> </notebook>
<newline/> <newline/>
<label name="state"/> <label name="state"/>

View File

@ -6,6 +6,8 @@
<field name="code"/> <field name="code"/>
<label name="company"/> <label name="company"/>
<field name="company"/> <field name="company"/>
<label name="active"/>
<field name="active"/>
<newline/> <newline/>
<label name="propietary"/> <label name="propietary"/>
<field name="propietary"/> <field name="propietary"/>