diff --git a/__init__.py b/__init__.py index b27c41f..2264d7e 100644 --- a/__init__.py +++ b/__init__.py @@ -14,6 +14,8 @@ def register(): purchase.Line, equipment.OpticalEquipment, equipment.EquipmentMaintenance, + equipment.EquipmentParty, + equipment.ChangePropietary, configuration_equipment.Configuration, maintenance.Calibration, maintenance.CreateContractInitial, @@ -38,4 +40,5 @@ def register(): maintenance.AssingAgended, maintenance.ReAssingAgended, maintenance.CreateContract, + equipment.NewPropietary, module='optical_equipment', type_='wizard') diff --git a/equipment.py b/equipment.py index 6199579..204d1f9 100644 --- a/equipment.py +++ b/equipment.py @@ -9,6 +9,9 @@ from trytond.transaction import Transaction from trytond.i18n import gettext from trytond.exceptions import UserError from trytond.model.exceptions import AccessError +from trytond.wizard import ( + Button, StateAction, StateTransition, StateView, Wizard) + _MAINTENANCE_FREQUENCY = [("none", ''), @@ -50,6 +53,7 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): domain=[('party', '=', Eval('propietary'))], states=_states ) + propietarys = fields.Many2Many('optical_equipment.equipment-party.party', 'equipment', 'party', "Propietarys") product = fields.Many2One('product.product', "Product", domain=[('equipment', '=', True)], states=_states, @@ -91,12 +95,12 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): depends=_depends) health_register = fields.Char("Health Register", size=None, states=_states,) - contract_history = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', 'equipment','Contracts', "Contracts", states={'readonly': True}) + contract_history = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', 'equipment','contract', "Contracts", states={'readonly': True}) #subscription_history = fields.Many2Many('sale.subscription-optical_equipment.equipment', # 'equipment','subscription', "Subscriptions", # states={'readonly': True}) - contract_history = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', - 'equipment', 'contract') + #contract_history = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', + # 'equipment', 'contract') maintenance_history = fields.Function( fields.Many2Many('optical_equipment.maintenance-optical_equipment.equipment', @@ -314,3 +318,48 @@ class EquipmentContract(ModelSQL, ModelView): equipment = fields.Many2One('optical_equipment.equipment', 'Equipment', select=True) contract = fields.Many2One('optical_equipment.contract', 'Contract', select=True) + +class EquipmentParty(ModelSQL, ModelView): + 'Optical Equipment - Party' + __name__ = 'optical_equipment.equipment-party.party' + + equipment = fields.Many2One('optical_equipment.equipment', "Equipment", select=True) + party = fields.Many2One('party.party', "Party", select=True) + + +class ChangePropietary(ModelView): + 'Change of Propietary Equipment' + __name__ = 'optical_equipment.change_propietary.form' + + equipment = fields.Many2One('optical_equipment.equipment', "Equipment") + new_propietary = fields.Many2One('party.party', "New Propietary") + new_address = fields.Many2One('party.address', "New Address", required=True, + domain=[('party', '=', Eval('new_propietary'))],) + change_date = fields.Date("Change Date", readonly=True) + + @classmethod + def default_change_date(cls): + pool = Pool() + Date = pool.get('ir.date') + return Date.today() + + +class NewPropietary(Wizard): + 'Change Propietary' + __name__ = 'optical_equipment.change_propietary' + + start = StateView('optical_equipment.change_propietary.form', + 'optical_equipment.change_propietary_view_form',[ + Button('Cancel', 'end', 'tryton-cancel'), + Button('Create', 'change_propietary', 'tryton-ok', default=True), + ]) + change_propietary = StateAction('optical_equipment.act_optical_equipment_form') + + def do_change_propietary(self, action): + equipment = self.start.equipment + new_propietary = self.start.new_propietary + new_address = self.start.new_address + + equipment.propietary = new_propietary + equipment.propietary_address = new_address + equipment.save() diff --git a/equipment.xml b/equipment.xml index ae20e91..2d02b6a 100644 --- a/equipment.xml +++ b/equipment.xml @@ -197,5 +197,20 @@ optical_equipment.equipment,-1 + + optical_equipment.change_propietary.form + form + change_propietary_form + + + Change Propietary + optical_equipment.change_propietary + optical_equipment.equipment + + + form_action + optical_equipment.equipment,-1 + + diff --git a/locale/es.po b/locale/es.po index e878ae0..620aa0e 100644 --- a/locale/es.po +++ b/locale/es.po @@ -150,6 +150,10 @@ msgctxt "field:product.template,a_factor_resolution:" msgid "(a) Resolution" msgstr "Factor a" +msgctxt "field:product.template,k_pattern_list:" +msgid "List of patterns K" +msgstr "Lista de patrones K" + msgctxt "field:optical_equipment.configuration,equipment_sequence:" msgid "Equipment Sequence" msgstr "Secuencia de Equipos" @@ -279,8 +283,12 @@ msgid "Purchase Origin" msgstr "Origen de la Compra" msgctxt "view:optical_equipment.equipment:" -msgid "Subscriptions" -msgstr "Subscripciones" +msgid "Contracts" +msgstr "Contratos" + +msgctxt "view:optical_equipment.equipment:" +msgid "Propietarys" +msgstr "Propietarios" msgctxt "view:optical_equipment.equipment:" msgid "Maintenances" @@ -342,6 +350,10 @@ msgctxt "model:ir.sequence,name:sequence_equipment" msgid "Equipment" msgstr "Equipos" +msgctxt "field:purchase.purchase,equipment_create:" +msgid "Equipments Creates" +msgstr "Equipos Creados" + msgctxt "field:purchase.line,product_equipment:" msgid "Product Equipment" msgstr "Es Equipo" @@ -423,10 +435,22 @@ msgctxt "field:optical_equipment.contract,contract:" msgid "Contract" msgstr "Contracto Inicial" +msgctxt "field:optical_equipment.contract,maintenance_services:" +msgid "Prorogues" +msgstr "Prorrogas" + +msgctxt "field:optical_equipment.contract,price_contract:" +msgid "Price Contract" +msgstr "Valor del Contrato" + msgctxt "field:optical_equipment.contract,prorogues:" msgid "Prorrogation" msgstr "Prorrogaciones" +msgctxt "view:optical_equipment.contract:" +msgid "Validity" +msgstr "Validez" + msgctxt "view:optical_equipment.contract:" msgid "Contracts and Prorogues" msgstr "Contratos y Prorrogas" @@ -487,6 +511,10 @@ msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_running msgid "Running" msgstr "En Ejecución" +msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_closed" +msgid "Closed" +msgstr "Cerrados" + msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_all" msgid "All" msgstr "Todo" @@ -615,6 +643,18 @@ msgctxt "field:optical_equipment_maintenance.service,code:" msgid "Code" msgstr "Código" +msgctxt "selection:optical_equipment.maintenance,maintenance_type:" +msgid "Preventive" +msgstr "Preventivo" + +msgctxt "selection:optical_equipment.maintenance,maintenance_type:" +msgid "Corrective" +msgstr "Correctivo" + +msgctxt "field:optical_equipment.maintenance,description_activity:" +msgid "Activity" +msgstr "Descripción del Mantenimiento" + msgctxt "field:optical_equipment_maintenance.service,reference:" msgid "Reference" msgstr "Referencia" @@ -661,7 +701,7 @@ msgstr "Fecha de Mantenimiento" msgctxt "field:optical_equipment_maintenance.service,history_agended:" msgid "History Agended" -msgstr "Agenda Historica" +msgstr "Historico Agendas" msgctxt "field:optical_equipment_maintenance.service,state_agended:" msgid "State Agenda" @@ -1029,11 +1069,11 @@ msgstr "Muestra #" msgctxt "field:optical_equipment.maintenance.calibration_sample,value_patterns:" msgid "Value Pattern" -msgstr "Patrón de valor" +msgstr "Valor del Patrón" msgctxt "field:optical_equipment.maintenance.calibration_sample,value_equipment:" msgid "Value in Equipment" -msgstr "Valor del Equipo" +msgstr "Valor en Equipo" msgctxt "field:optical_equipment.maintenance.calibration_sample,mistake:" msgid "Mistake" @@ -1047,25 +1087,29 @@ msgctxt "field:optical_equipment.maintenance.calibration,maintenance:" msgid "Maintenance" msgstr "Mantenimiento" +msgctxt "field:optical_equipment.maintenance.calibration,diopter:" +msgid "Diopter" +msgstr "Dioptría" + msgctxt "field:optical_equipment.maintenance.calibration,dev_std:" msgid "Standart Desviation" msgstr "Desviación Estándar" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_type_A:" msgid "Uncertain Type A" -msgstr "Incierto Tipo A" +msgstr "Incertidumbre Tipo A" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_pattern:" msgid "Uncertain Pattern" -msgstr "Patrón incierto" +msgstr "Patrón de Incertidumbre" msgctxt "field:optical_equipment.maintenance.calibration,k_c_calibration:" msgid "K Crt Calibration" -msgstr "Calibración K Crt" +msgstr "K Crt Calibración" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_U_b1:" msgid "U_b1" -msgstr "Incierto b1" +msgstr "Incertidumbre b1" msgctxt "field:optical_equipment.maintenance.calibration,d_resolution:" msgid "d_resolution" @@ -1073,27 +1117,27 @@ msgstr "D Resolución" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_U_b2_dig:" msgid "U_b2" -msgstr "Incierto b2 dig" +msgstr "Incertidumbre b2 dig" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_U_b2_ana:" msgid "U_b2" -msgstr "Incierto b2 ana" +msgstr "Incertidumbre b2 ana" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_combinated:" msgid "U_combinated" -msgstr "Incierto Combinado" +msgstr "Incertidumbre Combinada" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_eff:" msgid "U eff" -msgstr "Incierto eff" +msgstr "Incertidumbre eff" msgctxt "field:optical_equipment.maintenance.calibration,t_student:" msgid "T Student" -msgstr "T Alumno" +msgstr "Distribución T Student" msgctxt "field:optical_equipment.maintenance.calibration,uncertain_expanded:" msgid "Uexpand" -msgstr "Expandir" +msgstr "Incertidumbre Expandida" msgctxt "field:optical_equipment.maintenance.calibration,state:" msgid "State" @@ -1109,4 +1153,84 @@ msgstr "Finalizado" msgctxt "model:ir.action.act_window.domain,name:act_maintenance_form_domain_all" msgid "All" -msgstr "Todo" \ No newline at end of file +msgstr "Todo" + +msgctxt "model:ir.sequence,name:sequence_contract" +msgid "Contract" +msgstr "Contratos" + +msgctxt "model:ir.sequence,name:sequence_agended" +msgid "Agended" +msgstr "Agendas" + +msgctxt "model:ir.sequence,name:sequence_maintenances" +msgid "Maintenance" +msgstr "Mantenimientos" + +msgctxt "field:sale.sale,sale_type:" +msgid "Sale Type" +msgstr "Tipo de Venta" + +msgctxt "field:sale.sale,maintenance_type:" +msgid "Maintenance Type" +msgstr "Tipo de Mantenimiento" + +msgctxt "field:sale.sale,contract_ref:" +msgid "Contract Base" +msgstr "Contrato Base" + +msgctxt "field:sale.sale,agended:" +msgid "Scheduling" +msgstr "Agendado" + +msgctxt "selection:sale.sale,sale_type:" +msgid "Maintenance" +msgstr "Mantenimiento" + +msgctxt "selection:sale.sale,sale_type:" +msgid "Equipments" +msgstr "Equipos" + +msgctxt "selection:sale.sale,sale_type:" +msgid "replaces" +msgstr "Repuestos" + +msgctxt "selection:sale.sale,sale_type:" +msgid "replaces" +msgstr "Repuestos" + +msgctxt "selection:sale.sale,maintenance_type:" +msgid "Preventive" +msgstr "Preventivo" + +msgctxt "selection:sale.sale,maintenance_type:" +msgid "Corrective" +msgstr "Correctivo" + +msgctxt "field:optical_equipment_create.contract,company:" +msgid "Company" +msgstr "Empresa" + +msgctxt "field:optical_equipment_create.contract,party:" +msgid "Party" +msgstr "Tercero" + +msgctxt "field:optical_equipment_create.contract,invoice_address:" +msgid "Invoice Address" +msgstr "Dirección de Facturación" + +msgctxt "field:optical_equipment_create.contract,contact:" +msgid "Contact" +msgstr "Contacto" + +msgctxt "field:optical_equipment_create.contract,start_date:" +msgid "Start Date" +msgstr "Fecha de Inicio" + +msgctxt "field:optical_equipment_create.contract,end_date:" +msgid "End Date" +msgstr "Fecha Final" + +msgctxt "field:stock.move,equipment:" +msgid "Equipment" +msgstr "Equipo" diff --git a/maintenance.py b/maintenance.py index 3aafa09..d3acfd7 100644 --- a/maintenance.py +++ b/maintenance.py @@ -457,7 +457,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): uncertain_eff=uncertain_eff, t_student=t_student, uncertain_expanded=uncertain_expanded, - state='Aprobado' if uncertain_expanded < a_resolution else 'Rechazado' + state='Aprobado' if uncertain_expanded <= a_resolution else 'Rechazado' ) maintenance.calibration_total += (calibrationLineTotal,) maintenance.save() @@ -477,7 +477,7 @@ class Maintenance(Workflow, ModelSQL, ModelView): uncertain_eff=uncertain_eff, t_student=t_student, uncertain_expanded=uncertain_expanded, - state='Aprobado' if uncertain_expanded < d_resolution else 'Rechazado' + state='Aprobado' if uncertain_expanded <= d_resolution else 'Rechazado' ) maintenance.calibration_total += (calibrationLineTotal,) maintenance.save() diff --git a/move.py b/move.py index e4b8364..727cff0 100644 --- a/move.py +++ b/move.py @@ -16,7 +16,8 @@ class Move(metaclass=PoolMeta): domain=[('state', '=', 'registred'), ('product','=', Eval('product')) ], - states={'invisible': If(~Eval('product_equipment'), True),}, + states={'invisible': If(~Eval('product_equipment'), True), + 'readonly': (Eval('state').in_(['cancelled', 'done'])),}, depends=['product_equipment']) equipment_serial = fields.Function(fields.Char('Serial', diff --git a/view/optical_equipment_form.xml b/view/optical_equipment_form.xml index 00fc480..7a7b7f5 100644 --- a/view/optical_equipment_form.xml +++ b/view/optical_equipment_form.xml @@ -58,6 +58,9 @@ + + +