From b7976c2b0405e0504dd2b83d1c710d71c68bcbc2 Mon Sep 17 00:00:00 2001 From: sinergia Date: Sat, 6 Aug 2022 10:10:14 -0500 Subject: [PATCH] module subscriptions --- equipment.py | 2 + locale/es.po | 155 +++++++++++++++++++++++++++++++++++++++++++++++ maintenance.py | 130 ++++++++++++++++++++++++++++++++++++--- maintenance.xml | 11 ++++ product.py | 2 +- sale.py | 3 +- subscription.xml | 6 ++ 7 files changed, 298 insertions(+), 11 deletions(-) diff --git a/equipment.py b/equipment.py index 70b4e63..569f143 100644 --- a/equipment.py +++ b/equipment.py @@ -1,3 +1,5 @@ +# 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 collections import defaultdict from trytond.pool import Pool from trytond.model import ( diff --git a/locale/es.po b/locale/es.po index 66febb5..f3d4bb1 100644 --- a/locale/es.po +++ b/locale/es.po @@ -137,3 +137,158 @@ msgstr "Resolución (d)" msgctxt "field:product.template,analog_resolution:" msgid "Analog resolution" msgstr "Resolución Analoga" + + + +msgctxt "field:sale.configuration,subscription_sequence:" +msgid "Subscription Sequence" +msgstr "Sequencia de contrato" + +msgctxt "field:sale.configuration.sequence,subscription_sequence:" +msgid "Subscription Sequence" +msgstr "Solicitud de contrato" + +msgctxt "field:sale.subscription.line,subscription:" +msgid "Subscription" +msgstr "Contrato" + +msgctxt "field:sale.subscription.line,subscription_end_date:" +msgid "Subscription End Date" +msgstr "Fecha final del Contrato" + +msgctxt "field:sale.subscription.line,subscription_start_date:" +msgid "Subscription Start Date" +msgstr "Fecha inicial del contrato" + +msgctxt "field:sale.subscription.line,subscription_state:" +msgid "Subscription State" +msgstr "Estado Contrato" + +msgctxt "field:sale.subscription.recurrence.rule.set.test,recurrence:" +msgid "Subscription Recurrence" +msgstr "Recurrencia del contrato" + +msgctxt "help:sale.subscription,company:" +msgid "Make the subscription belong to the company." +msgstr "Hacer que el contrato pertenezca a la compañía." + +msgctxt "help:sale.subscription,number:" +msgid "The main identification of the subscription." +msgstr "El identificador principal del contrato." + +msgctxt "help:sale.subscription,state:" +msgid "The current state of the subscription." +msgstr "El estado actual del contrato." + +msgctxt "help:sale.subscription.line,subscription:" +msgid "Add the line below the subscription." +msgstr "Añade lineas al contrato." + +msgctxt "model:ir.action,name:act_create_invoice" +msgid "Create Subscription Invoices" +msgstr "Crear facturas de contrato" + +msgctxt "model:ir.action,name:act_service_form" +msgid "Subscription Services" +msgstr "Servicios del contrato" + +msgctxt "model:ir.action,name:act_subscription_form" +msgid "Subscriptions" +msgstr "Contratos" + +msgctxt "model:ir.action,name:act_subscription_line_consumption_form" +msgid "Consumptions" +msgstr "Consumos" + +msgctxt "model:ir.action,name:act_subscription_party_relate" +msgid "Subscriptions" +msgstr "Contratos" + + +msgctxt "model:ir.action,name:wizard_recurrence_test" +msgid "Test Recurrence Rule" +msgstr "Probar la recurrencia del contrato" + +msgctxt "model:ir.sequence,name:sequence_subscription" +msgid "Subscription" +msgstr "Contrato" + +msgctxt "model:ir.sequence.type,name:sequence_type_subscription" +msgid "Subscription" +msgstr "Contrato" + +msgctxt "model:ir.ui.menu,name:menu_configuration" +msgid "Subscription" +msgstr "Contrato" + +msgctxt "model:ir.ui.menu,name:menu_create_invoice" +msgid "Create Subscription Invoices" +msgstr "Crear facturas de contrato" + +msgctxt "model:ir.ui.menu,name:menu_recurrence_test" +msgid "Test Recurrence Rule" +msgstr "Probar la recurrencia del contrato" + +msgctxt "model:ir.ui.menu,name:menu_service_form" +msgid "Subscription Services" +msgstr "Servicios del contrato" + +msgctxt "model:ir.ui.menu,name:menu_subscription_form" +msgid "Subscriptions" +msgstr "Contratos" + +msgctxt "model:sale.subscription,name:" +msgid "Subscription" +msgstr "Contrato" + +msgctxt "model:sale.subscription.create_invoice.start,name:" +msgid "Create Subscription Invoice" +msgstr "Crear facturas de contrato" + +msgctxt "model:sale.subscription.line,name:" +msgid "Subscription Line" +msgstr "Linea de contrato" + +msgctxt "model:sale.subscription.line.consumption,name:" +msgid "Subscription Line Consumption" +msgstr "Consumo de linea de contrato" + +msgctxt "model:sale.subscription.line.consumption.create.start,name:" +msgid "Create Subscription Line Consumption" +msgstr "Crear consumos de lineas de contrato" + +msgctxt "model:sale.subscription.recurrence.rule,name:" +msgid "Subscription Recurrence Rule" +msgstr "Reglas de recurrencia del contrato" + +msgctxt "model:sale.subscription.recurrence.rule.set,name:" +msgid "Subscription Recurrence Rule Set" +msgstr "Conjunto de reglas de recurrencia del contrato" + +msgctxt "model:sale.subscription.recurrence.rule.set.test,name:" +msgid "Test Subscription Recurrence Rule Set" +msgstr "Probar el conjunto de reglas de recurrencia del contrato" + +msgctxt "model:sale.subscription.service,name:" +msgid "Subscription Service" +msgstr "Servicios para contrato" + +msgctxt "selection:ir.cron,method:" +msgid "Generate Subscription Invoices" +msgstr "Generar las facturas del contrato" + +msgctxt "selection:ir.cron,method:" +msgid "Generate Subscription Line Consumptions" +msgstr "Generar consumos del contrato" + +msgctxt "view:sale.subscription.create_invoice.start:" +msgid "Create Subscription Invoices for date" +msgstr "Crear las facturas de contrato hasta la fecha" + +msgctxt "view:sale.subscription.line.consumption.create.start:" +msgid "Create Subscription Line Consumptions for date" +msgstr "Crear los consumos de contrato hasta la fecha" + +msgctxt "view:sale.subscription:" +msgid "Subscription" +msgstr "Contrato" diff --git a/maintenance.py b/maintenance.py index fcf6c7c..2eb2bab 100644 --- a/maintenance.py +++ b/maintenance.py @@ -1,8 +1,11 @@ +# 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, Unique, fields) + Workflow, ModelSQL, ModelView, Unique, fields, sequence_ordered) from trytond.transaction import Transaction -from trytond.pyson import Eval, If - +from trytond.pyson import Eval, If, Id +import math as mt +import numpy as np class Maintenance(Workflow, ModelSQL, ModelView): @@ -30,7 +33,9 @@ class Maintenance(Workflow, ModelSQL, ModelView): domain=[('party', '=', Eval('propietary'))] ) equipment = fields.Many2One('optical_equipment.equipment', "Equipment", - domain=[('state', '!=', 'draft')]) + domain=[('state', '!=', 'draft'), + ('propietary', '=', Eval('propietary'))] + ) #when the maintenance is in agended status @@ -146,7 +151,38 @@ class MaintenanceLine(ModelSQL, ModelView): class Calibration(ModelSQL, ModelView): 'Calibration of Maintenance' __name__ = 'optical_equipment.maintenance.calibration' - + + samples = fields.One2Many('optical_equipment.maintenance.calibration_sample', 'maintenance', + 'Samples') + dev_std = fields.Function( + fields.Float("Standart Desviation"),'get_standard_deviation' + ) + uncertain_type_A = fields.Function( + fields.Float("Uncertain Type A"), 'get_uncertain_A' + ) + uncertain_pattern = fields.Function( + fields.Float("Uncertain Pattern"), 'get_uncertain_pattern' + ) + k_c_calibration = fields.Function( + fields.Float("K Crt Calibration"), 'get_k_certificated_calibration' + ) + uncertain_U_b1 = fields.Function( + fields.Float("U_b1"), 'get_uncertain_U_b1' + ) + d_resolution = fields.Float("d_resolution") + uncertain_U_b2_dig = fields.Function( + fields.Float("U_b2"), 'get_uncertain_b2_digital' + ) + uncertain_U_b2_ana = fields.Function( + fields.Float("U_b2"), 'get_uncertain_b2_analoga' + ) + uncertain_combinated = fields.Function( + fields.Float("U_combinated"), 'get_uncertain_combinated' + ) + uncertain_eff = fields.Function( + fields.Float("U eff"), 'get_uncertain_eff' + ) + temperature_min = fields.Float("Temp Min") temperature_max = fields.Float("Temp Max") temperature_uom = fields.Many2One('product.uom', 'Temperature UOM', @@ -162,20 +198,96 @@ class Calibration(ModelSQL, ModelView): depends=['moisture_min']) average = fields.Float("Average") - + + #total_samples total de muestras + #average_pattern_equipment #Promedio de las muestras tomadas en el equipo suma(value_equipment)/total_samples + + #Desviacion estandar muestral != desviación estandar poblacional + def get_standard_deviation(self): + """ + This function calculated the + standartd deviation + """ + sum_samples = sum(samples) + n_samples = len(samples) + mean = sum_samples / n_samples + dev_std_square = sum((l-mean)**2 for l in sample) / (n_samples -1) + dev_std = mt.sqrt(dev_std_square) + + return dev_std + + def get_uncertain_type_A(self): + """ + This function calculated the + uncertain type A + """ + n_samples = len(samples) + uncertain_type_A = dev_std /mt.sqrt(n_samples) + + return uncertain_type_A + + def get_uncertain_pattern(self): + """ + uncertain_pattern = 0,25 constante viene del equipo + """ + uncertain_pattern = 0.25 + + return uncertain_pattern + + def get_k_certificated_calibration(self): + k_certificated_calibration = 2 + + return k_certicated_calibration + + def get_uncertain_U_b1(self): + uncertain_b1 = MEP / mt.sqrt(3) + uncertain_b1a = uncertain_pattern / k_certificated_calibration + + return uncertain_b1 + + def default_d_resolution(self): + return d + + def get_uncertain_b2_digital(self): + uncertain_b2 = d/2*mt.sqrt(3) + + return uncertain_b2 + + def get_uncertain_b2_analog(self): + #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 + 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 + 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 + + + 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 = fields.Float("Mistake") mistake_rate = fields.Float("% Mistake") - expanded_uncertainty = fields.Floats("Uncertainy Expanded") + expanded_uncertainty = fields.Float("Uncertainy Expanded") diff --git a/maintenance.xml b/maintenance.xml index 6559b38..7a47f93 100644 --- a/maintenance.xml +++ b/maintenance.xml @@ -113,5 +113,16 @@ form maintenance_line_form + + optical_equipment.maintenance.calibration + form + maintenance_sample_form + + + optical_equipment.maintenance.calibration + tree + + maintenance_calibration_tree + diff --git a/product.py b/product.py index 47edab2..6a81906 100644 --- a/product.py +++ b/product.py @@ -1,5 +1,5 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of -#txhis repository contains the full copyright notices and license terms +#this repository contains the full copyright notices and license terms from trytond.pool import Pool, PoolMeta from trytond.model import ( ModelView, ModelSQL, fields, Exclude) diff --git a/sale.py b/sale.py index 5d88e4b..76b714a 100644 --- a/sale.py +++ b/sale.py @@ -53,7 +53,8 @@ class SaleLine(metaclass=PoolMeta): product_equipment = fields.Boolean("Product Equipment") equipment = fields.Many2One('optical_equipment.equipment', "Equipment", - domain=[('state', '=', 'registred')], + domain=[('state', '=', 'registred'), + ('product','=', Eval('product'))], states={'invisible': If(~Eval('product_equipment'), True)},) address_equipment = fields.Many2One('party.address', "Direccion") unit_digits = fields.Function(fields.Integer('Unit Digits'), diff --git a/subscription.xml b/subscription.xml index fe65454..5295e9b 100644 --- a/subscription.xml +++ b/subscription.xml @@ -6,4 +6,10 @@ subscription_form + + + + + +