module subscriptions
This commit is contained in:
parent
9981598350
commit
b7976c2b04
@ -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 (
|
||||
|
155
locale/es.po
155
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"
|
||||
|
126
maintenance.py
126
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
|
||||
@ -147,6 +152,37 @@ 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',
|
||||
@ -163,19 +199,95 @@ class Calibration(ModelSQL, ModelView):
|
||||
|
||||
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")
|
||||
|
||||
|
||||
|
||||
|
@ -112,6 +112,17 @@
|
||||
<field name="model">optical_equipment.maintenance.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">maintenance_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="maintenance_calibration_view_form">
|
||||
<field name="model">optical_equipment.maintenance.calibration</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">maintenance_sample_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="maintenance_calibration_view_tree">
|
||||
<field name="model">optical_equipment.maintenance.calibration</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">maintenance_calibration_tree</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
|
@ -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)
|
||||
|
3
sale.py
3
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'),
|
||||
|
@ -6,4 +6,10 @@
|
||||
<field name="inherit" ref="sale_subscription.subscription_view_form"/>
|
||||
<field name="name">subscription_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="sale_subscription.menu_line_consumption_create">
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="sale_subscription.menu_create_invoice">
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
</tryton>
|
||||
|
Loading…
Reference in New Issue
Block a user