diff --git a/maintenance.py b/maintenance.py index fa96653..1e96229 100644 --- a/maintenance.py +++ b/maintenance.py @@ -11,7 +11,7 @@ from trytond.modules.company import CompanyReport from trytond.transaction import Transaction from trytond.pyson import Bool, Eval, If, Id from trytond.pool import Pool - +from trytond.model.exceptions import ValidationError from datetime import timedelta from scipy.stats import t @@ -42,13 +42,6 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): ) description = fields.Char('Description', states=_states) sale_date = fields.Char('Sale Date') - contract_origin = fields.Reference( - 'Contract Base', - selection='get_origin_contract', - ) - sale_origin = fields.Reference( - 'Sale Origin', selection='get_origin', states={'readonly': True} - ) company = fields.Many2One('company.company', 'Company', readonly=True) maintenance_type = fields.Selection( [ @@ -62,6 +55,12 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): propietary = fields.Many2One( 'party.party', 'Propietary', required=True, states=_states ) + contract_origin = fields.Many2One('optical_equipment.contract', "Contract") + # contract_origin = fields.Reference( + # 'Contract Base', + # selection='get_origin_contract') + sale_origin = fields.Reference( + 'Sale Origin', selection='get_origin', states={'readonly': True}) propietary_address = fields.Many2One( 'party.address', 'Propietary Address', @@ -289,21 +288,21 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): return [(None, '')] + [(m, get_name(m)) for m in models] - @classmethod - def _get_origin_contract(cls): - 'Return list of Model names for origin Reference' - pool = Pool() - Contract = pool.get('optical_equipment.contract') + # @classmethod + # def _get_origin_contract(cls): + # 'Return list of Model names for origin Reference' + # pool = Pool() + # Contract = pool.get('optical_equipment.contract') - return [Contract.__name__] + # return [Contract.__name__] - @classmethod - def get_origin_contract(cls): - Model = Pool().get('ir.model') - get_name = Model.get_name - models = cls._get_origin_contract() + # @classmethod + # def get_origin_contract(cls): + # Model = Pool().get('ir.model') + # get_name = Model.get_name + # models = cls._get_origin_contract() - return [(None, '')] + [(m, get_name(m)) for m in models] + # return [(None, '')] + [(m, get_name(m)) for m in models] @classmethod def set_code(cls, maintenance): @@ -341,11 +340,11 @@ class MaintenanceService(Workflow, ModelSQL, ModelView): @ModelView.button @Workflow.transition('finished') def finished(cls, maintenances): + message = 'optical_equipment.msg_finished_mantenance_service' for maintenance in maintenances: for line in maintenance.lines: if line.state != 'finished': - raise Exception( - "Debe Finalizar Todas las lineas de mantenimiento") + raise ValidationError(gettext(message)) class MaintenanceServiceLine(Workflow, ModelSQL, ModelView): @@ -490,8 +489,10 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView): 'invisible': (Eval('lines_calibration', [0])) | ( Eval('state').in_(['finished'])), 'depends': ['state'], }, - 'finished': {'invisible': (Eval('state').in_(['finished'])) | - ((Eval('maintenance_type') == 'corrective') & (Eval('maintenance_lines') == ()))}, + 'finished': { + 'invisible': (Eval('state').in_(['finished']) | ( + Eval('maintenance_type') == 'corrective') & ( + Eval('maintenance_lines', [0])))}, }) @classmethod @@ -585,6 +586,12 @@ class MaintenanceServiceLine(Workflow, ModelSQL, ModelView): @fields.depends('_parent_service_maintenance.propietary', '_parent_service_maintenance.propietary_address', + '_parent_service_maintenance.temperature_min', + '_parent_service_maintenance.temperature_max', + '_parent_service_maintenance.temperature_uom', + '_parent_service_maintenance.moisture_min', + '_parent_service_maintenance.moisture_max', + '_parent_service_maintenance.moisture_uom', 'service_maintenance') def on_change_service_maintenance(self): if self.service_maintenance: diff --git a/messages.xml b/messages.xml index 9c61fae..0f2b40f 100644 --- a/messages.xml +++ b/messages.xml @@ -9,5 +9,8 @@ this repository contains the full copyright notices and license terms. --> Asigne una secuencia para enumerar equipos. + + Debe finalizar las líneas de Mantenimiento Primero. + diff --git a/move.py b/move.py index 61f0f6c..4f3833f 100644 --- a/move.py +++ b/move.py @@ -98,15 +98,6 @@ class Move(metaclass=PoolMeta): else: return None - @fields.depends('product') - def on_change_product(self): - if not self.product: - return - - defaultCategory = self.product.default_uom.category - if not self.uom or self.uom.category != defaultCategory: - self.uom = self.product.default_uom - @fields.depends('equipment', methods=['get_equipment_serial']) def on_change_equipment(self): if self.equipment: diff --git a/report/CVS_Equipments.fodt b/report/CVS_Equipments.fodt index b101231..2b41c8b 100644 --- a/report/CVS_Equipments.fodt +++ b/report/CVS_Equipments.fodt @@ -1,24 +1,24 @@ - 2022-10-25T06:02:43.8293012812023-12-07T09:26:08.440308489PT8H27M16S154LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-10-25T06:02:43.8293012812024-04-24T20:41:31.999060746PT8H39M47S159LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 81645 + 83300 0 - 36117 - 16425 + 36042 + 15725 true false view2 - 8065 - 93624 + 8026 + 91706 0 - 81645 - 36116 - 98069 + 83300 + 36040 + 99023 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 398114 - false - - true - true - false - 3331053 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 398114 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 3488946 + true + false + false + true + false + true @@ -160,14 +161,14 @@ - - + + - + - + @@ -178,17 +179,17 @@ - + - + - + @@ -198,16 +199,16 @@ - - + + - - + + @@ -222,8 +223,8 @@ - - + + @@ -236,7 +237,7 @@ - + @@ -244,10 +245,10 @@ - + - + @@ -262,10 +263,10 @@ - + - + @@ -321,7 +322,7 @@ - + $ @@ -336,102 +337,118 @@ + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -439,45 +456,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -496,7 +513,7 @@ - + @@ -512,7 +529,7 @@ - + @@ -528,7 +545,7 @@ - + @@ -544,7 +561,7 @@ - + @@ -601,384 +618,392 @@ - + - - + + - - - + + + - - + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - + - + - + - + + + + + + + + + + + + + - + - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - + - - + + - + + + + + + + + + + + - + + - + + + + - + - + - + - - + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + + + @@ -1089,19 +1114,19 @@ - + - + - + - + - + @@ -1149,29 +1174,29 @@ - + - - + + - - + + - - + + - + - + @@ -1189,7 +1214,7 @@ - + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM DAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAAR @@ -1751,221 +1776,221 @@ - <for each="maintenance in records"> - <for each="equipment in maintenance.lines"> - HOJA DE VIDA DISPOSITIVOS BIOMEDICOS + <for each="maintenance in records"> + <for each="equipment in maintenance.lines"> + HOJA DE VIDA DISPOSITIVOS BIOMEDICOS - Fecha de generación: <maintenance.estimated_agended.date()> + Fecha de generación: <maintenance.estimated_agended.date()> - Código Equipo: <equipment.equipment.code> + Código Equipo: <equipment.equipment.code> - - INFORMACIÓN DEL PROPIETARIO + + INFORMACIÓN DEL PROPIETARIO - Nombre / Razón Social: <equipment.propietary.name> - Ciudad: <equipment.propietary_address.subdivision_municipality.name> - Teléfono: <equipment.propietary.phone> - Movil: <equipment.propietary.mobile> + Nombre / Razón Social: <equipment.propietary.name> + Ciudad: <equipment.propietary_address.subdivision_municipality.name> + Teléfono: <equipment.propietary.phone> + Movil: <equipment.propietary.mobile> - Tipo Documento: <"NIT" if equipment.propietary.tax_identifier.type=="31" else "CC"> - Documento: <equipment.propietary.tax_identifier.code> - Dirección: <equipment.propietary_address.street> + Tipo Documento: <"NIT" if equipment.propietary.tax_identifier.type=="31" else "CC"> + Documento: <equipment.propietary.tax_identifier.code> + Dirección: <equipment.propietary_address.street> - INFORMACIÓN DEL DISPOSITIVO + INFORMACIÓN DEL DISPOSITIVO - Nombre del Dispositivo: <equipment.equipment.product.name> - Restaurado: <"SI" if equipment.equipment.refurbish else "NO"> - Marca: <equipment.equipment.mark_category.name> - Modelo: <equipment.equipment.model_category.name> - Referencia: <equipment.equipment.reference_category.name> - País de Origen: <equipment.equipment.origin_country.name> - Registro Invima: <equipment.equipment.health_register> - Software Versión: <equipment.equipment.software_version if equipment.equipment.software_version != "" else "No Aplica"> + Nombre del Dispositivo: <equipment.equipment.product.name> + Restaurado: <"SI" if equipment.equipment.refurbish else "NO"> + Marca: <equipment.equipment.mark_category.name> + Modelo: <equipment.equipment.model_category.name> + Referencia: <equipment.equipment.reference_category.name> + País de Origen: <equipment.equipment.origin_country.name> + Registro Invima: <equipment.equipment.health_register> + Software Versión: <equipment.equipment.software_version if equipment.equipment.software_version != "" else "No Aplica"> - Serial: <equipment.equipment.serial> - <choose test=""> - <when test="equipment.equipment.product.risk == 'uno'"> - Clase de Riesgo: I - </when> - <when test="equipment.equipment.product.risk == 'dosA'"> - Clase de Riesgo: IIA - </when> - <when test="equipment.equipment.product.risk == 'dosB'"> - Clase de Riesgo: IIB - </when> - <otherwise test=""> - Clase de Riesgo: No Aplíca - </otherwise> - </choose> - Clase Biomédica: <equipment.equipment.biomedical_class> - <choose test=""> - <when test="equipment.equipment.equipment_type == 'mobiliario_optico'"> - Tipo: Mobiliario óptico - </when> - <when test="equipment.equipment.equipment_type == 'refraccion'"> - Tipo: Refracción - </when> - <when test="equipment.equipment.equipment_type == 'medicion'"> - Tipo: Medición - </when> - <when test="equipment.equipment.equipment_type == 'accesorios'"> - Tipo: Accesorios - </when> - <otherwise test=""> - Tipo: n/a - </otherwise> - </choose> - <choose test=""> - <when test="equipment.equipment.use == 'medico'"> - Uso: Médico - </when> - <when test="equipment.equipment.use == 'basico'"> - Uso: Básico - </when> - <when test="equipment.equipment.use == 'apoyo'"> - Uso: Apoyo - </when> - <otherwise test=""> - Uso: n/a - </otherwise> - </choose> - Garantía: <equipment.equipment.warranty>Meses - Vida Útil: <equipment.equipment.useful_life>Meses + Serial: <equipment.equipment.serial> + <choose test=""> + <when test="equipment.equipment.product.risk == 'uno'"> + Clase de Riesgo: I + </when> + <when test="equipment.equipment.product.risk == 'dosA'"> + Clase de Riesgo: IIA + </when> + <when test="equipment.equipment.product.risk == 'dosB'"> + Clase de Riesgo: IIB + </when> + <otherwise test=""> + Clase de Riesgo: No Aplíca + </otherwise> + </choose> + Clase Biomédica: <equipment.equipment.biomedical_class> + <choose test=""> + <when test="equipment.equipment.equipment_type == 'mobiliario_optico'"> + Tipo: Mobiliario óptico + </when> + <when test="equipment.equipment.equipment_type == 'refraccion'"> + Tipo: Refracción + </when> + <when test="equipment.equipment.equipment_type == 'medicion'"> + Tipo: Medición + </when> + <when test="equipment.equipment.equipment_type == 'accesorios'"> + Tipo: Accesorios + </when> + <otherwise test=""> + Tipo: n/a + </otherwise> + </choose> + <choose test=""> + <when test="equipment.equipment.use == 'medico'"> + Uso: Médico + </when> + <when test="equipment.equipment.use == 'basico'"> + Uso: Básico + </when> + <when test="equipment.equipment.use == 'apoyo'"> + Uso: Apoyo + </when> + <otherwise test=""> + Uso: n/a + </otherwise> + </choose> + Garantía: <equipment.equipment.warranty>Meses + Vida Útil: <equipment.equipment.useful_life>Meses - + - CARACTERÍSTICAS TÉCNICAS + CARACTERÍSTICAS TÉCNICAS - Características Físicas + Características Físicas - Peso + Peso - <str(equipment.equipment.product.weight) + " "+ equipment.equipment.product.weight_uom.symbol if equipment.equipment.product.weight else ""> + <str(equipment.equipment.product.weight) + " "+ equipment.equipment.product.weight_uom.symbol if equipment.equipment.product.weight else ""> - Medidas + Medidas - <"Longitud:" +str(equipment.equipment.product.length) + " "+ equipment.equipment.product.length_uom.symbol+" Altura: "+str(equipment.equipment.product.height) + " "+ equipment.equipment.product.height_uom.symbol + " Ancho: "+str(equipment.equipment.product.width) + " "+ equipment.equipment.product.width_uom.symbol if equipment.equipment.product.width else ""> + <"Longitud:" +str(equipment.equipment.product.length) + " "+ equipment.equipment.product.length_uom.symbol+" Altura: "+str(equipment.equipment.product.height) + " "+ equipment.equipment.product.height_uom.symbol + " Ancho: "+str(equipment.equipment.product.width) + " "+ equipment.equipment.product.width_uom.symbol if equipment.equipment.product.width else ""> - Características Eléctricas + Características Eléctricas - Voltaje (VAC) + Voltaje (VAC) - <str(equipment.equipment.product.voltageAC) + " "+ equipment.equipment.product.voltageAC_uom.symbol if equipment.equipment.product.voltageAC else "No Aplica"> + <str(equipment.equipment.product.voltageAC) + " "+ equipment.equipment.product.voltageAC_uom.symbol if equipment.equipment.product.voltageAC else "No Aplica"> - Voltaje (VDC) + Voltaje (VDC) - <str(equipment.equipment.product.voltageDC) + " "+ equipment.equipment.product.voltageDC_uom.symbol if equipment.equipment.product.voltageDC else "No Aplica"> + <str(equipment.equipment.product.voltageDC) + " "+ equipment.equipment.product.voltageDC_uom.symbol if equipment.equipment.product.voltageDC else "No Aplica"> - Condiciones Ambientales + Condiciones Ambientales - Tem Min Uso + Tem Min Uso - <str(equipment.equipment.product.temperature_min) + " "+ equipment.equipment.product.temperature_uom.symbol if equipment.equipment.product.temperature_min else ""> + <str(equipment.equipment.product.temperature_min) + " "+ equipment.equipment.product.temperature_uom.symbol if equipment.equipment.product.temperature_min else ""> - Tem Max Uso + Tem Max Uso - <str(equipment.equipment.product.temperature_max) + " "+ equipment.equipment.product.temperature_uom.symbol if equipment.equipment.product.temperature_max else ""> + <str(equipment.equipment.product.temperature_max) + " "+ equipment.equipment.product.temperature_uom.symbol if equipment.equipment.product.temperature_max else ""> - Hum Min Uso + Hum Min Uso - <str(equipment.equipment.product.moisture_min) + " "+ equipment.equipment.product.moisture_uom.symbol if equipment.equipment.product.moisture_min else ""> + <str(equipment.equipment.product.moisture_min) + " "+ equipment.equipment.product.moisture_uom.symbol if equipment.equipment.product.moisture_min else ""> - Hum Max Uso + Hum Max Uso - <str(equipment.equipment.product.moisture_max) + " "+ equipment.equipment.product.moisture_uom.symbol if equipment.equipment.product.moisture_max else ""> + <str(equipment.equipment.product.moisture_max) + " "+ equipment.equipment.product.moisture_uom.symbol if equipment.equipment.product.moisture_max else ""> - Requiere Calibración + Requiere Calibración - <"SI" if equipment.equipment.calibration else "NO"> + <"SI" if equipment.equipment.calibration else "NO"> - Frecuencia de Mantenimiento Preventivo y calibración (Sí aplíca) + Frecuencia de Mantenimiento Preventivo y calibración (Sí aplíca) - <equipment.equipment.maintenance_frequency>Meses + <equipment.equipment.maintenance_frequency>Meses - + - + Texto 1: El equipo funciona cumpliendo los parámetros establecidos por el fabricante @@ -1974,46 +1999,45 @@ - <if test="equipment.technician_signature"> - + <if test="equipment.technician_signature"> + - + Texto 2: - </if> + </if> - + - <equipment.technician_responsible> + <equipment.technician_responsible> - RECIBIDO A SATISFACCIÓN + RECIBIDO A SATISFACCIÓN - INVIMA : <equipment.invima> + INVIMA : <equipment.invima> - NOMBRE: + NOMBRE: - + - - - </for> + + </for> </for> diff --git a/report/Calibrations.fodt b/report/Calibrations.fodt index 33309de..97c9576 100644 --- a/report/Calibrations.fodt +++ b/report/Calibrations.fodt @@ -1,24 +1,24 @@ - 2022-10-11T16:28:51.1019484802023-12-07T21:31:35.869619380PT5H49M19S84LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-10-11T16:28:51.1019484802024-04-24T22:42:51.825197982PT6H45M40S111LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 100797 + 165008 0 - 50564 - 22994 + 50458 + 22015 true false view2 - 16487 - 123301 + 34024 + 132731 0 - 100797 - 50562 - 123790 + 165008 + 50456 + 187022 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 2067644 - false - - true - true - false - 5492138 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 2067644 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 5556200 + true + false + false + true + false + true @@ -163,14 +164,14 @@ - - + + - + - + @@ -181,17 +182,17 @@ - + - + - + @@ -201,24 +202,24 @@ - - + + - - + + - - + + @@ -240,7 +241,7 @@ - + @@ -248,10 +249,10 @@ - + - + @@ -266,10 +267,10 @@ - + - + @@ -325,212 +326,228 @@ - - + + $ - + - $ - + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -549,7 +566,7 @@ - + @@ -565,7 +582,7 @@ - + @@ -584,7 +601,7 @@ - + @@ -598,7 +615,7 @@ - + @@ -634,7 +651,7 @@ - + @@ -670,7 +687,7 @@ - + @@ -678,7 +695,7 @@ - + @@ -768,7 +785,7 @@ - + @@ -787,13 +804,13 @@ - + - + @@ -859,25 +876,25 @@ - + - - - - - - - - - + - + + + + + + + + + @@ -885,10 +902,63 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -960,123 +1030,144 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - + - + @@ -1091,7 +1182,7 @@ - + /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgK CgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkL EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAAR @@ -1767,7 +1858,7 @@ - Pagina 1 + Pagina 3 @@ -1780,18 +1871,18 @@ - <for each="service in records"> - <for each="maintenance in service.lines"> - <if test="maintenance.equipment.product.calibration"> + <for each="service in records"> + <for each="maintenance in service.lines"> + <if test="maintenance.equipment.product.calibration"> - Fecha: <service.estimated_agended.date()> + Fecha: <service.estimated_agended.date()> - Consecutivo: <maintenance.code> + Consecutivo: <maintenance.code> @@ -1799,11 +1890,10 @@ - Señores: <maintenance.propietary.name> - Documento: <"NIT" if maintenance.propietary.tax_identifier.type=="31" else "CC"><maintenance.propietary.tax_identifier.code> - Ciudad: <maintenance.propietary_address.subdivision_municipality.name> - Dirección: <maintenance.propietary_address.street> - + Señores: <maintenance.propietary.name> + Documento: <"NIT" if maintenance.propietary.tax_identifier.type=="31" else "CC"><maintenance.propietary.tax_identifier.code> + Ciudad: <maintenance.propietary_address.subdivision_municipality.name> + Dirección: <maintenance.propietary_address.street> @@ -1811,7 +1901,7 @@ - Asunto: Certificación de calibración + Asunto: Certificación de calibración @@ -1820,53 +1910,52 @@ - Método de calibración: Comparación - Rango de medición: <maintenance.equipment.product.measuring_range> + Método de calibración: Comparación + Rango de medición: <maintenance.equipment.product.measuring_range> <choose test=""> - <when test="maintenance.equipment.product.use_pattern.id==1"> - Patrón utilizado: Ojo Esquemático + <when test="maintenance.equipment.product.use_pattern.id==1"> + Patrón utilizado: Ojo Esquemático </when> <when test="maintenance.equipment.product.use_pattern.id==2"> - Patrón utilizado: Lentes de Prueba + Patrón utilizado: Lentes de Prueba </when> <when test="maintenance.equipment.product.use_pattern.id==3"> - Patrón utilizado: Pesas de Calibración + Patrón utilizado: Pesas de Calibración </when> <when test="maintenance.equipment.product.use_pattern.id==4"> - Patrón utilizado: Esferas de Calibración + Patrón utilizado: Esferas de Calibración </when> - <otherwise test=""> - Patrón utilizado: Barras de Calibración - </otherwise> + <otherwise test=""> + Patrón utilizado: Barras de Calibración + </otherwise> </choose> <choose test=""> <when test="maintenance.equipment.use == 'medico'"> - Uso: Médico + Uso: Médico </when> <when test="maintenance.equipment.use == 'basico'"> - Uso: Básico + Uso: Básico </when> <when test="maintenance.equipment.use == 'apoyo'"> - Uso: Apoyo + Uso: Apoyo </when> <otherwise test=""> - Uso: n/a + Uso: n/a </otherwise> </choose> - División de escala: <"0.25D" if maintenance.equipment.product.measuring_range == "dioptria" else "1mmHg"> - Sitio de medición: Consultorio + División de escala: <"0.25D" if maintenance.equipment.product.measuring_range == "dioptria" else "1mmHg"> + Sitio de medición: Consultorio - Equipo: <maintenance.equipment.product.name> - Marca: <maintenance.equipment.mark_category.name> - Modelo: <maintenance.equipment.model_category.name> - Referencia: <maintenance.equipment.reference_category.name> - Serie: <maintenance.equipment.serial> + Equipo: <maintenance.equipment.product.name> + Marca: <maintenance.equipment.mark_category.name> + Modelo: <maintenance.equipment.model_category.name> + Referencia: <maintenance.equipment.reference_category.name> + Serie: <maintenance.equipment.serial> - @@ -1885,13 +1974,13 @@ Temperatura Min - <str(maintenance.temperature_min) + str(maintenance.temperature_uom.symbol) if maintenance.temperature_min else ""> + <str(maintenance.temperature_min) + str(maintenance.temperature_uom.symbol) if maintenance.temperature_min else ""> Humedad Min - <str(maintenance.moisture_min) + str(maintenance.equipment.product.moisture_uom.symbol) if maintenance.moisture_min else ""> + <str(maintenance.moisture_min) + str(maintenance.equipment.product.moisture_uom.symbol) if maintenance.moisture_min else ""> @@ -1909,8 +1998,7 @@ - - + @@ -1930,7 +2018,7 @@ Valor en Equipo - % Error + % Error @@ -1959,11 +2047,9 @@ - - Resultados de calibración: - + Resultados de calibración: + La incertidumbre expandida de la medición se ha obtenido multiplicando la incertidumbre combinada por el factor de cobertura K calculado conforme a los grados de libertad y el factor de Student para una probabilidad del 95% - @@ -2034,24 +2120,21 @@ - + - Texto 1: - - Este certificado expresa fielmente el resultado de las mediciones realizadas. Los resultados contenidos en el presente certificado se refieren al momento y condiciones en que se realizaron las mediciones. No nos responsabilizamos de los perjuicios que pueden derivarse del uso inadecuado de los instrumentos calibrados. El usuario es responsable de la recalibración de sus instrumentos a intervalos apropiados. - - + + Este certificado expresa fielmente el resultado de las mediciones realizadas. Los resultados contenidos en el presente certificado se refieren al momento y condiciones en que se realizaron las mediciones. No nos responsabilizamos de los perjuicios que pueden derivarse del uso inadecuado de los instrumentos calibrados. El usuario es responsable de la recalibración de sus instrumentos a intervalos apropiados. + <if test="maintenance.technician_signature"> - + - Texto 2: @@ -2078,12 +2161,12 @@ - - - - </if> - </for> - </for> + + + + </if> + </for> + </for> \ No newline at end of file diff --git a/report/Maintenance_Service.fodt b/report/Maintenance_Service.fodt index 311dac1..2caa4b6 100644 --- a/report/Maintenance_Service.fodt +++ b/report/Maintenance_Service.fodt @@ -1,24 +1,24 @@ - 2022-11-03T17:09:30.5000787642023-12-07T22:30:22.616967086PT2H40M53S64LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-11-03T17:09:30.5000787642024-04-24T22:52:51.232560466PT2H46M44S66LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 48830 + 13153 0 - 36117 - 16425 + 36042 + 15725 true false view2 - 9264 - 66677 + 10208 + 17096 0 - 48830 - 36116 - 65253 + 13153 + 36040 + 28877 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 687431 - false - - true - true - false - 3473529 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 687431 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 3589123 + true + false + false + true + false + true @@ -159,14 +160,14 @@ - - + + - + - + @@ -177,17 +178,17 @@ - + - + - + @@ -197,16 +198,16 @@ - - + + - - + + @@ -225,8 +226,8 @@ - - + + @@ -235,7 +236,7 @@ - + @@ -243,10 +244,10 @@ - + - + @@ -261,10 +262,10 @@ - + - + @@ -320,69 +321,85 @@ - - + + $ - + - $ - + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -390,67 +407,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -469,7 +486,7 @@ - + @@ -485,7 +502,7 @@ - + @@ -501,7 +518,7 @@ - + @@ -561,11 +578,11 @@ - + - + @@ -577,15 +594,15 @@ - + - + - + @@ -633,7 +650,7 @@ - + @@ -683,19 +700,19 @@ - + - + - + - + @@ -828,10 +845,6 @@ - - - - @@ -947,10 +960,10 @@ - + - + @@ -986,19 +999,19 @@ - + - - + + - - + + - + @@ -1014,7 +1027,7 @@ - + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM DAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAAR @@ -1587,7 +1600,7 @@ REGISTRO DE MANTENIMIENTO CORRECTIVO </when> </choose> - Fecha <format_datetime(datetime.datetime.now(),user.language, '%b/%d/%Y', maintenance.company.timezone)> + Fecha <maintenance.service_maintenance.estimated_agended.date()> Consecutivo <maintenance.code> INFORMACIÓN DEL PROPIETARIO @@ -1758,7 +1771,7 @@ <if test="maintenance.technician_signature"> - + Texto 1: @@ -1786,7 +1799,7 @@ - </for> + </for> \ No newline at end of file diff --git a/report/Maintenance_Timeline.fodt b/report/Maintenance_Timeline.fodt index eee4c7a..47a87c0 100644 --- a/report/Maintenance_Timeline.fodt +++ b/report/Maintenance_Timeline.fodt @@ -1,24 +1,24 @@ - 2022-11-03T17:09:30.5000787642023-12-06T16:45:42.581886621PT2H11M15S52LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-11-03T17:09:30.5000787642024-04-24T21:07:21.446005367PT2H14M54S53LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 3766 + 8664 0 - 36117 - 16425 + 36042 + 14988 true false view2 - 9264 - 14573 + 12855 + 20669 0 - 3766 - 36116 - 20189 + 8664 + 36040 + 23650 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 687431 - false - - true - true - false - 2244410 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 687431 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 2261109 + true + false + false + true + false + true @@ -159,14 +160,14 @@ - - + + - + - + @@ -177,17 +178,17 @@ - + - + - + @@ -197,16 +198,16 @@ - - + + - - + + @@ -225,8 +226,8 @@ - - + + @@ -235,7 +236,7 @@ - + @@ -243,10 +244,10 @@ - + - + @@ -262,10 +263,10 @@ - + - + @@ -321,116 +322,132 @@ - - + + $ - + - $ - + + + + + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -451,7 +468,7 @@ - + @@ -467,338 +484,330 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + - + - + - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -895,10 +904,10 @@ - + - + @@ -934,71 +943,19 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + @@ -1015,7 +972,7 @@ - + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM DAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAAR @@ -1568,7 +1525,7 @@ - + @@ -1576,29 +1533,29 @@ - <for each="maintenance in records"> - CRONOGRAMA DE MANTENIMIENTO PREVENTIVO Y CALIBRACIÓN DE EQUIPOS - Fecha <maintenance.estimated_agended.date()> - Consecutivo <maintenance.code> - INFORMACIÓN DEL PROPIETARIO + <for each="maintenance in records"> + CRONOGRAMA DE MANTENIMIENTO PREVENTIVO Y CALIBRACIÓN DE EQUIPOS + Fecha <maintenance.estimated_agended.date()> + Consecutivo <maintenance.code> + INFORMACIÓN DEL PROPIETARIO - Nombre / Razón Social: <maintenance.propietary.name> - Ciudad: <maintenance.propietary_address.subdivision_municipality.name> - Teléfono: <maintenance.propietary.phone> - Movil: <maintenance.propietary.mobile> + Nombre / Razón Social: <maintenance.propietary.name> + Ciudad: <maintenance.propietary_address.subdivision_municipality.name> + Teléfono: <maintenance.propietary.phone> + Movil: <maintenance.propietary.mobile> - Tipo Documento: <"NIT" if maintenance.propietary.tax_identifier.type=="31" else "CC"> - Documento: <maintenance.propietary.tax_identifier.code> - Dirección: <maintenance.propietary_address.street> + Tipo Documento: <"NIT" if maintenance.propietary.tax_identifier.type=="31" else "CC"> + Documento: <maintenance.propietary.tax_identifier.code> + Dirección: <maintenance.propietary_address.street> - + @@ -1607,25 +1564,25 @@ - Equipo + Equipo - Serial + Serial - Mantenimiento - Preventivo + Mantenimiento + Preventivo - Calibración + Calibración - Fecha de Próximo mantenimiento + Fecha de Próximo mantenimiento - <for each="line in maintenance.lines"> + <for each="line in maintenance.lines"> @@ -1634,24 +1591,24 @@ - <line.equipment.product.name> + <line.equipment.product.name> - <line.equipment.serial> + <line.equipment.serial> - X + X - <"X" if line.equipment.product.calibration else "No Aplica"> + <"X" if line.equipment.product.calibration else "No Aplica"> - <str(line.next_maintenance)[0:11]> + <str(line.next_maintenance)[0:11]> - </for> + </for> @@ -1665,51 +1622,50 @@ - <if test="maintenance.technician_signature"> + <if test="maintenance.technician_signature"> - + - + Texto 1: - - - - - - </if> - - - <maintenance.technician_responsible> + </if> - RECIBIDO A SATISFACCIÓN: + - - + - INVIMA :<maintenance.invima> + <maintenance.technician_responsible> - NOMBRE + RECIBIDO A SATISFACCIÓN: + + + + + INVIMA :<maintenance.invima> + + + NOMBRE - </for> + </for> \ No newline at end of file diff --git a/report/Maintenances_Historys.fodt b/report/Maintenances_Historys.fodt index 892495b..c882940 100644 --- a/report/Maintenances_Historys.fodt +++ b/report/Maintenances_Historys.fodt @@ -1,24 +1,24 @@ - 2022-10-11T16:28:51.1019484802023-12-14T22:54:10.822837793PT8H7M43S107LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-10-11T16:28:51.1019484802024-04-24T22:10:17.750920797PT8H40M55S126LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 85265 + 119592 0 - 28092 - 12203 + 28033 + 12231 true false view2 - 5251 - 94317 + 5221 + 123072 0 - 85265 - 28090 - 97465 + 119592 + 28032 + 131821 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 2067644 - false - - true - true - false - 5476013 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 2067644 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 5633401 + true + false + false + true + false + true @@ -160,14 +161,14 @@ - - + + - + - + @@ -178,17 +179,17 @@ - + - + - + @@ -198,24 +199,24 @@ - - + + - - + + - - + + @@ -239,16 +240,16 @@ - + - + - + @@ -263,10 +264,10 @@ - + - + @@ -322,7 +323,7 @@ - + $ @@ -337,75 +338,91 @@ + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -413,54 +430,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -479,7 +496,7 @@ - + @@ -495,7 +512,7 @@ - + @@ -511,7 +528,7 @@ - + @@ -648,248 +665,268 @@ - - - - - - - + + + - + + + + + + + + + - + - + - + - + - + - + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + + + + + - + - + - + - + - + - + - - + + - - + + - + - + - + - - + + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + - - + + - - + + - + + + + + - - - + + + + + + + + + + + + - + + + + - + - + - - - + + + - - - + + + + + + + @@ -1017,28 +1054,41 @@ + + + + + + - + - - + + - - + + - - + + - + + + + + + + + @@ -1051,7 +1101,7 @@ - + /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgK CgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkL EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAAR @@ -1727,6 +1777,7 @@ + @@ -1737,11 +1788,11 @@ - <for each="service in records"> - <for each="maintenance in service.lines"> - REGISTRO HISTORICO DE MANTENIMIENTO + <for each="service in records"> + <for each="maintenance in service.lines"> + REGISTRO HISTORICO DE MANTENIMIENTO - INFORMACIÓN DEL DISPOSITIVO + INFORMACIÓN DEL DISPOSITIVO @@ -1771,7 +1822,7 @@ <otherwise test=""> Clase de Riesgo: No Aplíca </otherwise> - </choose> + </choose> @@ -1794,7 +1845,7 @@ <otherwise test=""> Tipo: <maintenance.equipment.equipment_type> </otherwise> - </choose> + </choose> @@ -1822,8 +1873,8 @@ - - CARACTERÍSTICAS TÉCNICAS + + CARACTERÍSTICAS TÉCNICAS @@ -1836,7 +1887,7 @@ Peso - <str(maintenance.equipment.product.weight) + " "+ maintenance.equipment.product.weight_uom.symbol if maintenance.equipment.product.weight else ""> + <str(maintenance.equipment.product.weight) + " "+ maintenance.equipment.product.weight_uom.symbol if maintenance.equipment.product.weight else ""> @@ -1845,7 +1896,7 @@ Medidas - <"Longitud:" +str(maintenance.equipment.product.length) + " "+ maintenance.equipment.product.length_uom.symbol+" Altura: "+str(maintenance.equipment.product.height) + " "+ maintenance.equipment.product.height_uom.symbol + " Ancho: "+str(maintenance.equipment.product.width) + " "+ maintenance.equipment.product.width_uom.symbol if maintenance.equipment.product.width else ""> + <"Longitud:" +str(maintenance.equipment.product.length) + " "+ maintenance.equipment.product.length_uom.symbol+" Altura: "+str(maintenance.equipment.product.height) + " "+ maintenance.equipment.product.height_uom.symbol + " Ancho: "+str(maintenance.equipment.product.width) + " "+ maintenance.equipment.product.width_uom.symbol if maintenance.equipment.product.width else ""> @@ -1856,7 +1907,7 @@ Voltaje (VAC) - <str(maintenance.equipment.product.voltageAC) + " "+ maintenance.equipment.product.voltageAC_uom.symbol if maintenance.equipment.product.voltageAC else "No Aplica"> + <str(maintenance.equipment.product.voltageAC) + " "+ maintenance.equipment.product.voltageAC_uom.symbol if maintenance.equipment.product.voltageAC else "No Aplica"> @@ -1865,7 +1916,7 @@ Voltaje (VDC) - <str(maintenance.equipment.product.voltageDC) + " "+ maintenance.equipment.product.voltageDC_uom.symbol if maintenance.equipment.product.voltageDC else "No Aplica"> + <str(maintenance.equipment.product.voltageDC) + " "+ maintenance.equipment.product.voltageDC_uom.symbol if maintenance.equipment.product.voltageDC else "No Aplica"> @@ -1876,7 +1927,7 @@ Tem Min Uso - <str(maintenance.equipment.product.temperature_min) + " "+ maintenance.equipment.product.temperature_uom.symbol if maintenance.equipment.product.temperature_min else "No Aplica"> + <str(maintenance.equipment.product.temperature_min) + " "+ maintenance.equipment.product.temperature_uom.symbol if maintenance.equipment.product.temperature_min else "No Aplica"> @@ -1885,7 +1936,7 @@ Tem Max Uso - <str(maintenance.equipment.product.temperature_max) + " "+ maintenance.equipment.product.temperature_uom.symbol if maintenance.equipment.product.temperature_max else "No Aplica"> + <str(maintenance.equipment.product.temperature_max) + " "+ maintenance.equipment.product.temperature_uom.symbol if maintenance.equipment.product.temperature_max else "No Aplica"> @@ -1894,7 +1945,7 @@ Hum Min Uso - <str(maintenance.equipment.product.moisture_min) + " "+ maintenance.equipment.product.moisture_uom.symbol if maintenance.equipment.product.moisture_min else "No Aplica"> + <str(maintenance.equipment.product.moisture_min) + " "+ maintenance.equipment.product.moisture_uom.symbol if maintenance.equipment.product.moisture_min else "No Aplica"> @@ -1903,22 +1954,22 @@ Hum Max Uso - <str(maintenance.equipment.product.moisture_max) + " "+ maintenance.equipment.product.moisture_uom.symbol if maintenance.equipment.product.moisture_max else "No Aplica"> + <str(maintenance.equipment.product.moisture_max) + " "+ maintenance.equipment.product.moisture_uom.symbol if maintenance.equipment.product.moisture_max else "No Aplica"> - + - Fecha + Fecha - Tipo de mantenimiento + Tipo de mantenimiento - N.º del Registro + N.º del Registro @@ -1943,7 +1994,7 @@ <otherwise test=""> Inicial </otherwise> - </choose> + </choose> <line.code> @@ -1958,7 +2009,7 @@ - + Texto 1: @@ -1973,40 +2024,38 @@ - <if test="maintenance.technician_signature"> - + <if test="maintenance.technician_signature"> + Texto 2: - </if> + </if> + - <maintenance.technician_responsible> + <maintenance.technician_responsible> - RECIBIDO A SATISFACCION + RECIBIDO A SATISFACCION - INVIMA :<maintenance.invima> + INVIMA :<maintenance.invima> - NOMBRE + NOMBRE - - - - </for> - </for> + </for> + </for> \ No newline at end of file diff --git a/report/Service.fodt b/report/Service.fodt index 56f0b17..f6e877e 100644 --- a/report/Service.fodt +++ b/report/Service.fodt @@ -1,24 +1,24 @@ - 2022-11-03T17:09:30.5000787642023-12-07T22:30:56.963125878PT5H24M5S114LibreOffice/7.5.8.2$Linux_X86_64 LibreOffice_project/50$Build-2 + 2022-11-03T17:09:30.5000787642024-04-24T17:14:31.967499741PT6H55M16S142LibreOffice/7.6.5.2$Linux_X86_64 LibreOffice_project/60$Build-2 - 68781 + 0 0 - 36117 - 16425 + 24532 + 10529 true false view2 - 9264 - 79086 + 3471 + 116265 0 - 68781 - 36116 - 85205 + 0 + 24530 + 10527 0 1 false @@ -28,117 +28,118 @@ false false false + false - true false - true - false - true - false - false - 0 - true - false - false - true - false - false - false - true - false - true + true + true + false + 0 + false + true + true + false + true + 0 + true + false + false + true + false true + true false - true false + false true true - true - false - false - false - true - false - false - true - false - false - 687431 - false - - true - true - false - 3942955 - true - false - false - false - 1 - true - true - false - false - true - false - true - true - false - true - false - true - 0 - - false - true - false - true - - 0 - true - false - false - false - high-resolution - true - true - false - true - true - true - false - false - false - true - true + false + false + false + false false - true - false - - false - false - true - true + true + false + false + true + false true - false - false - false - false - false - false - false - false - false - 0 - true - false - + true + high-resolution + 687431 + false true + false + + + true + + false + false + true + true + true + true + false + 0 + true + false + false + true + true + true + true + true + false + false + true + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + true + true + false + false + true + 1 + false + false + false + false + false + false + true + false + false + false + false + false + + false + 4068537 + true + false + false + true + false + true @@ -159,14 +160,14 @@ - - + + - + - + @@ -177,17 +178,17 @@ - + - + - + @@ -197,16 +198,16 @@ - - + + - - + + @@ -225,8 +226,8 @@ - - + + @@ -235,7 +236,7 @@ - + @@ -243,14 +244,18 @@ - + - + + + + + @@ -260,11 +265,15 @@ + + + + - + - + @@ -319,70 +328,110 @@ - - - + + + $ - + - $ - + + + + + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + - + - + - + - + - + - + - + @@ -390,67 +439,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -469,7 +518,7 @@ - + @@ -485,396 +534,518 @@ - + - - + - - - + + - + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + + + + + - + - + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + + + + + - + - + - + + + + + - - + + + + + + - + + + + + - + + + + + - + - + + + + + + + + + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + @@ -991,10 +1162,10 @@ - + - + @@ -1021,37 +1192,52 @@ - + - + - + + + + + + + - + - - + + - - + + - + - - + + + + + + + + + + + @@ -1061,14 +1247,14 @@ - + - + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM DAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAAR @@ -1619,7 +1805,566 @@ - + + + + + + + + + + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM + DAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN + FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAAR + CACrApoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA + AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK + FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl + 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA + AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk + NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk + 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAoooo + AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi + iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo + AKKKKAE61HNMsETSOcIoySalrxL49fFqHwvpc1pDKBIQQxBqJSUVdlxi5OyOsvPifZQ3MkYk + GFbAw1VtT8eR6bcQT3p8lPLLxxkncSeNx59M8e9eR/s8+Gbzxr/xVerKy6bvP2GF/wDlsQcG + Qj+7ngeuCem0nw39pn4/rH8UdY061uAY7F1tAUOAWUAt+IYlT/u18VVxk8fjoUaT9yLbfnb9 + EzujTjFO+59q6J8S7LWr6O3hl3Fjj7xruUuondow67lAJ59c/wCBr4O/Zn8S6t4/8UJb2G6Q + QgSzz87YlJIGT6nBwOpwTjAJHveofFeLSNWu7KKZpWSYo0hI+ZhgHP0xjHbFe3/aN8XHCQV9 + G2+1raeplKirNnvyurdCD9DTq5jwDqraxo/2lju3HrXT17id1c5GrOwUUUUxBRRRQAUUUUAF + FFFABRRRQAUUVHJKkK5dlQerHFAD8ijIqqdQth/y2WnJeQSHCyqSe2eaOUV0WaKKKBhRRRQA + UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFQR3Ec0jrGwYrjOPf/ + APVU9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR + RRQAUUUUAFFFFABRRRQAUUUUAFFFRzSCGNnY4VRkmgDlfiN4wh8I6DPO7ASFfl5r4m0rTL/9 + o74tNpJkkGgWJFzqtwpI/dknbCCOjSEEZBBCqxByAD0/7V3xalmuZbCz3zyswhhgiBZpGJAC + qBySSQAB1Jr1n4J/DxPg78ObPTpNkuu3h+16jOpzvuGA3YPdUAVBwMhVJGSTX57xbn1PKcK7 + ys5L7l1fr0R6uFouXTU7zVNe0/wV4fuWVY7PS9IsXuJvLUBYYYkJwAMAYA6DAwOK/D2z8U+J + PjH8R7e0020k1LxJ4iv2eK0jPLzzOXbJ6BQSxZjgKqkkgAkfq7+1nr0vhf8AZS+KmpRZaWbR + 5rMMeuJh5THPr+8/MV8/f8EsP2a4vDfhab4yeJbQDVNUjeDRI7hDm2swcPOAejSsMA4zsUEE + iQ18hwtmaWXVc0ru13aK7f0tX6GlePLP2cT7C+APwVsf2fvhVDpMTrdauYvtGpageDPOV+Yj + 0QYwo7ADJJyx+FvDHxWk8Ta4960pJu5mnIJ7uxY/zr9FNRnuNc8N+IGiJV5beSGBSfu/Iefq + Sf0HpX4yfB7xK0s2n/MRlIzz15Ar67h/FQx8pV4aqys3u7t3fzsZOLg+WW5+znwOmNx4DtJC + c7ua9B/irzT9nnLfCvSJT/y0Un9TXpf8Vffx2POn8THUUUVoQFFFFABRRRQAUUUUAIBiloqn + qErRW+E4kkIRfqf8mhaiehxPxY+MPh34P+GTrfiK/NjZNcx2VukUTTXN7cyEiO2toVBeaZyD + hVBOAxOFVmHisnjj4u/E3dPZyaP8G9DlX9ydUtBrniGQb+GkhEq2tqShB8stcMrZDAEEV8N/ + G39vvw03xh17xjbW7eLtV0ye50XwhZLMVs9JsVPlzXm8r/r7t1LnYu7yRHGZFGQbX7I/xX+J + f7avxoHhfxPrknhTwJDps+rX9n4Zhayk1COGWGP7PHdktOis88Yk2SAmMuuQWBA272iUoxtz + SPtzUfBGpxtAutftAfEOC/2qT9nbRdPSTjgiEaecA+hJz6mjUPD/AMRvD00E+gfGzULuNI8r + p3jfw3YX0M/BI3TWiWcwBOPmDMQM8E4x2uhfsafBbR9Nitbf4VeDJolHD3+iQX0ze7TTq8jE + 9SSxOe9cP8RP2MNH8PaRqOq/BuNfh34xUG4trTTppBo2qSqCRbXlkW8oI4ygljCPGSGDHbtJ + aXRiUodVodH8NP2i7/8A4Six8G/EHRIPCnie9OzTLvT7trvRNcYJl1tbhlV4pgQ5+zTIr7QC + pkByPoOC4W4iDr0Pr2r8y38e6Z8dPhXbGV5tPt9Zto7mKSOQi40y7U5SWNxhhLBMpIYYyUIx + gkH7U/Ze+K178WPgl4W8Ua0iwazdWz2+qouAov7aV7a5IA4AaWJ2AHQFQM8EzGXOmuqHOPJZ + rY9lx7UY9qrf2jb/APPVaadVth/y0/8AHT/hV2ZHMi7RWeNVjJUFXwxwGIAH6mntqdurYD7j + /sgn9aOV9g5kXaKppqVvIdok2n/aBFWWkCKWYhQOpJ4pWsO4+iqJ1S33YBZz/sqTSpqUDtjf + tPowI/WnysXMi7RRRSKG5HpRuqtJqNvHwZQf93n+VNGqQt0Eh+imjlb6E8yLgOaCPeqQ1WDO + C7Kf9pT/AIVZinjmGY3V/oaGmO6ZLSDpUcs0cKgyOEB4BJqM6hbf89k/OizC5Puo3VUbU7df + +WmfoCab/a0O7BDgYzkr/Tr+lPlfYXMi/Ubuka7nYKPUmqq6rb8ZYrnpuBrxH9sb4n6x8If2 + fPGfjTwxNarrel21ubaW5iE8SNJdxRMSmQGIWViATjOMgjijlfUL9j2m51eC2ilk3ZWNS7ux + 2oqgZJLHgADqa+V/i9+314W0HTdai+H1nJ8U9U0yCWe5k0edY9HtBGgkbztQbMbNsJIjh8xm + KlcKeR8R/E74kR6vGLv4tePtU8XR/K66frF0IdPZkJw8em2ypExBPJKOe5PQjFg+MGn+N/hJ + 4kn0e2fT9KisL6xtrdo1iARbY/djQ7UXLkBQcADPGcDJ1LfCjdUW/iZ+u3wd8SXHjX4c+F/E + V7HDBeavo9jqM8duCI0kmgWRlUEkhQXIAJJwOSa6nWdUi0PR9Q1KdZXgs4JLiRYIzJIVRSxC + qOWOBwB14Feffs5zxw/Av4d+Y6pnwvpOMnH/AC5x16ckkcynayuvQ4Oa1le9zCPY8E0n9s7w + Tr+mWeqab4d+IeoabeRJcW13a+BdWlhnjYBldHW3IZSCCCCQQcirv/DX/hP/AKFH4l/+EBq/ + /wAj18HXv7btn+x5q2sfBnV/DesXx8H6peWVhcQ3Ee1tPad5rMfNyCIJYlwc4AHNe0fA79se + w+O/hi/1jTILrS/sV39kltbyRWcfIrK4Kk/K2SBnnKmsnJrobxgpdT61+Ffxy8MfGG916y0M + atZ6lobQLqGna3pNzptzAJkLwsYp0VtrKrEHGDg+1ej18XfCzx6NP/bG0d5LhhbeN/C8+lNG + oyJLzT5TcwsT1B8i4ugMnkR+1faB6VUXdXIkuV2AdK8M1L9r7wNY65rOmW2m+MNck0m/m0y6 + udE8JajfWy3MLbZYxNFCyMyNlSATgivTfiL41s/hv4B8SeLNRybDQ9OuNSnCnkpFG0hAz3IX + AHqRX57/AA6+NUnwi/ZisPEmqTyfbIdKl8QXhmI33F9du1yQfeSacKB2DAHoaUpWHGPMfYlt + +1r8PZ/hbeePjc6rb6NBqraFFa3Gk3EV/eaiHEYtLe1ZBJLKZCU2qvDK+cBGI5q5/aO+KVzI + J9L+AGpHTCA6f2r4t0myvWUgEZt/NcI3PKu6kEEHFfJv7UVn4y/ZE/Zt/Zs8RadpsWq3Hhee + 5m1u21JpJIv7VvrZmeWTy2Ullklu9r7uGZeuRUv7O/7bEPx3sNQgn099C1/TlV57UT+dFLGx + wJI2IBGG4KkEjKkM2ThSk1rYcYqWlz7q+E3x+0b4o6zqvh2XS9V8JeNNIiS4vvDWvRJHciBm + KrcQvG7xXEBZWUSROwBADbSQD6nXwv8ADPW7zxr+1/8AD5dMlLz6DoesXGtFD/q7OcW6W8ch + Hd51DqpOSI2Yccn7nbpVRd1cmS5XYWiiiqJCiiigBCBXzVqn7Y7eILi8X4W+ANT+I2m2dzJa + v4hbUrTStJuHRij/AGaad99yqurqZIo2TK8MwOa9h+MOlaxrfwk8bad4faRdevNDvbfT2ik2 + MLl7d1iKtng7yuD2PNfjl8Cf28LnSn8OeBPE3hy30iys4rfR4L2weRPs+xViUzRSFickDcQw + wSx2npUSbtoXFJuzP0x0L9sI6VqWnWfxL8Aar8OoNQuFtYNb/tC01TSo5XYLGk9xbyFrcuzB + VMsaqT1YV9I1+X/xu8eQ3Pwi8Yafdqbj+0NNuNOgtQpd7i5lQpBEigEs5kKbQATkZHQkfpB4 + EsdS03wV4es9al+0axb6fbxXsuc751jUSNnvlgT+NKEnJajnFReh0FFFFaGYUUUUAFFFFABR + RRQAUUUUAFFFFABRRRQAUUUUAFcj8UNfHh3wde3OdrFSqn3rrq8M/a31htJ+HJKkjezfoKib + tFlwV5I+Wvg3p3/C1P2i21C8Hn6X4aiOovnlWuCSsAPuDvkBHQxCvru4mNxKXP0A9PavmL9h + e2S48JeN9dPM95rYs2bvshgjdQT6AzufxNfTIGK/izxFzWpi85nhb+5Gyt8v+CfX4Kmo0+bq + cR+014Ti8Y/szeONJnMot2017qbyADI0cTCZlTIOXKoQuQRkjPFdzbLp+m6Hpek6JFDbaJZW + 0cVrFbYEQiVQEVccbQoGMcflWpNdLDpyLgNvQKAemCOcj0ryz4dSN4RuZ/AN3uH9lQedokzD + i70sMFjVT3e2LJbuOTt8iRj+/AGeY4yrLLFgsJOzik5JdYtJN/Kyv5PsmZ04L2vPJbntPhyN + W0YKekhfP5kf0r8YfF3gqb4NftCeKvCM8Zgh0/VJDaqx+9ayHzYCCOCfLdBkdCCOCCB+zPh2 + bOnKvdWYH88/1r5d/bv/AGWrz4radZ+PfCNqZ/GWhweVNZR/e1GzBLeWM/8ALRCWZOmdzqcl + lK/tnCGMhQwdCT+FxSf3LV/O/wB+p5WIi/aS9T3f9lzxJb6t8LdKtkkBlhQjbnnkk17J1Ffl + v+zL+0oPCEMFpcyyQPC5ikikUqysCQyspAwwIIIIBBBBAORX3R4V/aa8H65ax+fetbykc5jJ + H6Zr9nhUTR506bvdHsGfakz7VyVv8V/Cl1Huj1mEj3Vh/MVpWfjTRL/Ag1KByf8Aax/OteZM + w5X2N2iooZ45lzG6uPY5qWqEFFFFABRRRQAVy/xCuruz8LapcWGTew2VxLb7Rz5qxMUx/wAC + ArqKo6kpEKygZMTB8ew6/wCP4U47ky2P5gPCGn2ur+K9FsL5/Ksrq9ghnkzjbG0iqxz2wCea + +/LPxhfeGNa8O654UvY/D2ueG3Y6XIkAe2SJlCSWskOQGgkQBWUFSCqspBUZ+Rf2pfgjffs9 + fHXxV4MubZ4bG2umn0qZwxW4sJCWt5AxHzHYQrEE4dHXJKmp/CXx3uLe2itNeWW4ZAFW/T5n + IHA8wHqfVgcnHIJJNYzjK6aOim46p9T9bvhZ/wAFGvCd1awWXxHsp/h/qigJLf7JL3RLhi20 + GO4jUvBnlts6IFHBdiMn6n0vx1ovivQLbXNJ1Wx1XRifPTUtNukurZ0UEsVkjJU4APQnoa/C + 3TvH1nqY8ywvo7jAz+7bDAepU4YfiBU3h7x54n+G+vR698O/EMvgnXGlVrm7sBiK6jAb5Jrf + /VTjc27EqtgjPU041dbSRMqKt7rPSfgN4c+MviCy1K3T4S+M5bW81Ca/0yT+zPstqkU8jOYx + NcNFGFDliCCfvknAAr9Ev2Mvh94v+G3wgv8ATvGuljRNYvPEGpaomnm8iujDDcSh1BeFmTJJ + ckKx6+9eXfsuf8FCdP8AiVrumeDPiTb2WgeLb2QwWGr2xK6Zq0pPyREMS1vcMCAEZmR2UhWD + FYz9s3DQyadI0caxtkBgAAQcjrW0IxT5l1MakpNcsuh+WvjL9qL4tt8TPiRpsXxM1bStP0rx + bq+lWVnY6fpwWG2gunjiUO9qzkhQBksScZ65J5DVvjN8Q9ZyLr4veP2Rjkpb6xHaDPsbaGNg + PYECvmH9pXx7r+gftJfGKx0/UGtbUeNdacIsaE5N9Lk5Iz2Fch4G+IerSeIhLqus3UllHDI7 + rLKfK4HBKjgnJ44znAHOKwkpu7ubx5FbQ+5vg3+2Xr3wjk+I2jWY1Txz4q1C7sHsbvxVqlzd + 2emwCzBeSaV3aWQtK52woQWwxLIFGcHX/jb8RPF2oG+134qeL5p2yPs+jak+jWagnosFoY+A + MDLs7cZJOSTwH7Ivws1z9sT4pano2n6lJ4R8IaVAt7q+rQQLLdS7iscUS7sqsjhTgnhViYkt + gKfnn4lX/ib4Z/FHxX4YXxPqN+dA1i70wTTTsyy+RM8W4oxK87M4wetFptLWwJwjLa7PtLwX + +0h8TfhhrEOpaH451rxFbRuGuPD/AIu1GTUrO8jAIMayylprdiCCHR8AqNylS2fffiR/wUrs + tb8KaXbfC7TWl8R3Vur6hdeIIX+z+H5NxWSBogVNxcrtfCgrGPkYsQdtfml4Z+LaX+lXEmpu + tvd2qhnZBxKucAqM9ckAjpkgjgkD2n9jL4Jax+2V8QNes31m48IeCdDijuNRutLjjN7NJMzL + DGrN9x2EcrFgCAIsEEkGnB1NUE1T0Z1WsfFzxt4mupbnxB8SvGmrzzYMkceuT6fagjulvaGK + NBkkgBSRnGTgVp+E/wBo34mfDjUft/h74ga1qJAGdH8V38ur6dOoHEZ85mmiBOBvikUjHQjI + Pxv8UbnxB8Mfir4v8LR+J9Sv08P61eaWs887nzhBO8QYqSRyEzjkc10Xgv4kT69ayxXuwX0A + BZ0AAkU8bsDgEHrjA5GMdpanHW5acJK1j94v2efjRpvx1+F2ieLtOiayivo3S40+WUPJYXUT + lJ7d2AGSjq2GwNy7WwAwFeaftaftg6f8AYrLRdP09PEHjfVoGuLDSXuPKgtrcOU+13bAFli3 + AhVUbnZGVSpBYeQ/8ErNXkuvhT8QrQH9zB4pM6c95rG23j6EpnjuSe9fEf8AwUP8c+IrD9tP + 4i6fZPumb+zIIC672jiGnwMqoGJVVJkdzx1cnjNbu/KpI5Yr3nF7I9D8cftZfFTxldBNb+J+ + saT9sm/0XSPBkS6YoJAzFF5KPdygHHJlZhnnGcVzWs/ELxRp15aW3iDxX8R7O9ugTb/29rmt + 2jTYx9wzSIGPI4XJ9q9//wCCQGk2t1J8T9X1cx3njG2l06yN8wDS29jKssgjjfGVVpEYsFwC + YlznaMfUX7fF74Ttf2UPiL/wlFzFHaNpsg05p2yTqYBazEPcv5oQ5XkKGJ+UMRHI5K99TT2i + i+VR0Pzms/jD450m6in0/wCKPj6xMR+WP/hJrq5ix6GO4aVCPqp/Cvd/g3/wUT8VeC9as7T4 + pT2/ijwxNMEn8TWVklpqOmBicSzQQgRzwqSu7y0R1Xc22TAU/mZpnxW12xcfaJ1v4e6zKAx5 + 5+YDOfrke1ehWXi631zS/NXmGZSkkb84yCGUj6H8Qfes05xe5q1CatY/oPkvk1HT4JEkWRTg + iSNgysCpIYEZyCMEEcH6V+P/AIa/bY+O+r6Bp9/cfFa6jmuIVkdI/D+kAAkcgZtCcfWv0i/Z + LvZtQ/Zc+E087mSVvC2nKzNnJC26qCSeScAc1/P5afEDXrGxis4b/wAq3hXYirDHkAdBnbk/ + ia6KidlynNTtd3PtTXf2ivin4kyL/wCLfjUBjll0+/i09Tj0+zQxsOvYjP4U7w3+2H8Tm+GC + +CNM8Sato0VvqeoSaj4quLxrvWNQDzOEihnm3GFEXbmUZcsMKVAbPyJ4a+IF7ZwahdaheTXZ + VUWGF5DgsSeAOg6ZJHYfQV6D4f8ABt/rn7N3j74s6t4hv9Jj03V7HQdBsrCUQw3d5KTNcK+B + kiOAbgBgkvkthSGwSlrqdD5LLQ9l0/43/EbRL2K+0v4q+N7S/iJZJLzXbjUIGbGAZbe5eSKU + dMqy846jrXnfx2/bl+OXxL0nX/CfifxZbf8ACP6w7/a9HstJtIoY1S4LpHFL5XnbFMaFS0hY + gDLMSSfG9L+IGsXGk3VuJWmv4grwyiMMzLuAYEYOeDnOM9cngV9Q/Db4MeG/FX/BO74x/FHx + H4dt7nxtZaytvpusSb0lhjVrBGCqGC4zLIOVzkn2w4KWt2KTjpZHxXe3txqV1Jc3VxLdXMp3 + STTOXdz6kk5J9zXuPwfvhJ8NbvTXdkjuZbiJivUB41Uke+Ca8ErodM17WtP0ie1sy/2Bt+8r + AGHK4b5sHHHv705K6sgi7O59pWH7Xnxy8DeHdJ07TPiZcLpumiz0+3tX8P6YQsAeOFVLG2LH + CYAJJPAyc1+0unKEWdQMBZWAFfIHwQ/YS+Buu/C3wHrdx8NtJn1WfQ9Ovp7qS4uQzzvbxuzk + CTGSxJ6d+lfYNlBJBG/mEFmYsSD/APWFWk0rNmLak7pWPxl/4LLfDL/hGP2idC8YwQCO08U6 + Ooll/wCel1bN5T5+kTWw/CvEf2LPHjeG/FevaKZNsOpWizrk9ZIWOAB7pI5/4CPSv0g/4LEf + DL/hLv2ZrDxXDCrXfhPV4ZpJmHzLa3H7iQDjvK1sT2wtfjn8OfEB8L+ONH1ENsSOcJIxPSNw + Uf8A8dY1MlzRZrB2aP0N1j4oDwfr/g3xibl4U8K+IrHVJ3iGW+yFzb3a444ME8pPToOwr9cA + wZQQeCOtfhJrGrJrOlX+mzP+6u4JLdznpuUqT9RnP4V+vH7H3xGk+Kv7Mvw78RzySTX8ukx2 + l7JKcu11bk285PJ5MkTn8aypPSxpW3ueV/8ABTPxidL/AGebbwfBI6XnjfW7PRC0T7Xjtw/n + 3D+67ISp9pK+T9EtB8YPid8Ovh3HHBJZa3rsE17bSg7Tp9lm8nXgHAIhjQZ4y4Het7/gpP8A + EhPEH7Tfhrw3FJHJa+C9Ee5k2nlL2+YAqw9oIo2H++fWuh/4JmeFX8YfGfxr43uFf7J4a0qH + RbTemUa5unE0zK395Y4YVOO0vvTes0uwo+7Bs+m/2qP2mfh/8J57LwN458Fa345t/EVhNdPp + 2n6dbXlu8EciKwlWaaMfeZSOCM4ORxXw3bTfsxaVqk+p+EPg78WfDl3MnlS2ll4gi06CdCQx + R3Oos4UkAkA4GBjoK6X/AIK7+OZvAHxe+HGoQWy3Uk2g3tvsdioGbiJs5AOfu4x718WeBPjX + qvi7XZbO6tbS2t1t2lBh378hlABJYjGCegFVLmWxMFF7s/SD9lP9pjwz4a+KPhf4X+DvgbB4 + C0fxRd3Ik1d/EaXl5JNFbzXBefCSNMTsKhnnJAbjgYr9Aq/Gv9kTWDqP7Y3wdUnO2+1I/wDl + MuRX15/wUz/bBvv2bvh1pfh3wxcyW3jDxUZFS8gYCWws0wJZUJztlYsERsED52HKAFxd1cU1 + Z2PYfjX+2b8MPgZqs2h6rqt1rviuNBI3hvw7bG9vkBCkeYAQkGQ6sPOdMg5GRXgGs/8ABTvV + 1vCND+DFxc2RyVm1nxPbWcpGTjMcUc+DjGQW4JI7V+V+lfGPxCyzJoPhuCSBpGlmZknuZZJG + OTJLIGBZz3ZuT64wB91fsLfsv6D+1f8AD7WfEvjbxVrelarp+pNYf8I74bu1svsqCNGWWbcr + ykuWYrlguFOAecK8r2Q7RSuz3Dw7/wAFQAHZvFnwi1vTLZeBN4f1e11Vvr5beQ5H0Un0BPFf + VHwf+Ovgf48eH5dY8Ea/BrNvBJ5N1AFaG5tJMkbJoJArxtlWxuUbgMjI5r88/wBrf9jS6/Zq + 8Ix+NvDHibVPE3g2GeG21S013ynvLAyybEuFmjWMSRF3jRlZSy5DBjzj53+Hnxu1T4G/EjSP + iHoryfbNMYJqVtG20alpxYfaLaTsflG5C2dropA4pc0k7MOVSV4n7RfGH4qaT8E/hpr/AI51 + 2C8utJ0W3+0XENgivOy7lXCKzKpOWHVh9a/OD4ufEr9lH42+KLvX9d+BHxDtvEVy4km1bSor + XT5JXySXdVv1RnJOS7KWPGTX2H+3nqVrrH7EPxLv7KdbmzutFjngmjOVkjaSJlYeoIIP41+I + d1+0Lq8jk2+m2ceT/wAtmd/5FaqXN0Jik9z7q8PfH/4YfCDXo/Fvhn4C694n8Q6fG8kGueOf + GMdxcQKBuZowXuRE/GAyIGxwWwTX6bfCnxsfiZ8MPB/i82Y01vEGj2erGzEvm+R58CS+Xv2r + v278btozjOBnFfhNrHiItpF+N/W2kHX1Qiv2n/Zt1O10T9lD4Wajf3MdnY2ngnSri4uZmCRx + RrYRMzsTwAACSewFTCTe5U4pbHoPjDxjoXw/8OXviDxNrFloOiWaq9xqGoTrDDGCQoyzHGSS + AB1JIAySK+SPGX/BUDwTbmRfA3g7xH42UAPFqEyR6TYzqRkFHuSJSAcZPk46kE4r83f2r/25 + NW/aJ+KN5qn2N5PCml3Lp4c0y7kIgt4xkC4kiHDXDj5ixJ2A7V6bj5MPjN4ruLR71dLtHtVO + HlEExQHvlt/0zz3FU2+goqPVn6if8PTfFOzP/ClbDd/d/wCE0Gf/AEhxXa+Df+Co3gq5MMfj + jwd4j8EbgWlvoUj1ayhUDJLvbkyjv/yx9CcZxXy9b/sg6rJ+w8vxzl1XUR40+xjxC2hxyqNO + /skNkoEOTv8As+ZxIWLZwmO9fMemeObbVoFuLO58xOM9QyH0I6g/occEjmoblEtRhLY/fbwb + 420H4ieHrPX/AAzrNlr2iXilre/0+dZopMEggMpIyCCCOoIIOCCKrfEXxzY/DPwD4k8YapFc + z6boGm3GqXMVoqtM8UMbSOEDMqliFIALAE45HWvxg/Z1/ac1T9mL4hxeItPeaXwreTL/AMJJ + ocP+ruoCQHuI0JCi4jGWDDG8Aqx5zX6vftP6tZ6/+yF8VdU066ivdPvfBOp3NtdQsGSWJ7GR + kdSOoKkEHuDWkZcyMpR5XY8ST/gql8PJlUx/D74hncMrus9OUHIyOTe1zeuf8FUjH/yAvhDq + l5lgFbVNfs7QY7kiPziD7YNfk43xv1RY0SKwtV2gDMrO3QY7EV2uo/EO20bT4Lq7cmWRFZYY + xlmJAJwCeACepPHueDDlNdC1GB+ztt+2z4F0X4CeDPiV41nXwzN4qsftlh4dtZWv764bGTFA + iorS4yoL7VVSy7ioINeC63/wVYuPt7/8I/8AB66u9M6xTa14ihsbhh2zDFDOFPsXr8wfhldf + Ev4o6vFo/hLw5qPjfWrHTBEvlwz3k1rYwjCxrtOIoVJACgAF2A5ZgKo6P8aJZp1j1O3jijYg + edbFsL7lSSSPUg59j0pycugRUerP19+FP/BTvwX4n1ey0rx74cvvhrPeSCKLVLi7ivtKViwV + VkuUCtFuJ4aSNUABJYAV9pkZr+eKbXY7mJ4pQs0MqFWRjlWUjBB7EEGv12/4JtfEm7+Iv7Ku + gRahePf33hu6ufD0lzJjc8du/wC4B46iB4V9TtyeTRGXNuKcUtj6ooopK0MxaKKKAEHSvl79 + vLVhY/D20h3YaQyNj2AFfTs86W8bSSMFRRkk18Aft8fEq31aGK0hlBjhVlGD155rGo9DWkve + Mj/gnd4th1Hwz488Pbx9osdXj1DHfy54RGCPXBtmz6ZHqK+ufUV8MfsJ6W3gnS9R8W3oaOPX + ZhCc5/491+6xHfDEsDzkMQOpz9yqysqspDKwyGXkEHoQe9fx/wCKfD2IynN1jJp+zrJNPzsk + 169T2cmzSjj1OnTesHb/AIJcf9/ZxkcmM4P0/wA4rlvGfhCHxfp0MX2mbTdTsphd6dqtsAZr + K4CsokUHhgVZleNsq6O6Nw1dLbzeS3PKkYYYzRcW/lEMvMbchs/pX5mq9X3MZQdpx0f5L5Na + M93lWsJbMwPhb4/nv9VufDXiC3j0rxZaxCaa0iJMF1FnaLq1LctCxIBBJaNsI/JVn9Wikryb + xX4PsvF9vai4lnsdQsZvtOn6pYsEu7KYAjzImII5BKsjKyOpZXVlYrVrwX8U7iHXYfCnjCKH + TfEbqxsb2FSllrKKpZntyxJSQKCz27sXTDEGRF81v2PhbOcPiaXsYe7Jbx/y8vy9NTysRRkp + a6nL/G/9jjwf8YL+XXbUv4Y8Vso3anYIClwRwPtEXAkwMDdlXwqgMFGK+aNe+H+pfAnVo7Dx + JrOl3efnj+w3O+ZkycM0B+dQcHkblHQtXqX7QX7Xdyk914a8CXIjaNjFd64mGCkcNHBnIJzw + ZDwOQoJ+ZfkyWWW4nmuJ5ZLmeZzJLPM5eSRz1ZmJJZieckkk9TX7Bh8VVw0V7OTt26fLqfoW + QcEVswgsRjXyQey+0/8AL8z2WT466daxCO0sr5yvBdlRQfp85P5gVteHP2g5QzSRWF0wj5fZ + EJCo9WCkkDnqQBnjNfP1Phmlt5Y54JXgnjOUlibayn1BGMH3Fd6zWunc+8q8A5XOm4wun3uf + ZPhX9sKyj2JvjfkcHivdfAfx40fxaqJJKsUje9fn3pXiXw94xYWXjWzWO4fCpr9mvlSoegMu + 0YPsxDKMjKjBatzUvBHi/wCE8Q1rSLpvEfhgKJftVrzJFGRkMygnKY/jGRgZJHAr3sLmcauk + tGfkOdcKVstnaOq/H5d/zP04hnjuIw8bB0IyCDUmAK+OPgj+1Al1HBBcz70OAVY8j8/5V9Ye + H/Etl4js0ntJVfcMlQea92E1JaH59UpSpuzNiiiitTIKilkjjX946oD/AHiBUg5ry/8AaL8V + 6h4H+Cnj7xJpU62+raL4c1LUbOZ4w4SeK1d4mKkEMA6qSCMHGCMZppaibseSfto/sZ+HP2s/ + CMcCzx6T4z0tWbRdbVCwQHk284Ay8LHnIyyN8y5y6Sfih8cf2fvHv7Ovi6Tw9470G40m5LML + W7xvtb5FwTJBMBtkXDKSB8ylgGCtkV1Hj/8AbI+NPxKSQa58UvEbxypsktbG8NjauDg4MFuI + 0IyAeVOPxNfr9+xh8E9Cuv2Kvh74X8RaNp2v6fq2mLrd7a6paR3EVzJdSNcozqwILKsiAMQW + ARcHgGnpIWsT8FIZXhlWSN2jkQ5V0JBB9QR0rrdG+IN1bbYr9muY8YE38a/X+9+PPOc9q/V3 + 4+/8Ehfh94ut7vUPh3e3Xw/1kqTFZTO95pUrYJAIYmaLcxALBmCgcRnpX5Y/G74HeMf2fPHl + 14S8baUdN1KFRLDKjb7e8hJIWeGQcOjYPPBBBVgrKyiZR0LjL7zVm1qDULR45Ns9vMuCpOVY + f0II68EEZ4Ir9dP+CcX7Smo/HT4R6joPiO+m1LxZ4Rkisrq/uGLyX1nIGNrPI5A3SgRyxuSS + SYgzEtIa/EKx1F7TKZ/dnnHpX3v/AMEeNZuLj9o3xjarKy20vhCaV488M6X1mEJ9wJHA/wB4 + 0qfuuyHU96N3ufJ37V//ACdN8ZP+xz1n/wBLpq810y1F5ewwuSEZvmPoByce+Aa9K/av/wCT + pvjJ/wBjnrP/AKXTV5ja3BtZhIOoB6e4pgfrT/wR30+1i0L4s31vEsTS32lW+1BgBY4JmHuT + mR8k8nPJNfm9+1B/ycx8XP8Asb9X/wDS2Wv0c/4IxTG4+H3xOkPfV7H9IJBX5x/tQf8AJzHx + c/7G/V//AEtlq/sohfEzz7S7dbm9hjk+4Tlu3A5PPbp196/XX/gj9YWyfDj4k38EKRPNrlrb + kRgAbY7UEDj3kY5PXJPUmvyDt5zBJvHXBFfrx/wRpmM/wT8eOep8Spn/AMBYxSj8SCfwn5pf + tRf8nN/F3/sb9X/9LZa4nwpeGy1N3BxuiK/hkH+ldr+1J/yc18Xf+xv1f/0tlrzOGYwSb164 + xUPVWLjsj9i/+CQEn274V/EJif8AWeJIhn/tziFevftUfA79m1o734ifGLT9N0m4YrbN4iW9 + urS6uJBHsREW3cNPII0GFCOdqE4Kg48E/wCCP+s2mj/s+fEvVdTuFs7Cz1w3NzcP92KJLNWd + j7BVJP0r88v2n/2lvEX7TXxW1HxTq8slvpiyPDo+klyY9OtM/LGozjeQAXcY3MSeBgDS9ooz + teTPc/Df7V/gv9mf4g69rH7P+i+I7uHU7P7BNJ8Q9QjmtWUSiRWjtbdFk3KQ215JydsjAqCe + Pn/4/ftCeOvj94hg1Dxr4ovNde33GC1bbFZ2m7AIhgQBI8hVBIBZsAszEZry5ryZuN+PpX6j + /s2fszeHPh//AME7viD8SrzTYLvxv4m8H6zcpqE8YaSxtDBPFHFCTnbvUFmZQCwkCkkKMxFN + lu0T8sa6TwzqX2OxkjzjMhbr7D/Cubp6ytGNqnA60MpPqf0Pfsf/APJqvwi/7Few/wDRIr+d + /wBfrX9EH7H/APyar8I/+xXsP/RIr+d/ufqa1nsjCnuy7pIjF8jyAFE+Yg9D7V+i/wAF/wBj + /Xv2rf2JfA2maF4p0/w1ZQ+J9Y1XUEvreSX7TOTHDCy7TxtRJAc9d4x05/NxSR0OK/c//gk5 + /wAmf+F/+wnqX/o41kl3NJNpI+V9P/4I1eM9NmaWL4meH2Yjbh9PuMYJB7H2r3b44fBRv2ef + +CXni/wJNfw6re6fZrNd38EZRLiabVYpSwB5wA6qCecKK/QSvlz/AIKUf8mb/FD/ALB9p/6X + 29UrdidbrU/n/rXsdQ8jR54M43B+PqMVkUVD1Ndj+ln9m/8A5If8Pv8AsWNJ/wDSOOvTPSvM + /wBnH/kh/wAPf+xY0n/0kjr0z0qpGUTzz9oH4cL8YPgj458GFEeXWtIubW3MgyqzmMmFyP8A + ZkCN+Ar+aB1aNijgqykgqeoxX9Udfzoftx/DYfCn9q/4laCiLFbNqr6jbKi4VYboC4RRyeFE + oX/gJpFoi0nxU19pdpcM+XkiUsc/xAYP6g1+m/8AwSP+I39sfDnx94Olkdn0PWV1KDzG+Vbe + 8jLbVGeAJoZycADL1+PWg6wbex8gt/q2OPoef55r2b9mv9pqb4D6t8TLhbi4ifxB4PvNEsjA + T+6vW2m3l47ofMwTjG489jlGPKzSTujV+LnxZX4o/Gb4g+OBP5tvrutTy2szDB+xxHybYHp0 + ijX061+rv/BNb4eN4E/ZS8P6jcwtBqfiy4n8SXKsQeJ2AgwfT7PHAcdsmvxN8BeHL34h+LPD + XgrSmAvdbv7bSYGIOA00ix7jgHgBiSccAE1/SR4f0Gy8L6Bpui6bAttp2nW0dnawL0jijUIi + j2CgCqitWxSeiR+Tn/Bb7/ko3wv/AOwVd/8Ao5K/Pn4c3v2LXZZM4zbsP/HlP9K/QX/gt9/y + Ub4X/wDYJvP/AEclfnFot19jumfOMoR+oNU9UTHc+0v2D9S+3ftqfCVM523Oon/ym3NdL/wW + jsr2P9pHwjdTBv7Pm8KwxwOVIXet3cmQA4wSA6EjJOGHqK8y/wCCceo/bP23/hYuc4l1A/8A + lOuRX6h/8FAf2Q/+Gr/hLDDo5ih8ceHnku9Fmmbak25QJbVmPCrIFQhj0aNMkLuyo6Ictz8T + fBXiOFNDhtEYLLDuLx9CSSTu9xggZ7YA9K7fwR8VvEvwy8Ux+JfBviC78M+IY4jCL6ycfvI8 + g+XNGwKTR5CnY6sMqCACAa8X8TeFtZ8CeI77RNe0650XWtOmMNzZXUZimgcdiDyOoIPcEEZF + RW/iG5iwJG80dMn7359/xqXHW6KUtLM+/b//AIKff8NCfBLxH8KvitocOiXuuWq2ieLtEhea + CFxJGyyTWZO8AbCzNE7HONsXavV/gv8A8Ez/AAX8X/DFt4kj+OknjHwzqEeCfC2lw2u0lQXi + Z5nnZHG4AqyKy5wVB4H5bL4gGzAYqv8Ad/8ArV6d+zv+1J4t/Zm8fxeJvCd6fJmZF1TSJHIt + dThUk7JVGcMNzbZANyljgkEgvrqhWtsz9j/2yfCFp8PP+CfnjPwrYT3NzYaH4ZttMt57xlaa + SOEwxq0hVVUsQoJIUAknAHSvwBr97f2qPijofxr/AOCdHjTxz4blaXR9b8Prcw+ZgPGfORXi + cAkB0cOjAEgMpwT1r8Ej0qyEerahrm6xuRn70TD81Nfqh+0z8RJfh9/wSa8KC0uGtrzXfCWg + aJEy91mtoTMv0aBJh+NfjhPrPmROoP3lI/MYr9SP2+vNH/BLr4ChP9Xt8OiT6f2RNj9cVnFW + Lk72Pygr0a41FbLw/LaRnCR2zRgD12kE/iSSfcmvPFO1gfQitC41UzQumfvAj86qSvYEf0eW + 3w/h/wCGXIvAyDFv/wAIaNFAbn5fsPkjOOvHpX84WiavLot8lxETsI2yIDwy9x9e49Div6er + Hb/wiFv/AHPsK/l5Yr+XMdKrchHp/wDbwkX7wdGH4EH/ABFfqd+z38QJPHf/AASX8cQ3F0bu + 78P+F/EGhySSHkJDBMYV/wCAwSQqPoK/HGLU5I41Tn5RgfQV+on7DDu3/BLH9od27/8ACREf + jpFvn9c1EVYuTuj8rB0rfs7cau7XF/K7LgKiqccDgdjgDoB9fxwKtR38kcaqBwBVO/QFbqfu + J/wSe+EGn/D79l2y8TQ27R6x4yu5dQuppVAk+zxSPDbRkgDKhVaQe87HocV+I/isBfFGsAAA + C8mAHoPMbiv6F/2Ef+TPfhL/ANgGD+tfz0+LP+Rp1r/r9m/9GNTI6m/o+uMmk2qs3Kpt/AEg + foBX7Cf8Ed5PO/Zj8Syf3vGV8f8AyXtK/EuO6kjQKDwOn61+1n/BGZt37KWuMep8W3hP/gNa + VKWtxt3Vj7m1K5a0tWkTqK8s8QfHNfD8rJLAjFSQc8V0vxJvNYg0cz6Bfaet9EMmy1JCYblT + 1XepDRvxw3KjJypyCvyx4l/4SP4i2V7caf4cnlurbC3ltp90k8ls5yQrodknQEgqjKw5VmHN + a+wnODnDW3mcjxdGlUVOqmm9tHZ/NHqGofth6dp+fMtFJHo//wBaseT9vPw9aqRLp2SO/nj+ + WK+KviN4Q8eWMsm/wvrcK4yBLZSJkHvyB/KvJ/8AhWvxS8SXHk6X4N1m8djgbYdo/Uj9OayV + DEvVRf3HRLGYOOjqL70fcXxO/bzs9SsZILGL7OpBHyyZz+lfJ0Uus/tNePk0y0Eg0yJvMv7z + J2wx5BK5HRiMAdwDnBJAOt4B/YX8d+JJorrxtqMXhrTThmtoW8y5cdxjjaR3BHPZhX1d4W8B + aB8MfDsejeH7FbK0Tlm6vK3PzO3Unk9e5JOSST7uAyqUpqpX2XT/ADPmM0zyMaTo4Xd7vt6e + ZSXT7Tw/pNrpljGIrO0iEUUagABQPQcDPJ44ya2/A/xnsfCjw6V4kvY7TTZJFitb2dwFhd2C + rE5/ulmAU9icHgjby/ivWbbR9PuL27mW3tokZ3d22qoAJPJI9+46EnABNeC3F7c+K9WGr36N + BBGT9gsXBBhUgjzZARxKykgDAKKxHBZgvu59wnguLcvll+Mhe+qfWL7r0/E/K6Od18lxKxlK + VlHdfzeX9bbn6KkbTViC4CZjkGY26j0r5F+E/wAfL7wSkWmayJdU0JQFjZTma1A6BCT8ygcb + SRgYwQBg/UWha/p3ijTYtQ0q8ivrOX7ssRz2BIIOCrDIyCAR3Ar/ADz4w4BzrgTFv20eai/h + mldNdn2fe5/Q3D3FWA4jo3pS5ai3i916dzWubU2/zKd0R6N1/P8Axr5f/as+K9rNCfBNhHBd + TLJFcX1xKiv9nZSJIljyDiXIVt3VBjHLZX1r41/FkfCnwbPNCY5dXvd0NhBJyDIRzIR/dQHc + fX5VyCwr4PnuJbq4lnnlknuJXaSWaViXd2JLMxPUkknnqSTXocIZDSxFWOayTSWy8+/oj934 + UyP67U+t4hXhHbzf/AI1UKoAGABgYHGKv6Xol1rD4hASMHBlfIX3x6n6cepFRWduj5lnOyBe + T6n29f8AGpL7VpbyPyE/dWoGBEvGR2zjr9Og9zzX7Xq3ZH7Q7/DT/wCGOgs9D8L286Q3+tvL + KTgmL5Y8+7BWA+pYAd67y1+Deg6pArxT3sSsu5ZIJ1IK9cjKsCO+eleF3+pR6f5Kskk00zFI + beFQ0kpHXGcAKMjLEhRkZIyMxxQahewLb6lqFwNP3+YdL0+5kht85PJkGHZ8fxDaOBlT32jC + 2snZHhYunXnLlw83zde39eR7Dqnwd0SIt9k8c6XbSdrfUpYl593DjH/fBrf+Gl18QPhXcg6f + ZR+MPDaNvntNFukvCnPLwKp8xW6nGza3OcE7h5DqX7J3w3+POkEeFLyfwp4tgiy1pcyGVWwM + bj/fXJyXXJ+6CFyK+YfHfwy+I/7PPiJdO10ahYw7wbe8gnc28wGCCpBIPp9QQMkce1hcLRqW + lTnaX9ep+Y5tnWMoc2HxlPmh5q7XnbRr7z9Pdc+BehfFfT5fF3w1mj03XEfF3pMqm3jklwC0 + UsZGbecAg9NrZBIw/mVpfBjxdrWjatNpl159hqVjKILywuRtlgYgYDLk8EcqwJVhgqSCDXxF + 8Ff2qfiP4eni8jxhqLBgq4uylyoUHO0LIGAHJ6AHnrzX1vpvxH8SfFmO11CfTdKufElqAtnr + Wlt9kvIVyD5bxS74rmMt96N5Il5yuxgGHvU1Kitf69D8zq+xxsmk15N6NevRr5+h9xaFqD6j + YRySDDkckVo7q8k+C/xLu/EFpHpHibQbzwr4mhBBtLmI/Z7oAA+ZbzAsjjHVA7MmDksoDt65 + z/k169OalFM+Tr0pUKjpy3XzXyaHDpXC/GbwS/xF+Gnirwqk4tjr+jX2kCc9IzcW7xBjweAX + z0P0rusCobmAXMLRtxnofQ1qtGYM/lu1LTbrRtRu9PvraSzvrSV4Li3mUq8UikqysDyCCCCP + UV+7f/BN3486R8V/2ZvCtjBeQtr/AIUsYtC1XTkkBmt1hBS2lKHBKPCqEMBgsJFyShrw39vv + /gmxd/FXxDe/EX4W29tD4tu236v4ekkWCLU3PBuYJGIRZjwXViqvy+4PkSfmHe6b8RP2ffGi + faIPEnw58U26kxvifTbxVIwSjfK20juDgj1p7BpJabn9LralasvMmR7qf5Yr8zP+C0eu+GP+ + EC+H2iuYG8Xf2rPe2kfBmh08xFJiR/CjyiDGcbjC2M7Gx8Lj9vL9oFbT7MPiv4h8rZs3GdS+ + MY+/t3Z985zznPNeO654i13x/wCIZtT1vU9R8R67euqyXl/cSXV1O2Aq5diWY4AAyT0A9KLq + 2gW6sxRX6o/8Ebfg9d6fo/jf4n6haNBBqQj0LSpXUr50aMJblxkcrvFuoYHBZJAeV48B/Zb/ + AOCY/wAQ/jLqlnqvjqxvfh/4KEivKb2LytTvkycpb27DdHkDHmyqFAYMqy4K1+znhHwDo3w3 + 8E6d4f8AD+mxaPoul28drZWFvkrBEpGBkklmJyWZiWYkkkkklxWzYpvSyP54/wBq/wD5Om+M + n/Y56z/6XTV5XXqn7WH/ACdN8ZP+xz1n/wBLpq8rqDQ/Wb/giz/yTb4m/wDYYsv/AETJX5zf + tQ/8nMfFz/sb9X/9LZa/Rf8A4Issv/CuviaufmGr2RI9vJlx/I/lX50ftQ/8nMfFz/sb9X/9 + LZat/CjKPxM8yr9e/wDgjB/yQ3x3/wBjKv8A6Sx1+Qlfr1/wRifPwO8drnn/AISRSR7fZY/8 + KIboqp8LPzU/ak/5Oa+Lv/Y36v8A+lsteYV6f+1EQf2mfi4c/wDM36v/AOlsteYVA1sfpr/w + T3sbjVf2Af2krKzjee7uLXVIoooxlnZtIYBQO5J4/GvzKr9ev+CMgWX4HePYyqy7vESBo2AI + YG1QYIPUHnj618eftp/sH+Lv2ePGOs614e0a71v4XzyNdWeqWcbTf2bGxJNvdgZaMxkhRI3y + uNpDBiyLTTsmSmru58kV+wth8YNC0b/gkRDqlzewobjwxP4Xhh3jfJePJLaiIKSCWC7pCByE + UtyBmvx7rsPhn8JfGHxm8TQ+H/BPhy+8R6tIRmGzjysSkhd8shwkSAkZdyqjPJFJNoqSTscd + RXsX7RH7LHxD/Zi8Qx6b400rFnOFNpren75dOuyVJKxzFV+dcEFGCsMZxtKk+O0ik10P6GP2 + RdUs4f2W/gvDLd28U154ds4baOSVVaeRLcsyRgnLMqo7EDJAViQACR/PQep+tfQX7Juj/F+9 + +L/gPxR8P/DHiLxYPDWpRtH9mDi0ihLFprdrh/3MCSK0qksyj94c8mvn+Tb5jbfu5OM/Wrcr + pERXK2Mr90v+CTX/ACZ74X/7Cepf+jjX4W1+6H/BJxg37H/hfnONT1IH/v8AE/1qAn0Ptavl + 7/gpFbyXP7HXxRSKNpHXTrZ9qddq3sDMfoACT7A19Q1x/wAUPAum/EjwPrvhnWI5JNJ1mwn0 + 28WEgSCKVChZCQQGXOQccEA9qa3Bn8xNFe4ftH/sh/ET9mfxHe2viLRrm78OrJiz8T2cDNYX + UZJCEyDIjc45ichgfUEMfD6RaZ+/3wX/AGrfhH4U+Hfgzwzq3xH8NaPr2n+HtMt7yx1XUEtW + hkW0iypaQqueexNfRvh/xFa+JdPtb/Tri3vtNuoEuba8tZ1minicBkdHXKsrKQQwJBBBBOa/ + A/8AZQ/Yb8eftKeKdMurjSr/AELwAJElv/Ed3C0SSw5OUtSw/fSMAQNoKqSCxAIz++fh3Sbf + Q9Mt7O0tks7SCJILe2jGFiiRdqIB2AUAAe1XpbYy66M2K/IL/gtd8Nf7L+JHgDx3BGfK1fTZ + tJuGVflElvJ5iEn1Zbgge0Vfr7Xxp/wVd+GX/CwP2QtY1GJHkvfC9/ba1EqLlmQMYJQeOFEc + 7Oeg/dgnpUFn4TK5TocetN5znvnrRRQUfbX/AASS+F58f/tW2uvXEbSaf4R06fUyzLuQzuPI + hUnsf3ryD3iNfuZX56/8EZvhX/wi/wAA/EXje4gaO78Var5UEhwQ9pagxoR/22e5B/3RX6FU + CZ+Q/wDwW+/5KN8L/wDsE3n/AKOSvzRr9Lv+C33/ACUb4X/9gm8/9HJX5o0DR9R/8Exf+T5f + hl/101D/ANN9zX0x+3N/wUa+Nfwq+PnjD4d+E77R/Dem6LNClvfQaas93IkkEUuXM5kjJ+c4 + 2oOPfmvmf/gmL/yfJ8Mv9/UP/Tfc19Kf8Fh/2Y9UtfFtp8atDsZLrRry3h0/X3gUsbS4T93B + PJ6I6bIs4ADIgJzIoII4r9i7wXa/8FFviN49t/jp4h1XxJrFjosJ0q8huRb3NmpuDveEKvl7 + VLAbGRkHmk7c4Iyf2jv+CTHxO+E8d1q/gWYfEvw9H8xt7GAxapEvJ5tskSgcDMTMzE58tRXy + 18Bfjt4q/Zy+Jmm+N/B10kOp2gaKW3nBa3vIGxvgmUEbkbAPUEFVYEMoI/Vjwn/wWg+EWo6F + HP4g8M+K9E1hYt81lawwXkO/n5IpvNQsOBy6J1oDY/GFl2sQRgjgg0lerftP/FnSfjn8fvGv + jrQtEHh7SNavfPt7FlRXwEVDLIE+USylDI+Cfmkb5m+8fPfDnh3VPF+vafo2i2NxqmrahOtt + aWdqheSaRiAqKBySSQKBn6Rfs8ahe3v/AAR8+MENzI8kFpqN5Daq/RIibOQge295D9Sa/Mmv + 25+JHwPb9nP/AIJW+J/A1wyTapZaEbjUpYzlGu5rhJZgp7qrOUU4GVRSQM4r8RqAQV+0X7UP + w9m8ff8ABJzwk9tBJcXeg+FfD+tRonULFbQrMx46LDJMx/3a/F2v6R/2ddIsvEP7J3wx0rU7 + aO906+8E6Za3VrMuUliewiV0YdwVJB9jQJn83FFfQH7ZH7JviD9lH4p3mj3Vtc3XhK9kabQd + akXKXUGciNmAA85AQrrgHowG1lJ+f6Bn9Ktr4/tx+zLD42B3Wv8AwiA1kZ4yn2Lzv5V/NVX6 + Dp/wUX0hf+CeB+E2y9/4WL/Z58L7vIBtv7OJ2+dvzj/j2/c7fvb/AJsY5r8+KBIK/ZT9mz4f + y+A/+CRvjiW5t2trvX/C/iDWpEYYJWS3lSJvo0MUTD2Ir86P2PP2UfEX7V/xTtNGsbe4tvCt + k6Ta9rSriOzt85KKxBBmkAKouCScsRtViP29/aa0Sw8M/sefFPR9KtI7HTNP8EalaWtrCuEh + hjsZFRFHYKoAHsBQDP5xaKKKCj+i79hH/kz74Tf9gGD+tfz0eLP+Rp1r/r9m/wDRjV/Qv+wj + /wAmffCb/sAwf1r+ejxZ/wAjTrX/AF+zf+jGoJ6mRX7Yf8EZf+TTdc/7Gu8/9JbSvxPr9q/+ + COdsLj9knX4WLhZPFN6pMblGANrajhgQQfcEEUeoO9j2j48apc6Z5pikYDk4BxXxPrvx91/4 + deLY9c0m6aG/t8oWzxJGSCY2BBypODgg4IBxkA19YeOfC+reHb9tJ1vxjPc6JK+y11bWbZbl + YMjCxXLqUkTJwBOWdDnDKhA3eAfG79jH4hvBcXlnpNpqUSoXZ9Ouw4x/usFf16Kcevet3QqU + 5KVKSf8AW2pwfXKNaLp4iLj3TX43V7H0L8Ev2ufDP7RehHS7XVW8L+M0jHm2qFN/mdN8IkDK + 4Jx8jBs5wMkErhePPi94/wDhrqJtvEmk6drGnSOUt9TtRJALjqcNlmVHwDldoxgkFgAx/Lnx + z8JviL8N9dS6l8O69ouo25MkcyW0gdBjrlQcAg4Oex5HUV7/APB//gove2+nL4U+MekSazYS + KIW1IwkyleMGVCPmIIJyOc7cbcCvoMvqwpzSrwtfvp9zPkc2wtatTbwdW7WzVn966/mfTN1+ + 0wt0vzeGHQ+2pAj/ANEiuW1344XtzFK0FjaafGqs7S3Mxk8tQCSxb5VAAHUjHUnjmuD1zXfC + et6nD/wr+XVvEcF0AyWdvYu7REgEIJmIj4BPDMCMYyxyaw10y5u7gSasIx5ZG3ToiWjjcHO6 + QsAZHBAIyoVTyFLAPX6PQoYSSTw8bt+unqfjWJxeZU2/rs+WK7JXfp/m9Ce91XUfG95HfalP + JJp8ZD28Mq7DMwIIkZMDagI3ImAcgOwyFAucjjrSorzNtQFm6nH8z/jUrILYc/M5H4CvbpUl + TVlv1PkMXi5YmWu3Rf118yFlC8dG/lW54S8a6x4F1L7bo169tIxAljPzRTAZwHQ8EcnB6jJI + IPNYW7iuy+HWgC41CPVLyJjaQNiLjhpByD7heD9cdcEV8vxXicvwmU1qmZQU4Wfuys7vorM9 + PIqOLrY2nHCScZX3XTzJfjZZeL/Gmpw+I9Rt45beO2SMWNjuJsgBl8ock5bLFhnAwDwoJ8hU + hsHOV68HjFfXCsGAIOR1BB/UGuA8dfCWy8R+Zeab5enaoSWbjEM577wB8rH+8BkknIJOR/DW + DzSjBul7NQh9lLZdkf6RcH8dQwlGnl+YqySspL82l3PCZZTJgdEXov8AX61Svr77J5cUa+fd + zkpBbhsGQ9yTj5UGRluwIAyxVTb8QxT+GJ5LbULaWC+RxEtrgeZK7DKqnODu6humAWztBNd5 + 8L/AbaJJJq2qYuNdu1AcqDstoxkrDHnsMnLdSSxOMkV9dTceVT3XTzP23E5jTVNfV5Xut12/ + zZi+F/hHrl+TcXCx28023zbi7yjso5CrGMlEBJwpx3JJYlj3th+zu94oMviJYye0en7sfiZe + fyFd5pqCNdzkKigszMQAABkkk8AAZJJ6AV4x8Uv2xbTwlcz6P4Lsk17U4j5ct7KcW8TDghR1 + Yg+xGQQQODXVRpTxErJXPicbnlXCQcozUEvT9bts9Bg/Ze1i3miutI8VxC/hbzIHNo9s0bdi + HSRyD9B3r2zw74J1fx94ck8I/FbwxY6xaOhxqlpIr28xxjJXCyRS4z8yoEYbhlchG/NnVfjn + 8XPGV0ZLzxVfWkb9bbT/ANxEffaM4P0x+XFbXhLWvGf2hJH1/VfMzncty4OfXIINfQ0cBOlr + ofm+Y8RxzBctabbWz5Vf5NW/E9g+L/7E978EdT/tnSpX1HwbLJj7U/8ArLHJ4E+Oin/npwuR + zs3Kp9Z+CfhG90qa3zE4AIOMH86wfhb4p8ZmMwN4x1+NZUKsJroXiYIwRsuVlXbg4wAPbHWv + oT4LeCPFHg/UhLA2l+IvCk53f2ckJtLnT2Yj/j33O6NHknMZaNVH+rC42N60OZSSa0/r5nyN + aNGrTdRSSkulmr/pf5n0D4QUjTIgw529/wAK6CooYI4VwiBB6Cpa9NKyPmpPmdwoooqhEUsS + TrtkQOPQ1kax4W0/XLB7K/tob6ycjda3kSzxHHTKMCDW0MGnU07CaTPHrj9k74QXErSSfCrw + FLIxyzv4UsSSfUkx8mun8G/Bvwf8PC3/AAi/hjQvDO7O7+w9Jt7InOM5MajOcD8q7jijindi + 5SC3s4rflVy3dm5NOuLcXEJQkgH0+uamBzQTilcduhRXTtqgC5nAHAAbH9KX+zj/AM/Vx/33 + /wDWq5to20XYuVFGTSRIBuuJnx03EH+lKNOI4+0zgdvm/wDrVfoouw5UUf7OP/P1cf8Aff8A + 9amvpIkxvnmbHTcQf6VoUUXYcqKA04gY+0z47fN/9al/s4/8/Vx/33/9aruBRgUXYcqKY00L + IjtNLIUORvIP9KdNp8cz71LRSf34zg1boo5mHKjzLXv2dvhz4ov2vdZ8A+EdXvWO43GoeH7S + eUnOclnQknOTnPU11egeC9K8MadHp+l2NrpmnxnKWen26W0A4xkIgABwB0x0rocCjAouw5UZ + l3o9vewywyIDDMpSSFlDRupGCrKeCCDgiuUg+CHgi0vDdxeEPDUV0Tkzx6JbLIT67gmc13u2 + jbRdhyoz/wCyFKqvnSYXGACMDHYccVJ/Zx/5+rj/AL7/APrVeoouw5UUf7OP/P1cf99//WpY + 9PEcwlMskjgYG8g/0q7RRzMOVBRRRSKKT6dHuLRs8JPXyzj9KxbfwBotrf8A2+DTNPgvc7vt + UVjEs2fXeBnPvmul20bad2TyorRafHG4di0rjo0hyat0mO9LU37lBXN/EHwXYfEnwL4h8J6r + 5n9ma5p9xpt0YyN4jmjaNipIIDAMSDg4IFdJRTA/Okf8ETvhd/0PXi/87X/4zS/8OTfhd/0P + Xi/87X/4zX6J7scngV5R4+/ar+EXwykaLxL8Q9A064QkNbi7WaZSOxjj3MD+FTdIpJvY6D4N + fCvSPgj8MPDngXQTKdK0S1W2ikmx5kpyWeR8ADc7szHAAyxxXb818z/8PIv2dfMx/wALFh8v + OPOGm3mz8/Jr1T4Y/tBfDr4zIzeC/GGl+IHUEmG2mxMAOpMbAMB+FLmQ+WS6HlP7Wf7CPhP9 + rzXtA1TxJ4g1rR5dGtpLWGPS/J2yB3DEt5iNzx2xXgv/AA5N+F3/AEPXi/8AO1/+M1+hl1dQ + 2NtJPcTRwQRqWeWVgqqB1JJ4ArxLxt+3D8DPh/ePaax8S9GF0n3obF3vG+n7lWAP1puSW4lG + T2PIfgF/wS48Bfs9/Fzw/wCP9G8WeI9S1LR2mMNtfG38l/MgkhO7bGG4EhPBHIFfY+oWFvql + lPZXltFd2dxG0M9vcIHjljYEMrKQQVIJBB4IJFfOem/8FGv2e9RukgPxChs3fGxr2wuoVbP+ + 00QA+pIFe++GPF+ieNdHg1bQNWtNZ02X7l1ZTLLGehxkE88jjrzSUk9huEo7o+M/jL/wSJ+D + vxIv7rU/DE+qfDvUZ2ZzDphWew3kklvs8nKjJGFjdFAGAo7eB6l/wQ91aJgNP+L1lcrjk3Ph + 94T+lw9fffjz9sH4M/DHWp9H8TfELStL1OFistqWeV0IPIIRWwR09sVgab/wUD/Z91e9Fnaf + ErT5JsZ+a2uUUD/eaMD9aLruHJLsfHXhz/gh9Al1DJr/AMW5J7cH97baboIjdh/syvOwB+qG + vs/9nX9iX4U/svl7vwhoUl14gePypPEGsSC5vmXnKq2FSIEHBESoGAG7OBWXdf8ABRL9nq01 + E2T/ABJsWkU7Wlitbh4gc45cRlf1q7cft/fs+2kgST4oaOrYzgJM2PrhOD7HmnzLuPkn2PSv + jZ8KNP8Ajj8K/EfgTVby50/TtctxbTXVnt85FDK2V3AjOVxyD1r4l/4cm/C7/oevF/52v/xm + vrX4eftb/CD4r69Ho3hPx7pes6tJxHaRb1kf6BlGa9UvL6302zmu7ueO2toEMks0zhURQMkk + noB1yad0TZo/Pcf8ET/hb/0PXi/87X/4zX3b8OvBtv8ADjwB4Z8J2c893Z6DplrpcFxcY8yR + IIliVnwANxCAnAAyeBXnsX7Y/wAFri7vLSL4jaNJPZ588LIxCY68hcH8DX59eJP2hvhd8YfH + Pie++J3xa1e8s49Tni0vQLKW+ttMWzXHlSA2yZZm56upGMFSfmPLWxCpR5rOXpqdVDDTrz5L + 8vqfqN4++Hvhv4peF7zw34u0Oy8Q6HdqVls7+ESITggMM8qwzlXUhlPIIIzXwr8UP+CMHw28 + S3s934I8Xaz4KMshb7HdQrqdrCvGEjDNHKB15eVzz1rO/ZWvfCWv/G/w2PgafEtxoFpI8viG + ++2339leQY3CxlLxi7SGQAgqFXCkfMen3p43+LHgz4ZWxn8V+KtI8PoF3f8AExvY4WYeoUnJ + /AVVGt7WPNyuPqRXoexnycyl6H5of8OO7/7Xt/4XDb/Zf+en/CONvx67ftWM/wDAq9J+GH/B + F/4b+G7yC78b+L9a8beVJv8AsdpCumWsy8/LIFaSQg8cpKh46175qH/BR39nmyuDCnxCgvZe + 62dhdS9PcRYP4Zrf8Dfty/Az4h6rHpuj/ELTv7RkO1bW+SS0Yn0zKij9a251e1zHkl2PU/AH + w58M/CzwxZ+G/COg2Ph3Q7RQIrOwiEaZwAWbHLOcAs7Esx5JJ5pnxK8D2nxP+HnifwffzTWl + lr+l3WlzzW+PNjjniaNmTII3AMSMgjI7103mL5e4MNuM7s8fXNeQ/ED9rv4N/C+YweJPiNol + jdKSGt4rj7RKpHUFIgxB+op3SJSb2Pk3/hyd8Lv+h68X/na//GaP+HJ3wuP/ADPXi/8AO1/+ + M17tb/8ABSf9nieZVPj9YI24WebTbtYz/wAC8qvcPh78VvB/xW0oan4P8Saf4issAmSwnDlc + 9Ny9V/ECkpJ7MpxktyD4P/DGy+DXwv8ADXgjTLq4vrDQrNbKG4u9vmyKucFtoAz9AK+J7/8A + 4Iu/DHUr+5u5fHXi4S3ErSttNqBliScfuenNfe3iLxVovg/Tzf67q9jo1kvW41C5SCMe25iB + Xh2v/wDBQP8AZ98N3MlrdfE3S550OCljHNdc+gaNGU/nT5ktxJN7Hzl/w5N+F3/Q9eL/AM7X + /wCM19W/ss/sxaH+yh8OL3wd4f1bUdYsbnUpdTM2p+X5iu8cUZUeWqjaBEDyCck84wBzOg/8 + FDP2fPEN7HZ2/wAStPguJGCoLy3uLcEnp80kYUfia9/0fWNP8QabDf6XfW+o2E67orm1lEsb + j1DAkGhST2Bprc8h+M3hLULu0llii82Mg5288HOcj8a+ffBvx71r4JX50vWYLjU/Cm4BIQf3 + tjzjMRP8GP4DwMDaVGc/dM0SXEZjkUMh4INeMfFn4A2Hiq1mmtYF80gnbiqhUnTd1quxjVo0 + 8QrS0ktmt1/meW+JvC8mu6GPE3wf8SeXYyA+ZokMgaxmJwTsgkBjik6EoygHII2/xeP2vxkm + sbmW217wVoN3cRMUl/4l6WtwGBwQ+VYAg9toxzVHVPBvjL4Ha/NqPhi5ltQSfOtGBaCYcnDI + cg9yDg4POMgEaF58TvB3xiWO18T258IeLFXy0vNpMUhGAFyT8y56KxJAGdy5IP3GU5hha1qd + dX9d18+p+U5/kuOw7dfCyt+Kfy1szbtvjZ4d+zmOPSrrSw3WO2gi8r81K5/75rmvE3i7wpr0 + gmns5rqYYw6xFHIHQFgwJHsScdq5LxH4Uv8AwvIhulSezlP7i+tm3wTdfuuOM8Hg4PGcEcnF + GCeDxX6JQwlD+JSb+8/IMVmmLadHERWndGtqOuRzJ5NjaLZwZ5xjc3uff6kn3rJY5PPXqc0Y + weeldX4K+HWq+NphJEhtdNVsSX0inbx1CDjew9AcDjJGRm8ZjcNltF1sRNRS6s8vDYTEZhVU + KMLt9jH8N6SniDX7PTGuobZpyxAkcK7hVLMI1JyzBQTgAkBWJwFJHu1tp9vZ2UVpBEsdtEoR + Yx0AHv3OeSepJJ6mrb/DjRj4c/sRrLzLDcsmSzLN5ykFZhIpDLKrAMsilWUgFSuBjmYtR1Hw + lqkGj+JJjdW91IItN1/YqLcuxwtvchQFjuCSArKBHM3CiN2WJv4548z7E8S1/wBw2qUNo9/P + zfl91z+iuHMhp5Ph/e1qS3f6I1443s2wPmiJ6HtVxWDDI5FBGeDRHF8rFe3UV+Ope1X95fif + Xr3dDC8S+DdM8TTWl1c20R1CxDfZLxly8O7G4A91OBkeoBGCM1h2VjJaTmKVNkiHB/8ArHuC + OQfQ13NY3imeLSdHvdXkUEWFvJO2ehVVLEH2GMk9hk8da9rKsdOFRUKjunovI/SeF+IKmEqL + B13em3pfo/8AI8A/aF+I17NdxeAtAmaG5uFVtQuIT8yoTxGCOQSRyRyCD0IBO78E/wBjWTxP + DAXTYpA6LwK8e+BNvN8RPiU2q3e6WbULszHePmwTwD7gYB9SCa/Y/wABeELXwlodvbxRKsu0 + bmA9q/dsDhVRppdepy53mcsZXk0/dTsl5dz5q03/AIJ+aLHboZdRVZMcr5Wf61sWX7Eenae3 + 7u9RwDx+7x/WvqiivU9mj5n2sj5+0n9mGPSWBjuIzg/3SK9U8I+E5vDcYi3Bk45z6V1tFNQU + dhOo5bhRRRWhmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA + UUUUAFFFFABRRRQAUUUUAFFFFACUmRil/hrwX9tbxr4j8Afs/a3q/he6uNO1BJ7aOS+tULSW + 0DSqskqgc5VSTxzxjvWcpcqbKjFzkoo8B/a58Y+JfiZ8btU+Gf8Abt5oPgrQtPtby/ttMm8m + 51R5wSqlxyIl2/NjnoBgtuHm9l8OND8LaLdQeD9J0vw1q7RMltq/2FLqeGQjh2aQl5SP9tiM + 8nI4Pmnj74Z6jqyWvjvwz4r8XePNdFxGH1g67FcXP2PBMnkMqqkh4UeWxIIJGDT/AAr8RPiY + fFVjpf8AwiuteItHnkxNf65oR0W4t1PVy4cwuF5O1VBboMGvzXM3icdJ4jC1Vyx3i3bbyej+ + Z+r5TDC5fCOHxVL3pfaSvv5rYxdW0v46eELSS8XX/EWvX8DrIt3o+qx3cDKCMhrGZEZjjPyp + nngcV1emfGuz/wCEj0f4r2fgm40ceHNZWOe+muIIr++Yq6/YWhjJkZmYgYbO0ggYJIPpHijx + noPgyPfrurWumswykMz5nl9BHCMvIT6KpPtXl/iXwjrek+N/CHxV8YaFL4a8E6rdulr9vTa0 + bxQFLa6uwM7CxfIZuFCxknCFgssxdfEp1qlDWKbTV1fy8/60IzPB4bDNUKdbSbSadnbz8jv/ + ABRF4y+P18dW+LOr3T6fI3mWvgrSbl7extFOeJ3jIaVxxnawAIwWcHjn/H2vXXwo0/T9I+HP + gq702e+bF1qfhvw+LgWUC8FsKoSSZjwockAZZgcrn0m1kjvreK5tnW5tZQGjngIdHB7hhkEe + 4JFeKaXFpS3XiU+PfAvxd1/xVLqtw9m3hi/kt9JNru/cIsittXCYycE/jmuTLcRic0xcp4qV + ox15Xovu8v8AhzvzDD4XKsHGGFhdy05lq/vPQPgJceMH+Hk58aXuq39zfX1xJBBraYuYrQkK + iTJjgkqzbSDgOBUOifGq3/Zj8VfEeLwlaeT/AGloNpHY6HYoBD/bU1w0cRjjHyqxjw5VQASQ + cfMSfFtJ8JQ6lquqWlxfeKJfE2p3Aj0bwR4e8SzX97ZqCQPtM4LIrNkElhhVXIDMSo7P4Y/D + WW+8ezareaVeWtr4Z/0CAXszXM15qQXbcXTyMTu2A+WueAScY2V6qi8BUq45z91dErJt7W11 + 9TyZuGYQpYFQtJ7tu7SW9+z8j074V+F4vAXhSKxvNuoa3cyNfarqDAO1zdyEGQgkZKrwq5x8 + qAnknPE/Hf4oT6zDL4T0/SrfUbOzkhuNZv8AV4ZrnTrDOHiWS3hBNw/STy2BQYQlWJG3tfHf + iaXwT4bnvVs3vNQmdbWwsQCGu7qQ7Yoh3IJOTjkKrHtX2V+yx8Ef+FHfC61sL9xdeKNUc6lr + t9gZnvJPmccdlztA6DBx1rgyHC18yryxmIbsnp6/8A68/wAZh8sw8MJhkrvf0/4J8SaP+0f4 + fudJTSPBMWo+K9Yhh8q00jTtIurOKZ8YGd0SpFGTkkAnC5ADHAJ+zJrQ1T4JeG3ubW3S5Vbl + ZFjhRY1YXUw2qo4VRjAAwAAAOBX6eTRiSNkPIYFT+Nfld+zta3Gl/DyXTzBIslhq2o2pXacj + F3Kw/RhXXnmXwy7Bc1FttyW712foceQ5i8xxnJXSSUXa3qjrfid4y0/wLr/wu8QX1xHpunaf + 40sZ7y5VQNsAiuC+cDJGB074rP8Ajt+0Rqf7QyR3mrS3/hT4NGbZp+kWYI1fxbJ/AkaAhhG3 + B3DHyngqMyrnfE1dO8V6jonhSTw6/jfxRLdpe6Z4YjJ2NIodVmueCFgG9id/DEEBWAYD1Hxd + 8KNQ/Zj+F+p/FTxMn/CdfGXUtml6RHCmbXSZpiQkVqhJ2hTzu5JYAknlj25HKvUwSTvFa3b/ + AE/z/pcueQw1LG86alLSyX6ny7oeiap8Tfi1DpOsabB4e8FeE/Lnn8LaXt8iGbB+z20rYHmS + ZBd8jaApUKC5LfUdx4l0vwB4bv8AW7otp1laQNdXLqcvgDIAxjLEkAKOrEADJ54L4Y+AZfAf + hm30+4L3upSO17qV6QSbm7kIMj5I5GcKuedqLnnNaGn+BtU/aG+I914UskkPh3wtatqmrsvS + 4vvLLWVpzwcNtlYc/wAHdcV85eeaZiqVLSnHT5Ld+r/4c+japZVlzrVXepLf1ey9EcB8N/jR + 8TvFQ8U2Xh7WZfDt5rl2lxr3iEr57aYgXFvp9mMgNIkZBZgVAJLMQWAfpbf4cfDn4f6bqPiz + XNBPiGa2iNzeeIPFkq6hcvg53KsgKBySAoiRSSQBkkZw/wBne406HwZaeHvMSPxFpzzf2vps + hC3QujKxkd4z8xVichsEFQBnKkDa+K+qva+J/h+dX8M6/wCJ/BFvqrahrdn4esjdXEhhUNbR + tGCMxmQljkgAxr3wK66uLxOKx6wUW4U07dtF5+fQ5aWDwuFwDxtlOo1fvq/LyPTvBfwQ+JXx + h8FS+LPEfjXVPhD4QNq1zpfhvw4Y7e7WAKWWW5uCMqWGCUQhQMcfxN88WvxWj/4UlqfhrxvF + rXxQ1m1iunk1Cex82DTNxYQGW7lK4ZPlYypuYEkKTtBr179o39rvxF8ZvBk/hTQPDeofCnwj + fMsWqeKPGjxafMtuCCY4IC+S5AwMEgkgEqCSfAPGvwzj8R+EYfGHhbwLNY/DHS9Qs01nVo7R + 4ZNVhEiiTZFgNIioDukZdzs3Ycv9ZWhQk4UaUW+XW66W7vz7bnx+Hdf3q1aSjzaWfW/ZeR6Z + ofifx98f/BXhuy8Ya3q2heBrSwtraz0HRZPIutXVI1Xz7qXJZEcDIVQWIbIMfG7X8Tz6V+z9 + 4Pa48AfC1T4hfbDZtpunteTgk8zXEygzOqDccM+WOFBG4sOn8Laxb67Yrq2i3Vnq1lMMJdWs + okT3AK5APqDgjoQORXlviv7PJ8VfEU/xB8J/E3XdHNraQ+Hv+EAuHS1ChC0/nbGBDmRiPm5w + BwRtNfI4XF4rMsa4V5csVryvbR7eZ9jisHhMswanRjzt6XWr16nW/sweIPiVrGqeMtV8X634 + lvNJlkt4NPt/EVotnOZQrNPIsCgCOM7kVQBtbnuprW8S+JrX4JfGLQ/Fvg/S4LfXH0jWLnWL + GwjEcd5bw2u9JZ41wC6ylAGIDMDgkhVx8/voOjR+LbnUNdu/FvgbQzb+Tpng8eKZtQ16/nbA + WUxRtmNeuAwUbiNxVeTJ4b+Guo6X4+1bw34s13xb4I1K90+BrKxm1lft19bzbmkhklkQ7wBs + JiQDl2POCa92UHRryxfN7q3stO2lt+70PA9yvQjhFH3pbXevfXt2PYPB3w8t/ilDp/jz4kwX + XxJ8R6lFHfKup3CnS7NXXcsUFuW2SKAQCzhgSMqF6VH8Y9E+IMbaXB8Ntah8BaNbQ/6RoOlh + NN89gTh0uoEbthfL2qo25zk4Hktvp/j34G6rqul+GD4yh0KOVX0qG005NesbhCuZPNjJWS3c + yFyfLC59CMMfZ/g78QfFnj3Srq48d+Co/D00Dbbe5dWjE6fMWY28hZ4QuB95jndxwDXjYupj + KdsZCqpxeyduvS3f01R7WEo4Oqng50nGS3fp59jgNG+MXxD+Ec+p6V8TvD/ivxl4a1gW8Wmw + 61PZ6jaidshw99u2FXG3bG4LHGcKeD93fsbfD7W/AHgTXU1TQh4U07U9VbUdL0FLtLhbGB40 + BRShKqpYMwVcBQQAAAK+XPFfjSD4p2t98OPAUMPjLxHrNu2nyR2GJ7LTo3BVpriZcomwZIjB + LbguQo+YfoZ4O0N/DPhPRNHkm8+TT7GC0ab++Y41Ut+OK+uyh1K8fb1KfI39z+R8ZnMaeHkq + FKfMl96+ZuUtFFfSHzJy3iz4f6X4stnjuYF3kcNivl74sfshpfpLJbW6zo2T8q5r7KppAOOM + 1DinqWpNaM/KnWvhH478BtPFpWoXkVs42vazDzYnA5ClWB49hgV59qE/jnTSUfR9PkI/i8iU + fmBJ/LFfsJfeG9M1MEXVjDNnruUVgXPwi8JXZLS6Jbvn6j+tehRzHHUFy06rSPFxOS5XjJc9 + ehFv0PxyvvEXxHtryK5ga0sREwfyY9OjlifHZhMJMgjtkevBAI9q+Hf7a19prwaf8RNASC3U + CMato0TbIwOBvtySwAAyShY9ggHT9BtU/Zy8BaqjBtFWJj3jc/1zXz78bP2PNIt9PnudNtiY + 8E56kfpXjZlCpma/2qTk1s77HbhMtwGGjy4emo+isdLoOraX4u0a21bRr2DU9OuVDxXNvIHR + hkjggkcEEEZ4II7Gode8N22u6VdafeWsN3bXEbRyW9wgeOVSCCrKQQVIJBBBBBNfCXg34lat + +yr8TJMmWfwldT41TTeWCg4BnjHZ1ABIH31XB5CMv6J6fNaa1ptpqNhMlzZXUSzwTxsGV0YA + ggjggg9RkHtX5tjMDLDS5H12f9dh1KLpyseEWd9P4Uv7XStTuZbrTbyRYNN1K6cvKsp+7aXL + kks56RTMcyYCPmUK1x1ds+24jz0JCn6Hj9Ov4Uzxbodlqb6xpWoWy3en3Bkhmt2JAZGJOAQQ + VIyCCCCpAIIIBFP4XG71S+v9I1a4+1apobKJZ2GGvIHGba6IA6uAyuQAvmwzBQFC18H7L6zV + 5oaTT1/z/wAznNK8h+zXTx4wMgj8eaq3Fnb6lby2d1Es1pco0E0TDh0YFWU+xBI/GtnxNGId + UC/9MlJ+uW/pisyLHmAkhUUF2ZjgBQMkk9gADXm1IOniuWPcqO58w/sW+FTb/Emx0+X94bW8 + Fu7NjJKPtJP1I/Wv12HSvzO/Yk0d9W8cxatsIF1dtdcjnDOX5/Ov0y7fhX9LYbm9mubfQ9Wf + QdRRRXaYhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA + BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVS9sYNStZbW7t4ru3mXZJDMgdHU9QQRgj2NW6KA + PnjxH+wN8CvEupTai/gWLTNQlJZ7jSL25siSfaKRV/SsiH/gnR8Flb9/p2vXsZ4MVz4ivWQ+ + 2BKK+nCKUcVg6VNu7ijZV6iVlJnkPw5/ZN+EPwnu/tXhfwBo+nXmci7kiNxMD6iSUswP0Nem + a7oGneJdMm07VtPttTsJhtltbuFZY3HurDBrSJxSda05UZ80m7s+cNX/AOCenwG1S8lu4fBP + 9kXMjFnfSdRurUNn/ZSUKPwAqta/8E7PgZHxeeGtQ1hP+eWo65eyofqvmgH8a+mcelGKz9jC + /Nyq5ft6tuXmdji/h98HvA/wpsRaeEPCmleHosbSbG1VHYejPjc34k15t4u/YX+BvjrWrjV9 + b8CQ3uoXDtJLMNQu497Ekk4SYDJJPavfc8UA5q+SL6EKc073PDfh/wDsXfBb4X6/ba54a8C2 + mn6pbP5kNy91cXBjYdCBLIwBH04r3IcUZFLVRio7A5OXxCEcV4L4x/YZ+B/j7XbnWNc8BWt5 + qNy7SSzR3t1DvYnJJWOVVzn2r3uilKKluCk4/CebfCj9nr4d/A9Zx4I8LWWgtcKFmljLySsB + 0BeRmbHtnsPSt34hfDPw18V/DraH4r0tNX0pnEhtpJHQbgCAcowOcE9+9dV2o7U+VWtYOaTd + 76nzZ/w7m/Z4zn/hXUOev/IVvv8A4/Xsnw1+E/hL4Q6GdG8HaHb6FpzP5jQ25ZtzYxlmYlif + qa7GkNSoRWqQ3UnLRs8l+J/7LHwn+Mt19r8X+B9M1a+JybwK8E5PqZIyrE/U152v/BOn4KRy + Ax6TrcUY6Qx+Ib0Jj0x5vT8a+ncY7UfUVMqUJboqNapHSMmeG+D/ANib4JeB9SXUtN+H2mTa + iuMXWptLfPkd8zu/P0r2dtOtXsTYtbRGzKeUYCg8vZjG3bjGMcYq2c4oxzVqKWxDnJ7s+f8A + xX+wb8DPGGqTandeAbWx1KUlmutJuZ7JsnrxE6r+lY1v/wAE6/glE37/AEPWL+LvDdeIL5kP + sQJRxX01ikGAKh0qcndxRarVErKTPN/hp+zn8M/g+oPg/wAE6PoUw/5eIbcNP/39bL/rV/4m + fBPwL8ZNPWz8aeF9O8RQKMIbuLLoOuFcYYDPPBruTk0DitOVEc8r3ufMU3/BOb4Ijix0PWNH + iHSGw1+9jQewBlOBVux/4J4fAe3kSS88Gy65Ihyravq15cj/AL5aXafxFfSeM0YrJUoJ3SRp + 7eo1bmZzvg/wD4c+H2lLp3hrQdP0CxUY8jT7ZIVOOhO0DJ9zzXRUtFa7bGIUUUVQBRRRQAUU + UUAFVb6xiv7WSCVQyOCCD71aprttUn0oA/In9uDwrDpPjvVoI0ACysOB2zXtn/BOzxpP4s+C + NzoN5IZLnw3fNZxFjljAwDx/QKGCAdglcR+2vpr6j471eXbndKxzV3/gmjanSdY+JYnytqlr + a3DADOMNJuIHc4AFfN5nFSo8z6Nfjp+pvWjeKZ7lrFnNqni+9tLVPMnkunjVegyCQST2AwST + 2ANc1/a+j6D+1XoXhKxuTJqU/hS5k1KPn59lzEbZickDBe7wOo3HPbPo/inXNK+AHwx17x/4 + ucQXSRNPJEcFgzHKQKCQC7MQCMgFiqg9Cfgj9grxVq3xa/bA8ZfEPxASXfR7u8nOdywrvi8u + IHAyFjjZQTyduTySa+Ey/KVTjVxdZWer+/Zfr5aHn8mlz7R8VyiTxBegH5I2EY/4CAD+ua4v + 416g/g34UXaA7NY8Q40+1ToyRuDvI7ghAzZ9VA4Oa9L8F+G38Q3dxrGogJYQu0sjP92ST7zA + +qrnJ9eBzk48N1/UZ/jt8ZDc2waTQ9MY2liOoc7h5knvkgAdQQuQcNXnZLlbxeK+sVFo3den + /BKo0+aSb2PaP2Mvh7/ZFtFdvFgRoCDjvj/P519dCuN+F3hOPwn4Zt4AgWRlBbArsmr9rhHl + R11JXYtFFFamYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB + RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU + UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUyT/Vt9DT6Z + J/q2+lAHwN+0n4YOseKNQYR5zIegrq/2HvBMXhG28Z6vdlbaLbEskknAVBlsn2G01674p+Fr + +IdWlnMZIZiRx1ya8y8VaJqafD3U9N05ZLXR7q8k3yqcG724QYx/AChIPdmJ42gn57HSk5Rp + xV23+S39Ezqk+ZKKPi79u/443/x+8ax6JpTSR+DtGlP2eMHi6mwQZmxxgAkDHByTlhtI9V/4 + JwfBe6bwt451RB9nOpTW2mPcMBmKFMySMuepYFk9MkE8A1y03wNlvtVz9nO3d2FfYPw1uIfg + d8CbCx0+NZNf1Iy3FvBtGY8sV8xuPujqMjksBg845sVTiqSw8tpb93/w7JnFJJI5v9pzx8mg + abbfDfwqfJvrqMLdyQE5tbfPKg9d7HOT1ySc5BB6f9mT4NxaJY293LAESNRt+XHT0ri/hP8A + CO88U+LZ9V1NnubmaUyzzykklifU5PsMnOB1zzX2NpGlw6RYRW0ChEQY4FejgcIqEb2s/wCt + PRC/hxsty6qhVAAwBxin0UV7JgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU + UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB + RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU + UAFFFFABRRRQBXaFGUjbjI6rx+o6VgeIPCVrqmmQWKQRx28ShEjVQFRQAAAB0AAGAPSunoqH + FPUadnc8b8QfDC20bRru4s7Uz3zJ5VtGi8tM5Cp16AEgkngAEkgZNaGm/COOCzh+3Mt1eCKO + N5Ap2qqKAqID0RQMAHk8k5JJPqRUc8Uelcbw0JVlVe6Vl5dyuZ3uYfhfwvbeHbTZDGFduprd + PSloruSsS3cKKKKYgooooAKKKKACiiigD//Z + + + + + + <if test="company and company.header"> + <for each="line in company.header.split('\n')"> + <line> + </for> + </if> + <company.rec_name if company else ''> + <if test="company"> + NIT: <company.party.identifiers[0].code> + Regimen Común + Actividad Economica 4659 + Dirección: <company.party.addresses[0].street><company.party.addresses[0].city> + Teléfono: <company.party.phone> + Celular: <company.party.mobile> + E-mail: <company.party.email> + </if> + + + + + + + @@ -1630,219 +2375,215 @@ - <for each="maintenance in records"> - <for each="line in maintenance.lines"> - <choose test=""> - <when test="line.maintenance_type == 'initial'"> - REGISTRO DE MANTENIMIENTO INICIAL - </when> - <when test="line.maintenance_type == 'preventive'"> - REGISTRO DE MANTENIMIENTO PREVENTIVO - </when> - <when test="line.maintenance_type == 'corrective'"> - REGISTRO DE MANTENIMIENTO CORRECTIVO - </when> - </choose> - Fecha <maintenance.estimated_agended.date()> - Consecutivo <line.code> - - INFORMACIÓN DEL PROPIETARIO + <for each="maintenance in records"> + <for each="line in maintenance.lines"> + <choose test=""> + <when test="line.maintenance_type == 'initial'"> + REGISTRO DE MANTENIMIENTO INICIAL + </when> + <when test="line.maintenance_type == 'preventive'"> + REGISTRO DE MANTENIMIENTO PREVENTIVO + </when> + <when test="line.maintenance_type == 'corrective'"> + REGISTRO DE MANTENIMIENTO CORRECTIVO + </when> + </choose> + Fecha <maintenance.estimated_agended.date()> + Consecutivo <line.code> + + INFORMACIÓN DEL PROPIETARIO - Nombre / Razón Social: <line.propietary.name> - Ciudad: <line.propietary_address.subdivision_municipality.name> - Teléfono: <line.propietary.phone> - Movil: <line.propietary.mobile> + Nombre / Razón Social: <line.propietary.name> + Ciudad: <line.propietary_address.subdivision_municipality.name> + Teléfono: <line.propietary.phone> + Movil: <line.propietary.mobile> - Tipo Documento: <"NIT" if line.propietary.tax_identifier.type=="31" else "CC"> - Documento: <line.propietary.tax_identifier.code> - Dirección: <line.propietary_address.street> + Tipo Documento: <"NIT" if line.propietary.tax_identifier.type=="31" else "CC"> + Documento: <line.propietary.tax_identifier.code> + Dirección: <line.propietary_address.street> - - INFORMACIÓN DEL DISPOSITIVO + + INFORMACIÓN DEL DISPOSITIVO - Nombre del Dispositivo: <line.equipment.product.name> - Marca: <line.equipment.mark_category.name> - Serial: <line.equipment.serial> + Nombre del Dispositivo: <line.equipment.product.name> + Marca: <line.equipment.mark_category.name> + Serial: <line.equipment.serial> - Modelo: <line.equipment.model_category.name> - Referencia: <line.equipment.reference_category.name> - Registro Invima: <line.equipment.health_register> + Modelo: <line.equipment.model_category.name> + Referencia: <line.equipment.reference_category.name> + Registro Invima: <line.equipment.health_register> - <choose test=""> - <when test="line.maintenance_type == 'preventive' or line.maintenance_type == 'initial'"> + <choose test=""> + <when test="line.maintenance_type == 'preventive' or line.maintenance_type == 'initial'"> - Verificación inicial de funcionamiento: + Verificación inicial de funcionamiento: - <"SI APLICA" if line.initial_operation else "NO APLICA"> + <"SI APLICA" if line.initial_operation else "NO APLICA"> - Revisión del Equipo: + Revisión del Equipo: - <"SI APLICA" if line.check_equipment else "NO APLICA"> - - - - - Revisión del sistema eléctrico: - - - <"SI APLICA" if line.check_electric_system else "NO APLICA"> + <"SI APLICA" if line.check_equipment else "NO APLICA"> - Limpieza interior y exterior: + Revisión del sistema eléctrico: - <"SI APLICA" if line.clean_int_ext else "NO APLICA"> + <"SI APLICA" if line.check_electric_system else "NO APLICA"> - Limpieza de lentes y espejos: + Limpieza interior y exterior: - <"SI APLICA" if line.clean_eyes else "NO APLICA"> + <"SI APLICA" if line.clean_int_ext else "NO APLICA"> - Verificar Calibración: + Limpieza de lentes y espejos: - <"SI APLICA" if line.check_calibration else "NO APLICA"> + <"SI APLICA" if line.clean_eyes else "NO APLICA"> + + + + + Verificar Calibración: + + + <"SI APLICA" if line.check_calibration else "NO APLICA"> - </when> - <when test="line.maintenance_type == 'corrective'"> - Trabajo Realizado + </when> + <when test="line.maintenance_type == 'corrective'"> + Trabajo Realizado - Repuesto + Repuesto - Actividad de Mantenimiento + Actividad de Mantenimiento - Descripción + Descripción - <for each="line_maintenance in line.maintenance_lines"> + <for each="line_maintenance in line.maintenance_lines"> - <"X" if line_maintenance.line_replace else ""> + <"X" if line_maintenance.line_replace else ""> - <"X" if line_maintenance.line_maintenance_activity else ""> + <"X" if line_maintenance.line_maintenance_activity else ""> - <line_maintenance.maintenance_activity.name if line.line_maintenance_activity else line.replacement.name> + <line_maintenance.maintenance_activity.name if line.line_maintenance_activity else line.replacement.name> - </for> + </for> - </when> - </choose> - <choose test=""> - <when test="line.maintenance_type != 'initial'"> - <choose test=""> - <when test="line.equipment.product.preventive_activities"> - - Actividades Realizadas: - <for each="description in (line.equipment.product.preventive_activities or '').split('\n')"> - <description> - </for> - </when> - </choose> - </when> - </choose> - - Observaciones: - <line.description_activity> - Fecha del próximo mantenimiento <str(line.next_maintenance)[0:11]> - - + </when> + </choose> + <choose test=""> + <when test="line.maintenance_type != 'initial'"> + <choose test=""> + <when test="line.equipment.product.preventive_activities"> + Actividades Realizadas: + <for each="description in (line.equipment.product.preventive_activities or '').split('\n')"> + <description> + </for> + </when> + </choose> + </when> + </choose> + + Observaciones: + <line.description_activity> + Fecha del próximo mantenimiento <str(line.next_maintenance)[0:11]> + - <if test="line.technician_signature"> - + <if test="line.technician_signature"> + - + Texto 1: - </if> + </if> - + - <line.technician_responsible> + <line.technician_responsible> - RECIBIDO A SATISFACCIÓN + RECIBIDO A SATISFACCIÓN - INVIMA :<line.invima> + INVIMA :<line.invima> - NOMBRE + NOMBRE - - - - - </for> - </for> + + + </for> + </for> \ No newline at end of file diff --git a/sale.py b/sale.py index ca69290..fc2870d 100644 --- a/sale.py +++ b/sale.py @@ -102,7 +102,6 @@ class Sale(metaclass=PoolMeta): elif self.sale_type == "maintenance": self.invoice_method = 'order' - @classmethod def _get_origin_contract(cls): 'Return list of Model names for origin Reference' @@ -149,8 +148,18 @@ class Sale(metaclass=PoolMeta): @classmethod def copy(cls, sales, default=None): - default, = super(Sale, cls).copy(sales, default=default) - default.setdefault('sale_date') + today = datetime.today().date() + if default is None: + default = {} + else: + default = default.copy() + default.setdefault('number', None) + default.setdefault('invoice_state', 'none') + default.setdefault('invoices_ignored', None) + default.setdefault('shipment_state', 'none') + default.setdefault('sale_date', today) + default.setdefault('quoted_by') + default.setdefault('confirmed_by') return super(Sale, cls).copy(sales, default=default) @classmethod @@ -171,11 +180,11 @@ class Sale(metaclass=PoolMeta): # sale.set_advance_payment_term() # cls.save(sales) - @ classmethod - @ ModelView.button_action( + @classmethod + @ModelView.button_action( 'optical_equipment.wizard_confirm_sale_date') - @ Workflow.transition('confirmed') - @ set_employee('confirmed_by') + @Workflow.transition('confirmed') + @set_employee('confirmed_by') def confirm(cls, sales): pool = Pool() Configuration = pool.get('sale.configuration') diff --git a/tests/scenario_optical_equipment.rst b/tests/scenario_optical_equipment.rst index 274d65e..305da57 100644 --- a/tests/scenario_optical_equipment.rst +++ b/tests/scenario_optical_equipment.rst @@ -83,6 +83,58 @@ Create tax:: >>> tax = create_tax(Decimal('.10')) >>> tax.save() +Create configuration equipment:: + >>> Config = Model.get("optical_equipment.configuration") + >>> UOM = Model.get("product.uom") + >>> celsius = UOM.find([("name", "=", "Celsius")]) + >>> celsius + [proteus.Model.get('product.uom')(39)] + + >>> moisture = UOM.find([("name", "=", "Relative Humedity")]) + >>> moisture + [proteus.Model.get('product.uom')(42)] + + >>> config = Config().find([])[0] + >>> equipment_sequence, = Model.get("ir.sequence").find(["name", "=", "Equipment"]) + >>> equipment_sequence + proteus.Model.get('ir.sequence')(14) + + >>> config.technician_responsible = employee + >>> with file_open("optical_equipment/tests/files/signature.png", "rb") as signature: + ... config.technician_signature = signature.read() + >>> config.invima = "RH-202309-02409" + >>> config.equipment_sequence = equipment_sequence + >>> maintenance_sequence, = Model.get("ir.sequence").find(["name", "=", "Maintenance"]) + >>> maintenance_sequence + proteus.Model.get('ir.sequence')(15) + + + >>> config.maintenance_sequence = maintenance_sequence + >>> agended_sequence, = Model.get("ir.sequence").find(["name", "=", "Agended"]) + >>> agended_sequence + proteus.Model.get('ir.sequence')(13) + + >>> config.agended_sequence = agended_sequence + + >>> contract_sequence, = Model.get("ir.sequence").find(["name", "=", "Contract"]) + >>> contract_sequence + proteus.Model.get('ir.sequence')(12) + >>> config.contract_sequence = contract_sequence + + >>> sale_quote_number, = Model.get("ir.sequence").find(["name", "=", "Sale Quote"]) + >>> sale_quote_number + proteus.Model.get('ir.sequence')(16) + >>> config.sale_quote_number = sale_quote_number + + >>> config.temperature_min = 19 + >>> config.temperature_max = 21 + >>> config.temperature_uom = celsius[0] + + >>> config.moisture_min = 43 + >>> config.moisture_max = 45 + >>> config.moisture_uom = moisture[0] + >>> config.save() + Create supplier:: >>> Party = Model.get('party.party') >>> supplier = Party(name='Supplier') @@ -193,58 +245,22 @@ Mark Calibration Required:: >>> product.name 'UNIDAD REFRACCION ESTANDAR' -Create configuration equipment:: - >>> Config = Model.get("optical_equipment.configuration") - >>> UOM = Model.get("product.uom") - >>> celsius = UOM.find([("name", "=", "Celsius")]) - >>> celsius - [proteus.Model.get('product.uom')(39)] - - >>> moisture = UOM.find([("name", "=", "Relative Humedity")]) - >>> moisture - [proteus.Model.get('product.uom')(42)] - - >>> config = Config().find([])[0] - >>> equipment_sequence, = Model.get("ir.sequence").find(["name", "=", "Equipment"]) - >>> equipment_sequence - proteus.Model.get('ir.sequence')(14) - - >>> config.technician_responsible = employee - >>> with file_open("optical_equipment/tests/files/signature.png", "rb") as signature: - ... config.technician_signature = signature.read() - >>> config.invima = "RH-202309-02409" - >>> config.equipment_sequence = equipment_sequence - >>> maintenance_sequence, = Model.get("ir.sequence").find(["name", "=", "Maintenance"]) - >>> maintenance_sequence - proteus.Model.get('ir.sequence')(15) - - - >>> config.maintenance_sequence = maintenance_sequence - >>> agended_sequence, = Model.get("ir.sequence").find(["name", "=", "Agended"]) - >>> agended_sequence - proteus.Model.get('ir.sequence')(13) - - >>> config.agended_sequence = agended_sequence - - >>> contract_sequence, = Model.get("ir.sequence").find(["name", "=", "Contract"]) - >>> contract_sequence - proteus.Model.get('ir.sequence')(12) - >>> config.contract_sequence = contract_sequence - - >>> sale_quote_number, = Model.get("ir.sequence").find(["name", "=", "Sale Quote"]) - >>> sale_quote_number - proteus.Model.get('ir.sequence')(16) - >>> config.sale_quote_number = sale_quote_number - - >>> config.temperature_min = 19 - >>> config.temperature_max = 21 - >>> config.temperature_uom = celsius[0] - - >>> config.moisture_min = 43 - >>> config.moisture_max = 45 - >>> config.moisture_uom = moisture[0] - >>> config.save() +Create Product Maintenance Service:: + >>> maintenanceServiceProduct = ProductTemplate() + >>> maintenanceServiceProduct.name = 'Mantenimiento Correctivo' + >>> maintenanceServiceProduct.maintenance_activity = True + >>> maintenanceServiceProduct.default_uom = unit + >>> maintenanceServiceProduct.type = 'service' + >>> maintenanceServiceProduct.salable = True + >>> maintenanceServiceProduct.purchasable = True + >>> maintenanceServiceProduct.list_price = Decimal('10') + >>> maintenanceServiceProduct.account_category = optical_equitment_category_tax + >>> maintenanceServiceProduct.save() + >>> product1, = maintenanceServiceProduct.products + >>> product1.name + 'Mantenimiento Correctivo' + Create payment term:: >>> payment_term = create_payment_term() >>> payment_term.save() @@ -325,6 +341,14 @@ First sale:: >>> sale.shipments [proteus.Model.get('stock.shipment.out')(1)] +Duplicate Sale:: + >>> sale.duplicate() + [proteus.Model.get('sale.sale')(2)] + +Return Sale:: + >>> SaleReturn = Wizard('sale.return_sale', [sale]) + >>> SaleReturn.execute('return_') + Verify that the sale state could be returned to the draft state:: >>> sale.click("draft") >>> sale.state @@ -391,7 +415,7 @@ Create a new Maintenance Service:: True >>> maintenance_2.equipment.propietary_address.street -Assing schedule to maintenance service: +Assing schedule to maintenance service:: >>> AssingSchedule = Wizard('optical_equipment_maintenance.assing_agended', [mantenanceServices]) >>> AssingSchedule.form.estimated_agended = datetime.datetime.now() >>> AssingSchedule.form.technical = employee @@ -428,7 +452,7 @@ Finished Maintenance Service:: >>> mantenanceServices.click('finished') # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... - Exception: ... + ValidationError: ... >>> mantenance_line_two.click('samples') >>> len(mantenance_line_two.lines_calibration) @@ -442,3 +466,30 @@ Finished Maintenance Service:: >>> mantenanceServices.click('finished') >>> mantenanceServices.state 'finished' + +Create a New Contract:: + + +Sale Maintenance Service:: + >>> sale2 = Sale() + >>> sale2.party = customer_optica + >>> sale2.contact = local_phone + >>> sale2.description = 'El producto se debe entregar el fin de semana' + >>> sale2.sale_date = today + >>> sale2.sale_type = 'maintenance' + >>> sale2.maintenance_type = 'corrective' + >>> sale2.payment_term = payment_term + >>> sale2.invoice_method = 'order' + >>> sale_line = SaleLine() + >>> sale2.lines.append(sale_line) + >>> sale_line.product = product1 + >>> sale_line.quantity = 1.0 + >>> sale2.click('quote') + >>> SaleConfirmDate = sale2.click('confirm') + >>> SaleConfirmDate.form.sale_date == today + True + >>> SaleConfirmDate.execute('confirm_date') + >>> sale2.state + 'processing' + >>> sale2.shipments + []