97 lines
4.2 KiB
Python
97 lines
4.2 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
from trytond.model import (
|
|
Workflow, ModelSQL, ModelView, fields, sequence_ordered)
|
|
from trytond.pyson import Bool, Eval, If, Id, Equal
|
|
from trytond.pool import Pool
|
|
from trytond.modules.company import CompanyReport
|
|
from trytond.transaction import Transaction
|
|
|
|
_digits = (16, 2)
|
|
_states = {'readonly': If(Eval('state') != 'draft', True)}
|
|
|
|
|
|
class Calibration(ModelSQL, ModelView):
|
|
'Calibration of Maintenance'
|
|
__name__ = 'optical_equipment.maintenance.calibration'
|
|
|
|
_states = {'readonly': True}
|
|
|
|
maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", ondelete="CASCADE",
|
|
required=True)
|
|
graph_dates = fields.Char("Graph Dates", readonly=True)
|
|
diopter = fields.Float("Diopter", states=_states)
|
|
mean = fields.Float("Mean", 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'
|
|
|
|
maintenance = fields.Many2One('optical_equipment.maintenance', 'Maintenance')
|
|
product = fields.Function(fields.Integer("Product ID"), 'on_change_with_product')
|
|
number_sample = fields.Float("Sample #", _digits)
|
|
value_patterns = fields.Many2One('optical_equipment.product_pattern', "Value Pattern", ondelete='RESTRICT', required=True,
|
|
domain=[('product', '=', Eval('product'))],
|
|
depends=['product'])
|
|
value_equipment = fields.Float("Value in Equipment", _digits, required=True,
|
|
states={'readonly': Eval('value_patterns') is None})
|
|
mistake = fields.Float("Mistake", _digits)
|
|
mistake_rate = fields.Float("% Mistake", _digits,
|
|
states={'readonly': True},
|
|
depends=['mistake'])
|
|
|
|
@fields.depends('maintenance', '_parent_maintenance.equipment')
|
|
def on_change_with_product(self, name=None):
|
|
if self.maintenance:
|
|
return self.maintenance.equipment.product.template.id
|
|
|
|
@fields.depends('value_patterns', 'value_equipment',
|
|
'mistake', 'mistake_rate')
|
|
def on_change_value_equipment(self):
|
|
if float(self.value_patterns.pattern) < 0:
|
|
self.mistake = self.value_patterns.pattern - self.value_equipment
|
|
else:
|
|
if self.value_patterns.pattern > self.value_equipment:
|
|
self.mistake = self.value_patterns.pattern - self.value_equipment
|
|
else:
|
|
self.mistake = -self.value_patterns.pattern + self.value_equipment
|
|
|
|
if self.value_patterns.pattern == self.value_equipment:
|
|
self.mistake_rate = 0
|
|
else:
|
|
self.mistake_rate = abs(self.mistake / self.value_patterns.pattern) * 100
|
|
|
|
|
|
class CalibrationReport(CompanyReport):
|
|
__name__ = 'optical_equipment.maintenance'
|
|
|
|
@classmethod
|
|
def execute(cls, ids, data):
|
|
with Transaction().set_context(address_with_party=True):
|
|
return super(CalibrationReport, cls).execute(ids, data)
|
|
|
|
@classmethod
|
|
def get_context(cls, records, header, data):
|
|
pool = Pool()
|
|
Date = pool.get('ir.date')
|
|
context = super().get_context(records, header, data)
|
|
context['today'] = Date.today()
|
|
|
|
return context
|