From cd067bbf60524374109fe104ca833939c2c2f426 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Mon, 18 Mar 2024 13:41:15 +0100 Subject: [PATCH 01/14] add utilities extension --- facturae/extensions.py | 548 ++++++ facturae/facturae.py | 2 + xsd/UtilitiesExtension.xsd | 3274 ++++++++++++++++++++++++++++++++++++ 3 files changed, 3824 insertions(+) create mode 100644 facturae/extensions.py create mode 100644 xsd/UtilitiesExtension.xsd diff --git a/facturae/extensions.py b/facturae/extensions.py new file mode 100644 index 0000000..6dd1735 --- /dev/null +++ b/facturae/extensions.py @@ -0,0 +1,548 @@ +# -*- coding: utf-8 -*- + +from libcomxml.core import XmlModel, XmlField +from .utils import FacturaeUtils +from signxml import XMLSigner, XMLVerifier +from xml.etree import ElementTree + + +class Extensions(XmlModel): + + _sort_order = ('extensions', 'utility') + + def __init__(self): + self.extensions = XmlField('Extensions') + self.utilities = [] + super(Extensions, self).__init__('Extensions', 'extensions') + +# 2.2 + + +class UtilitiesExtensionsELE(XmlModel): + + _sort_order = ('utilitiesextensionsele', 'version', 'sellerparty', 'buyerparty') + + def __init__(self): + self.utilitiesextensionsele = XmlField('UtilitiesExtensionsELE') + self.version = XmlField('Version') + self.utilitiesfacturaresumen = UtilitiesFacturaResumen() + self.utilitiesextensionele = UtilitiesExtensionELE() + super(UtilitiesExtensionsELE, self).__init__('UtilitiesExtensionsELE', 'utilitiesextensionsele') + +# 2.2 + + +class UtilitiesFacturaResumen(XmlModel): + + _sort_order = ('utilitiesfacturaresumen','facturaresumen', 'conceptosfr', 'totalantesimpuestos', 'impuestosfr') + + def __init__(self): + self.utilitiesfacturaresumen = XmlField('UtilitiesFacturaResumen') + self.facturaresumen = XmlField('FacturaResumen') + self.conceptosfr = ConceptosFR() + self.totalantesimpuestos = XmlField('TotalAntesImpuestos') + self.impuestosfr = ImpuestosFR() + super(UtilitiesFacturaResumen, self).__init__('UtilitiesFacturaResumen', 'utilitiesfacturaresumen') + +# 2.2 + + +class ConceptosFR(XmlModel): + + _sort_order = ('conceptosfr', 'conceptofr', ) + + def __init__(self): + self.conceptosfr = XmlField('ConceptosFR') + self.conceptofr = [] + super(ConceptosFR, self).__init__('ConceptosFR', 'conceptosfr') + +# 2.2 + + +class ConceptoFR(XmlModel): + + _sort_order = ('conceptofacturadofr', 'tipoconceptofacturadofr', 'importe') + + def __init__(self): + self.conceptofacturadofr = XmlField('ConceptoFacturadoFR') + self.tipoconceptofacturadofr = XmlField('TipoConceptoFacturadoFR') + self.importe = XmlField('Importe') + super(ConceptoFR, self).__init__('ConceptoFR', 'conceptofr') + +# 2.2 + + +class ImpuestosFR(XmlModel): + + _sort_order = ('impuestosfr', 'impuesto') + + def __init__(self): + self.impuestosfr = XmlField('ImpuestosFR') + self.impuesto = [] + super(ImpuestosFR, self).__init__('ImpuestosFR', 'impuestosfr') + +# 2.2 + + +class Impuesto(XmlModel): + + _sort_order = ('impuesto', 'base', 'tipoimpuesto', 'tipoimpositivo', 'tipooperacion') + + def __init__(self): + self.impuesto = XmlField('Impuesto') + self.base = XmlField('Base') + self.tipoimpuesto = XmlField('TipoImpuesto') + self.tipoimpositivo = XmlField('TipoImpositivo') + self.tipooperacion = XmlField('TipoOperacion') + self.importe = XmlField('Importe') + super(Impuesto, self).__init__('Impuesto', 'impuesto') + +# 2.2 + + +class UtilitiesExtensionELE(XmlModel): + + _sort_order = ('utilitiesextensionele', 'datosdelsuministro', 'utilitiesmedida', 'utilitiesdesgloseconceptosfactura' + , 'utilitieshistoricoconsumos', 'utilitiesmensajes', 'utilitiesatrasociado', 'utilitiescurva') + + def __init__(self): + self.utilitiesextensionele = XmlField('UtilitiesExtensionELE') + self.datosdelsuministro = DatosDelSuministro() + self.utilitiesmedida = UtilitiesMedida() + self.utilitiesdesgloseconceptosfactura = UtilitiesDesgloseConceptosFactura() + self.utilitieshistoricoconsumos = UtilitiesHistoricoConsumos() + self.utilitiesmensajes = UtilitiesMensajes() + self.utilitiesatrasociado = UtilitiesAtrAsociado() + self.utilitiescurva = UtilitiesCurva() + super(UtilitiesExtensionELE, self).__init__('UtilitiesExtensionELE', 'utilitiesextensionele') + +# 2.2 + + +class DatosDelSuministro(XmlModel): + + _sort_order = ('datosdelsuministro', 'CUPS', 'DireccionSuministro', 'contrato', 'potenciascontratadas', + 'datosdistribuidora', 'referenciaslegal', 'tarifa', 'agrupacion', 'referencia') + + def __init__(self): + self.datosdelsuministro = XmlField('DatosDelSuministro') + self.cups = XmlField('CUPS') + self.direccionsuministro = DireccionSuministro() + self.contrato = Contrato() + self.potenciascontratadas = PotenciasContratadas() + self.datosdistribuidora = DatosDistribuidora() + self.referenciaslegal = ReferenciasLegal() + self.tarifa = Tarifa() + self.agrupacion = Agrupacion() + self.referencia = XmlField('Referencia') + super(DatosDelSuministro, self).__init__('DatosDelSuministro', 'datosdelsuministro') + +# 2.2 + + +class DireccionSuministro(XmlModel): + + _sort_order = ('direccionsuministro', 'direccion', 'codigopostal', 'poblacion', 'provincia', 'pais') + + def __init__(self): + self.direccionsuministro = XmlField('DireccionSuministro') + self.direccion = XmlField('Direccion') + self.codigopostal = XmlField('CodigoPostal') + self.poblacion = XmlField('Poblacion') + self.provincia = XmlField('Provincia') + self.pais = XmlField('Pais') + super(DireccionSuministro, self).__init__('DireccionSuministro', 'direccionsuministro') + +# 2.2 + + +class Contrato(XmlModel): + + _sort_order = ('contrato', 'refcontratoempresa', 'fechafincontrato') + + def __init__(self): + self.contrato = XmlField('Contrato') + self.refcontratoempresa = XmlField('RefContratoEmpresa') + self.fechafincontrato = XmlField('FechaFinContrato') + super(Contrato, self).__init__('Contrato', 'contrato') + +# 2.2 + + +class PotenciasContratadas(XmlModel): + + _sort_order = ('potenciascontratadas', 'potenciacontratada') + + def __init__(self): + self.potenciascontratadas = XmlField('PotenciasContratadas') + self.potenciacontratada = [] + super(PotenciasContratadas, self).__init__('PotenciasContratadas', 'potenciascontratadas') + +# 2.2 + + +class PotenciaContratada(XmlModel): + + _sort_order = ('potenciacontratada', 'periodo', 'valor', 'unidadmedida', 'fechadesde', 'fechahasta') + + def __init__(self): + self.potenciacontratada = XmlField('PotenciaContratada') + self.periodo = XmlField('Periodo') + self.valor = XmlField('Valor') + self.unidadmedida = XmlField('UnidadMedida') + self.fechadesde = XmlField('FechaDesde') + self.fechahasta = XmlField('FechaHasta') + super(PotenciaContratada, self).__init__('PotenciaContratada', 'potenciacontratada') + +# 2.2 + + +class DatosDistribuidora(XmlModel): + + _sort_order = ('datosdistribuidora', 'distribuidora', 'telefonoaverias') + + def __init__(self): + self.datosdistribuidora = XmlField('DatosDistribuidora') + self.distribuidora = XmlField('Distribuidora') + self.telefonoaverias = XmlField('TelefonoAverias') + super(DatosDistribuidora, self).__init__('DatosDistribuidora', 'datosdistribuidora') + +# 2.2 + + +class ReferenciasLegal(XmlModel): + + _sort_order = ('referenciaslegal', 'referencialegal') + + def __init__(self): + self.referenciaslegal = XmlField('DatosDistribuidora') + self.referencialegal = ReferenciaLegal() + super(ReferenciasLegal, self).__init__('ReferenciasLegal', 'referenciaslegal') + +# 2.2 + + +class ReferenciaLegal(XmlModel): + + _sort_order = ('referencialegal', 'boeboca', 'fechaboeboca') + + def __init__(self): + self.referencialegal = XmlField('ReferenciaLegal') + self.boeboca = XmlField('BOEBOCA') + self.fechaboeboca = XmlField('FechaBOEBOCA') + super(ReferenciaLegal, self).__init__('ReferenciaLegal', 'referencialegal') + +# 2.2 + + +class Tarifa(XmlModel): + + _sort_order = ('tarifa', 'CodigoTarifaProducto', 'AltaMedidaEnBaja') + + def __init__(self): + self.tarifa = XmlField('Tarifa') + self.CodigoTarifaProducto = XmlField('CodigoTarifaProducto') + self.AltaMedidaEnBaja = AltaMedidaEnBaja() + super(Tarifa, self).__init__('Tarifa', 'tarifa') + +# 2.2 + + +class AltaMedidaEnBaja(XmlModel): + + _sort_order = ('altamedidaenbaja', 'marcamedidaconperdidas', 'kvastrafo', 'porcentajeperdidaspactadas') + + def __init__(self): + self.altamedidaenbaja = XmlField('AltaMedidaEnBaja') + self.marcamedidaconperdidas = XmlField('MarcaMedidaConPerdidas') + self.kvastrafo = XmlField('KVAsTrafo') + self.porcentajeperdidaspactadas = XmlField('PorcentajePerdidasPactadas') + super(AltaMedidaEnBaja, self).__init__('AltaMedidaEnBaja', 'altamedidaenbaja') + +# 2.2 + + +class Agrupacion(XmlModel): + + _sort_order = ('agrupacion', 'codigoagrupacion') + + def __init__(self): + self.agrupacion = XmlField('Agrupacion') + self.codigoagrupacion = XmlField('CodigoAgrupacion') + super(Agrupacion, self).__init__('Agrupacion', 'agrupacion') + +# 2.2 + + +class UtilitiesMedida(XmlModel): + + _sort_order = ('utilitiesmedida', 'medidassobreequipo') + + def __init__(self): + self.utilitiesmedida = XmlField('UtilitiesMedida') + self.medidassobreequipo = MedidasSobreEquipo() + super(UtilitiesMedida, self).__init__('UtilitiesMedida', 'utilitiesmedida') + +# 2.2 + + +class MedidasSobreEquipo(XmlModel): + + _sort_order = ('medidassobreequipo', 'medidasobreequipo') + + def __init__(self): + self.medidassobreequipo = XmlField('MedidasSobreEquipo') + self.medidasobreequipo = [] + super(MedidasSobreEquipo, self).__init__('MedidasSobreEquipo', 'medidassobreequipo') + +# 2.2 + + +class MedidaSobreEquipo(XmlModel): + _sort_order = ('medidasobreequipo', 'tipomedida', 'lineamedidacontador', 'numeroserie', 'codigodh', + 'magnitud', 'constantemultiplicadora', 'lecturadesde', 'fechahoradesde', 'lecturahasta', + 'fechahorahasta', 'tipodelecturadesde', 'tipodelecturahasta', 'consumoleido', + 'unidadconsumoenergialeido', 'ajuste', 'consumocalculado', 'unidadconsumocalculado') + + def __init__(self): + self.medidasobreequipo = XmlField('MedidaSobreEquipo') + self.tipomedida = XmlField('TipoMedida') + self.lineamedidacontador = XmlField('LineaMedidaContador') + self.numeroserie = XmlField('NumeroSerie') + self.codigodh = XmlField('CodigoDH') + self.magnitud = XmlField('Magnitud') + self.constantemultiplicadora = XmlField('ConstanteMultiplicadora') + self.lecturadesde = XmlField('LecturaDesde') + self.fechahoradesde = XmlField('FechaHoraDesde') + self.lecturahasta = XmlField('LecturaHasta') + self.fechahorahasta = XmlField('FechaHoraHasta') + self.tipodelecturadesde = XmlField('TipoDeLecturaDesde') + self.tipodelecturahasta = XmlField('TipoDeLecturaHasta') + self.consumoleido = XmlField('ConsumoLeido') + self.unidadconsumoenergialeido = XmlField('UnidadConsumoEnergiaLeido') + self.ajuste = XmlField('Ajuste') + self.consumocalculado = XmlField('ConsumoCalculado') + self.unidadconsumocalculado = XmlField('UnidadConsumoCalculado') + super(MedidaSobreEquipo, self).__init__('MedidaSobreEquipo', 'medidasobreequipo') + +# 2.2 + + +class UtilitiesDesgloseConceptosFactura(XmlModel): + + _sort_order = ('utilitiesdesgloseconceptosfactura', 'desgloseconceptosfactura', 'Impuestos') + + def __init__(self): + self.utilitiesdesgloseconceptosfactura = XmlField('UtilitiesDesgloseConceptosFactura') + self.desgloseconceptosfactura = [] + self.Impuestos = Impuestos() + super(UtilitiesDesgloseConceptosFactura, self).__init__('UtilitiesDesgloseConceptosFactura', 'utilitiesdesgloseconceptosfactura') + +# 2.2 + + +class DesgloseConceptosFactura(XmlModel): + + _sort_order = ('desgloseconceptosfactura', 'conceptofacturado', 'tipoconceptofacturado', 'detalleperiodo') + + def __init__(self): + self.desgloseconceptosfactura = XmlField('DesgloseConceptosFactura') + self.conceptofacturado = XmlField('ConceptoFacturado') + self.tipoconceptofacturado = XmlField('TipoConceptoFacturado') + self.detalleperiodo = [] + + super(DesgloseConceptosFactura, self).__init__('DesgloseConceptosFactura', 'desgloseconceptosfactura') + +# 2.2 + +class DetallePeriodo(XmlModel): + + _sort_order = ('detalleperiodo', 'periododh', 'cantidad', 'unidadescantidad', 'fechadesde', + 'fechahasta', 'periodo', 'unidadperiodo', 'preciounitario', 'unidadespreciounitario', + 'lineasmedidacontador', 'importe') + + def __init__(self): + self.detalleperiodo = XmlField('DetallePeriodo') + self.periododh = XmlField('PeriodoDH') + self.cantidad = XmlField('Cantidad') + self.unidadescantidad = XmlField('UnidadesCantidad') + self.fechadesde = XmlField('FechaDesde') + self.fechahasta = XmlField('FechaHasta') + self.periodo = XmlField('Periodo') + self.unidadperiodo = XmlField('UnidadPeriodo') + self.preciounitario = XmlField('PrecioUnitario') + self.unidadespreciounitario = XmlField('UnidadesPrecioUnitario') + self.lineasmedidacontador = LineasMedidaContador() + self.importe = XmlField('Importe') + super(DetallePeriodo, self).__init__('DetallePeriodo', 'detalleperiodo') + +# 2.2 + + +class LineasMedidaContador(XmlModel): + + _sort_order = ('lineasmedidacontador', 'lineamedidacontador') + + def __init__(self): + self.lineasmedidacontador = XmlField('LineasMedidaContador') + self.lineamedidacontador = [] + super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador') + +# 2.2 + + +class LineaMedidaContador(XmlModel): + + _sort_order = ('lineamedidacontador') + + def __init__(self): + self.lineamedidacontador = XmlField('LineaMedidaContador') + super(LineaMedidaContador, self).__init__('LineaMedidaContador', 'lineamedidacontador') + +# 2.2 + + +class Impuestos(XmlModel): + + _sort_order = ('impuestos', 'impuesto') + + def __init__(self): + self.impuestos = XmlField('Impuestos') + self.impuesto = [] + super(Impuestos, self).__init__('Impuestos', 'impuestos') + +# 2.2 + + +class UtilitiesHistoricoConsumos(XmlModel): + + _sort_order = ('utilitieshistoricoconsumos', 'historicoconsumo') + + def __init__(self): + self.utilitieshistoricoconsumos = XmlField('UtilitiesHistoricoConsumos') + self.historicoconsumo = [] + super(UtilitiesHistoricoConsumos, self).__init__('UtilitiesHistoricoConsumos', 'utilitieshistoricoconsumos') + +# 2.2 + + +class HistoriCoconsumo(XmlModel): + _sort_order = ('historicoconsumo', 'periodo', 'descripcion', 'valor', 'unidadmedida', + 'fechadesdeperiodo', 'fechahastaperiodo') + + def __init__(self): + self.historicoconsumo = XmlField('HistoricoConsumo') + self.periodo = XmlField('Periodo') + self.descripcion = XmlField('Descripcion') + self.valor = XmlField('Valor') + self.unidadmedida = XmlField('UnidadMedida') + self.fechadesdeperiodo = XmlField('FechaDesdePeriodo') + self.fechahastaperiodo = XmlField('FechaHastaPeriodo') + super(HistoriCoconsumo, self).__init__('HistoriCoconsumo', 'historicoconsumo') + +# 2.2 + + +class UtilitiesMensajes(XmlModel): + + _sort_order = ('utilitiesmensajes', 'listamensajes') + + def __init__(self): + self.utilitiesmensajes = XmlField('UtilitiesMensajes') + self.listamensajes = ListaMensajes() + super(UtilitiesMensajes, self).__init__('UtilitiesMensajes', 'utilitiesmensajes') + +# 2.2 + + +class ListaMensajes(XmlModel): + + _sort_order = ('listamensajes', 'mensaje') + + def __init__(self): + self.listamensajes = XmlField('ListaMensajes') + self.mensaje = [] + super(ListaMensajes, self).__init__('ListaMensajes', 'listamensajes') + +# 2.2 + + +class Mensaje(XmlModel): + + _sort_order = ('mensaje', 'mensajeid', 'contenido') + + def __init__(self): + self.mensaje = XmlField('Mensaje') + self.mensajeid = XmlField('MensajeID') + self.contenido = XmlField('Contenido') + super(Mensaje, self).__init__('Mensaje', 'mensaje') + +# 2.2 + + +class UtilitiesAtrAsociado(XmlModel): + + _sort_order = ('utilitiesatrasociado', 'tarifadeaccesoatr', 'contratodeacceso') + + def __init__(self): + self.utilitiesatrasociado = XmlField('UtilitiesAtrAsociado') + self.tarifadeaccesoatr = XmlField('TarifaDeAccesoATR') + self.contratodeacceso = XmlField('ContratoDeAcceso') + super(UtilitiesAtrAsociado, self).__init__('UtilitiesAtrAsociado', 'utilitiesatrasociado') + +# 2.2 + + +class UtilitiesCurva(XmlModel): + + _sort_order = ('utilitiescurva', 'CurvaDiaria') + + def __init__(self): + self.utilitiescurva = XmlField('UtilitiesCurva') + self.CurvaDiaria = [] + super(UtilitiesCurva, self).__init__('UtilitiesCurva', 'utilitiescurva') + +# 2.2 + + +class CurvaDiaria(XmlModel): + + _sort_order = ('curvadiaria', 'fechacurva', 'DatosCurva') + + def __init__(self): + self.curvadiaria = XmlField('CurvaDiaria') + self.fechacurva = XmlField('FechaCurva') + self.DatosCurva = DatosCurva() + super(CurvaDiaria, self).__init__('CurvaDiaria', 'curvadiaria') + +# 2.2 + + +class DatosCurva(XmlModel): + + _sort_order = ('datoscurva', 'tipologiacurva', 'tipovalor', 'periodicidad', 'valorcurva') + + def __init__(self): + self.datoscurva = XmlField('DatosCurva') + self.tipologiacurva = XmlField('TipologiaCurva') + self.tipovalor = XmlField('TipoValor') + self.periodicidad = XmlField('Periodicidad') + self.valorcurva = XmlField('ValorCurva') + super(DatosCurva, self).__init__('DatosCurva', 'datoscurva') + +# 2.2 + + + + + + + + + + + + + + + diff --git a/facturae/facturae.py b/facturae/facturae.py index d18e4d6..448a6f8 100644 --- a/facturae/facturae.py +++ b/facturae/facturae.py @@ -4,6 +4,7 @@ from .utils import FacturaeUtils from signxml import XMLSigner, XMLVerifier from xml.etree import ElementTree +from . import extensions class FacturaeRoot(XmlModel): _sort_order = ('root', 'fileheader', 'parties', 'invoices') @@ -18,6 +19,7 @@ def __init__(self): self.fileheader = FileHeader() self.parties = Parties() self.invoices = Invoices() + self.extensions = extensions.Extensions() super(FacturaeRoot, self).__init__('Facturae', 'root') def sign(self, certificate, password): diff --git a/xsd/UtilitiesExtension.xsd b/xsd/UtilitiesExtension.xsd new file mode 100644 index 0000000..23d5e85 --- /dev/null +++ b/xsd/UtilitiesExtension.xsd @@ -0,0 +1,3274 @@ + + + + + + Element ORIGIN of Utilities Extension. + Elemento ORIGEN de la Extension de las Utilities. + + + + + + Version. + Versión. + + + + + TRADUCIR:Element ORIGIN of Factura Resumen. + Elemento ORIGEN de la Factura Resumen. + + + + + TRADUCIR:Element ORIGIN of Utilities Extension. + Elemento ORIGEN de la Extension de Electricidad. + + + + + + + + + + + + TRADUCIR: Factura Resumen. + Factura Resumen. + + + + + TRADUCIR: Conceptos FR. + Conceptos FR. + + + + + TRADUCIR: Total Antes de Impuestos. + Total Antes de Impuestos. + + + + + TRADUCIR: Impuestos FR. + Impuestos FR. + + + + + + + + + + TRADUCIR: Concepto FR. + Concepto FR. + + + + + + + + + + TRADUCIR: Concepto Facturado FR. + Concepto Facturado FR. + + + + + + TRADUCIR: Tipo Concepto Facturado FR. + Tipo Concepto Facturado FR. + + + + + + TRADUCIR: Importe. + Importe. + + + + + + + + + + Extension Type. + Tipo Extensión. + + + + + Data supply. + Datos del suministro. + + + + + Measure. + Medida. + + + + + + Breakdown of charges/consumptions and prices. + Desglose de consumos y precios. + + + + + Charges/Consumptions history. + Histórico de consumos. + + + + + Statutory messages. + Mensajes reglamentarios. + + + + + Group invoice items. + Conceptos de factura agrupada. + + + + + Daily Curve. + Curva Diaria. + + + + + + + + + Universal Supply Point Code. + Código Universal de Punto de Suministro. + + + + + Supply address. + Dirección de suministro. + + + + + Contract. + Contrato. + + + + + TRADUCIR:Potencias contratadas. + Potencias contratadas. + + + + + Distributor data. + Datos Distribuidora. + + + + + Legal reference. + Referencia legal. + + + + + Tariff. + Tarifa. + + + + + TRADUCIR: Agrupación. + Agrupación. + + + + + Reference. + Referencia. + + + + + + + + + Supply address. + Dirección de suministro. + + + + + Supply postal code. + Codigo postal del suministro. + + + + + Supply city. + Ciudad del suministro. + + + + + Supply province. + Provincia del suministro. + + + + + Supply country. + País del suministro. + + + + + + + + + Company contract reference. + Referencia del contrato de empresa. + + + + + TRADUCIR: Fecha fin contrato energía. + Fecha fin contrato energía. + + + + + + + + + TRADUCIR:Potencia contratada. + Potencia contratada. + + + + + + + + + + Period. + Periodo. + + + + + + Value. + Valor. + + + + + + Unit of measure. + Unidad de medida. + + + + + + TRADUCIR: Fecha desde Potencia Contratada. + Fecha desde Potencia Contratada. + + + + + + TRADUCIR: Fecha hasta Potencia Contratada. + Fecha hasta Potencia Contratada. + + + + + + + + + Distributor. + Distribuidora. + + + + + Breakdowns telephone. + Tenefono de averias. + + + + + + + + + TRADUCIR:Legal reference. + Referencia Legal. + + + + + + + + + BOE / BOCA. + Boletin Oficial del Estado / Boletín Oficial de Canarias. + + + + + BOE / BOCA date. + Fecha del Boletín Oficial del Estado / Islas Canarias. + + + + + + + + + Tariff code. + Código de tarifa. + + + + + TRADUCIR: Alta Medida en Baja Tabla. + Alta Medida en Baja Tabla. + + + + + + + + + TRADUCIR: Marca Medida con Perdidas. + Marca Medida con Perdidas. + + + + + TRADUCIR: KVAs Trafo. + KVAs Trafo. + + + + + TRADUCIR: Porcentaje Perdidas Pactadas. + Porcentaje Perdidas Pactadas. + + + + + + + + + TRADUCIR: Código de la agrupación. + Código de la agrupación. + + + + + + + + + Measures over the equipment. + Medidas sobre el equipo. + + + + + + + + + Measure over the equipment. + Medida sobre el equipo. + + + + + + + + + Measure type. + Tipo de medida. + + + + + TRADUCIR: Linea Medida Contador. + Linea Medida Contador. + + + + + Series number. + Número serie. + + + + + DH Code. + Codigo DH. + + + + + Magnitude. + Magnitud. + + + + + Multiplier constant. + Constante multiplicadora. + + + + + Reading from (reading index). + Lectura desde (índice de lectura). + + + + + Date and time from. + Fecha y hora desde. + + + + + Reading to (reading index). + Lectura hasta (índice de lectura). + + + + + Date and time to. + Fecha y hora hasta. + + + + + Current reading type. + Tipo de lectura actual. + + + + + Previous reading type. + Tipo de lectura anterior. + + + + + Read consumption. + Consumo leido. + + + + + TRADUCIR: Unidades del consumo leído de energía. + Unidades del consumo leído de energía. + + + + + Adjustment. + Ajuste. + + + + + Calculated consumption. + Consumo calculado. + + + + + TRADUCIR: Unidades del consumo calculado. + Unidades del consumo calculado. + + + + + + + + + TRADUCIR: Desgloses de conceptos de factura. + Desgloses de conceptos de factura. + + + + + TRADUCIR: Impuestos. + Impuestos. + + + + + + + + + TRADUCIR: Concepto Facturado. + Concepto Facturado. + + + + + TRADUCIR: Tipo Concepto Facturado. + Tipo Concepto Facturado. + + + + + TRADUCIR: Desglose de concepto de factura. + Desglose de concepto de factura. + + + + + + + + + TRADUCIR: Periodo DH. + Periodo DH. + + + + + TRADUCIR: Cantidad. + Cantidad. + + + + + TRADUCIR: Unidad de cantidad. + Unidad de cantidad. + + + + + TRADUCIR:Start date. + Fecha de inicio. + + + + + TRADUCIR:End period date. + Fecha del fin. + + + + + Period. + Periodo. + + + + + TRADUCIR:Period unit. + Unidad del periodo. + + + + + TRADUCIR: Precio unitario. + Precio unitario. + + + + + TRADUCIR: Unidades del precio unitario. + Unidades del precio unitario. + + + + + TRADUCIR:Lineas Medida Contador. + Lineas Medida Contador. + + + + + TRADUCIR:Amount. + Importe. + + + + + + + + + + TRADUCIR:Linea Medida Contador. + Linea Medida Contador. + + + + + + + + + TRADUCIR: Impuesto. + Impuesto. + + + + + + + + + TRADUCIR: Base. + Base. + + + + + TRADUCIR: Tipo Impuesto. + Tipo Impuesto. + + + + + TRADUCIR: Tipo Impositivo. + Tipo Impositivo. + + + + + TRADUCIR: Tipo Operacion. + Tipo Operación. + + + + + TRADUCIR: Importe. + Importe. + + + + + + + + + Consumptions history. + Histórico de consumos. + + + + + + + + + + Period. + Periodo. + + + + + + Description. + Descripción. + + + + + Value. + Valor. + + + + + Unit of measure. + Unidad de medida. + + + + + Start period date. + Fecha de inicio del periodo. + + + + + End period date. + Fecha del fin del periodo. + + + + + + + + + Messages list. + Lista de mensajes. + + + + + + + + + Message. + Mensaje. + + + + + + + + + Identifier. + Identificador. + + + + + Content. + Contenido. + + + + + + + + + ATR access tariff. + Tarifa de acceso ATR. + + + + + Access contract. + Contrato de acceso. + + + + + + + + + + Daily Curve. + Curva Diaria. + + + + + + + + + + Date Curve. + Fecha Curva. + + + + + + Data Curve. + Datos Curva. + + + + + + + + + + Date Curve. + Fecha Curva. + + + + + + Data Curve. + Datos Curva. + + + + + + Date Curve. + Fecha Curva. + + + + + + Data Curve. + Datos Curva. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always to two decimal places. + Siempre con dos decimales. + + + + + + + + + Always to four decimal places. + Siempre con cuatro decimales. + + + + + + + + + Always to eight decimal places. + Siempre con ocho decimales. + + + + + + + + + Always to ten decimal places. + Siempre con diez decimales. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TGT.Contador telegestionado + + + + + Contador no telegestionado no telemedido + + + + + Contador Telemedido + + + + + + + + + Totalizador + + + + + Totalizador + + + + + Punta + + + + + Llano+Valle + + + + + Totalizador + + + + + Punta + + + + + Llano + + + + + Valle + + + + + Totalizador + + + + + Punta + + + + + Llano + + + + + Valle + + + + + Totalizador + + + + + Periodo 1 + + + + + Periodo 2 + + + + + Periodo 3 + + + + + Periodo 4 + + + + + Periodo 5 + + + + + Periodo 6 + + + + + Totalizador + + + + + Punta+ Llano + + + + + Valle + + + + + Supervalle + + + + + Totalizador + + + + + Punta + + + + + Llano + + + + + Valle + + + + + P1 + + + + + P2 + + + + + P3 + + + + + P4 + + + + + P5 + + + + + P6 + + + + + Periodo 1 + + + + + Periodo 2 + + + + + Periodo 3 + + + + + Periodo 4 + + + + + Periodo 5 + + + + + Periodo 6 + + + + + Periodo 7 + + + + + Periodo 8 + + + + + Periodo 9 + + + + + Periodo 10 + + + + + + + + + Energía Activa Entrante + + + + + Energía Activa Saliente + + + + + Excesos de potencia + + + + + Potencia máxima + + + + + Energía reactiva en cuadrante 1 + + + + + Energía reactiva en cuadrante 2 + + + + + Energía reactiva en cuadrante 3 + + + + + Energía reactiva en cuadrante 4 + + + + + + + + + + + + + + + + 2.0 A + + + + + 2.0 N. A + + + + + 3.0 A + + + + + 2.0 DHA + + + + + 2.1 A + + + + + 2.1 DHA + + + + + 2.0 DHS + + + + + 2.1 DHS + + + + + 3.1 A + + + + + 6.1 A + + + + + 6.2 + + + + + 6.3 + + + + + 6.4 + + + + + 6.5 + + + + + 6.1 B + + + + + 2.0TD + + + + + 3.0TD + + + + + 6.1TD + + + + + 6.2TD + + + + + 6.3TD + + + + + 6.4TD + + + + + 3.0TDVE + + + + + 6.1TDVE + + + + + + + + + Peaje de acceso del término de energía + + + + + Peaje de acceso del término de potencia + + + + + Término de potencia sin peajes + + + + + Término de energía sin peajes + + + + + Término de la energía con peajes + + + + + Término de potencia con peaje + + + + + Término reactiva + + + + + Excesos potencia + + + + + Alquiler de equipos de medida + + + + + Margen comercialización + + + + + Exceso de Potencia (en kilovatios, kW), sólo aplicable a peajes 6.x. + + + + + Derechos de extensión + + + + + Derechos de enganche + + + + + Otros derechos de acceso + + + + + Regularización Consumo TUR + + + + + DescuentoSobreTarifaTUR + + + + + DescuentoPorcSobreTarifaTUR + + + + + Otros conceptos + + + + + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Punta + + + + + Energía Activa Entrante Llano+Valle + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Punta + + + + + Energía Activa Entrante Llano + + + + + Energía Activa Entrante Valle + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Punta + + + + + Energía Activa Entrante Llano + + + + + Energía Activa Entrante Valle + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Periodo 1 + + + + + Energía Activa Entrante Periodo 2 + + + + + Energía Activa Entrante Periodo 3 + + + + + Energía Activa Entrante Periodo 4 + + + + + Energía Activa Entrante Periodo 5 + + + + + Energía Activa Entrante Periodo 6 + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Punta+ Llano + + + + + Energía Activa Entrante Valle + + + + + Energía Activa Entrante Supervalle + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante Punta + + + + + Energía Activa Entrante Llano + + + + + Energía Activa Entrante Valle + + + + + Energía Activa Entrante Totalizador + + + + + Energía Activa Entrante P1 + + + + + Energía Activa Entrante P2 + + + + + Energía Activa Entrante P3 + + + + + Energía Activa Entrante P4 + + + + + Energía Activa Entrante P5 + + + + + Energía Activa Entrante P6 + + + + + Energía Activa Entrante Periodo 1 + + + + + Energía Activa Entrante Periodo 2 + + + + + Energía Activa Entrante Periodo 3 + + + + + Energía Activa Entrante Periodo 4 + + + + + Energía Activa Entrante Periodo 5 + + + + + Energía Activa Entrante Periodo 6 + + + + + Energía Activa Entrante Periodo 7 + + + + + Energía Activa Entrante Periodo 8 + + + + + Energía Activa Entrante Periodo 9 + + + + + Energía Activa Entrante Periodo 10 + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Punta + + + + + Energía Activa Saliente Llano+Valle + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Punta + + + + + Energía Activa Saliente Llano + + + + + Energía Activa Saliente Valle + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Punta + + + + + Energía Activa Saliente Llano + + + + + Energía Activa Saliente Valle + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Periodo 1 + + + + + Energía Activa Saliente Periodo 2 + + + + + Energía Activa Saliente Periodo 3 + + + + + Energía Activa Saliente Periodo 4 + + + + + Energía Activa Saliente Periodo 5 + + + + + Energía Activa Saliente Periodo 6 + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Punta+ Llano + + + + + Energía Activa Saliente Valle + + + + + Energía Activa Saliente Supervalle + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente Punta + + + + + Energía Activa Saliente Llano + + + + + Energía Activa Saliente Valle + + + + + Energía Activa Saliente Totalizador + + + + + Energía Activa Saliente P1 + + + + + Energía Activa Saliente P2 + + + + + Energía Activa Saliente P3 + + + + + Energía Activa Saliente P4 + + + + + Energía Activa Saliente P5 + + + + + Energía Activa Saliente P6 + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Punta + + + + + Excesos de potencia Llano+Valle + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Punta + + + + + Excesos de potencia Llano + + + + + Excesos de potencia Valle + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Punta + + + + + Excesos de potencia Llano + + + + + Excesos de potencia Valle + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Periodo 1 + + + + + Excesos de potencia Periodo 2 + + + + + Excesos de potencia Periodo 3 + + + + + Excesos de potencia Periodo 4 + + + + + Excesos de potencia Periodo 5 + + + + + Excesos de potencia Periodo 6 + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Punta+ Llano + + + + + Excesos de potencia Valle + + + + + Excesos de potencia Supervalle + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia Punta + + + + + Excesos de potencia Llano + + + + + Excesos de potencia Valle + + + + + Excesos de potencia Totalizador + + + + + Excesos de potencia P1 + + + + + Excesos de potencia P2 + + + + + Excesos de potencia P3 + + + + + Excesos de potencia P4 + + + + + Excesos de potencia P5 + + + + + Excesos de potencia P6 + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Punta + + + + + Potencia máxima Llano+Valle + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Punta + + + + + Potencia máxima Llano + + + + + Potencia máxima Valle + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Punta + + + + + Potencia máxima Llano + + + + + Potencia máxima Valle + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Periodo 1 + + + + + Potencia máxima Periodo 2 + + + + + Potencia máxima Periodo 3 + + + + + Potencia máxima Periodo 4 + + + + + Potencia máxima Periodo 5 + + + + + Potencia máxima Periodo 6 + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Punta+ Llano + + + + + Potencia máxima Valle + + + + + Potencia máxima Supervalle + + + + + Potencia máxima Totalizador + + + + + Potencia máxima Punta + + + + + Potencia máxima Llano + + + + + Potencia máxima Valle + + + + + Potencia máxima Totalizador + + + + + Potencia máxima P1 + + + + + Potencia máxima P2 + + + + + Potencia máxima P3 + + + + + Potencia máxima P4 + + + + + Potencia máxima P5 + + + + + Potencia máxima P6 + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Punta + + + + + Energía reactiva en cuadrante 1 Llano+Valle + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Punta + + + + + Energía reactiva en cuadrante 1 Llano + + + + + Energía reactiva en cuadrante 1 Valle + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Punta + + + + + Energía reactiva en cuadrante 1 Llano + + + + + Energía reactiva en cuadrante 1 Valle + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Periodo 1 + + + + + Energía reactiva en cuadrante 1 Periodo 2 + + + + + Energía reactiva en cuadrante 1 Periodo 3 + + + + + Energía reactiva en cuadrante 1 Periodo 4 + + + + + Energía reactiva en cuadrante 1 Periodo 5 + + + + + Energía reactiva en cuadrante 1 Periodo 6 + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Punta+ Llano + + + + + Energía reactiva en cuadrante 1 Valle + + + + + Energía reactiva en cuadrante 1 Supervalle + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 Punta + + + + + Energía reactiva en cuadrante 1 Llano + + + + + Energía reactiva en cuadrante 1 Valle + + + + + Energía reactiva en cuadrante 1 Totalizador + + + + + Energía reactiva en cuadrante 1 P1 + + + + + Energía reactiva en cuadrante 1 P2 + + + + + Energía reactiva en cuadrante 1 P3 + + + + + Energía reactiva en cuadrante 1 P4 + + + + + Energía reactiva en cuadrante 1 P5 + + + + + Energía reactiva en cuadrante 1 P6 + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Punta + + + + + Energía reactiva en cuadrante 2 Llano+Valle + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Punta + + + + + Energía reactiva en cuadrante 2 Llano + + + + + Energía reactiva en cuadrante 2 Valle + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Punta + + + + + Energía reactiva en cuadrante 2 Llano + + + + + Energía reactiva en cuadrante 2 Valle + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Periodo 1 + + + + + Energía reactiva en cuadrante 2 Periodo 2 + + + + + Energía reactiva en cuadrante 2 Periodo 3 + + + + + Energía reactiva en cuadrante 2 Periodo 4 + + + + + Energía reactiva en cuadrante 2 Periodo 5 + + + + + Energía reactiva en cuadrante 2 Periodo 6 + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Punta+ Llano + + + + + Energía reactiva en cuadrante 2 Valle + + + + + Energía reactiva en cuadrante 2 Supervalle + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 Punta + + + + + Energía reactiva en cuadrante 2 Llano + + + + + Energía reactiva en cuadrante 2 Valle + + + + + Energía reactiva en cuadrante 2 Totalizador + + + + + Energía reactiva en cuadrante 2 P1 + + + + + Energía reactiva en cuadrante 2 P2 + + + + + Energía reactiva en cuadrante 2 P3 + + + + + Energía reactiva en cuadrante 2 P4 + + + + + Energía reactiva en cuadrante 2 P5 + + + + + Energía reactiva en cuadrante 2 P6 + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Punta + + + + + Energía reactiva en cuadrante 3 Llano+Valle + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Punta + + + + + Energía reactiva en cuadrante 3 Llano + + + + + Energía reactiva en cuadrante 3 Valle + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Punta + + + + + Energía reactiva en cuadrante 3 Llano + + + + + Energía reactiva en cuadrante 3 Valle + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Periodo 1 + + + + + Energía reactiva en cuadrante 3 Periodo 2 + + + + + Energía reactiva en cuadrante 3 Periodo 3 + + + + + Energía reactiva en cuadrante 3 Periodo 4 + + + + + Energía reactiva en cuadrante 3 Periodo 5 + + + + + Energía reactiva en cuadrante 3 Periodo 6 + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Punta+ Llano + + + + + Energía reactiva en cuadrante 3 Valle + + + + + Energía reactiva en cuadrante 3 Supervalle + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 Punta + + + + + Energía reactiva en cuadrante 3 Llano + + + + + Energía reactiva en cuadrante 3 Valle + + + + + Energía reactiva en cuadrante 3 Totalizador + + + + + Energía reactiva en cuadrante 3 P1 + + + + + Energía reactiva en cuadrante 3 P2 + + + + + Energía reactiva en cuadrante 3 P3 + + + + + Energía reactiva en cuadrante 3 P4 + + + + + Energía reactiva en cuadrante 3 P5 + + + + + Energía reactiva en cuadrante 3 P6 + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Punta + + + + + Energía reactiva en cuadrante 4 Llano+Valle + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Punta + + + + + Energía reactiva en cuadrante 4 Llano + + + + + Energía reactiva en cuadrante 4 Valle + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Punta + + + + + Energía reactiva en cuadrante 4 Llano + + + + + Energía reactiva en cuadrante 4 Valle + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Periodo 1 + + + + + Energía reactiva en cuadrante 4 Periodo 2 + + + + + Energía reactiva en cuadrante 4 Periodo 3 + + + + + Energía reactiva en cuadrante 4 Periodo 4 + + + + + Energía reactiva en cuadrante 4 Periodo 5 + + + + + Energía reactiva en cuadrante 4 Periodo 6 + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Punta+ Llano + + + + + Energía reactiva en cuadrante 4 Valle + + + + + Energía reactiva en cuadrante 4 Supervalle + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 Punta + + + + + Energía reactiva en cuadrante 4 Llano + + + + + Energía reactiva en cuadrante 4 Valle + + + + + Energía reactiva en cuadrante 4 Totalizador + + + + + Energía reactiva en cuadrante 4 P1 + + + + + Energía reactiva en cuadrante 4 P2 + + + + + Energía reactiva en cuadrante 4 P3 + + + + + Energía reactiva en cuadrante 4 P4 + + + + + Energía reactiva en cuadrante 4 P5 + + + + + Energía reactiva en cuadrante 4 P6 + + + + + Relación no unívoca/No aplica + + + + + + + + + Activa + + + + + Reactiva + + + + + Maxímetro + + + + + + + + + Periodo 1 + + + + + Periodo 2 + + + + + Periodo 3 + + + + + Periodo 4 + + + + + Periodo 5 + + + + + Periodo 6 + + + + + Totalizador + + + + + No aplica + + + + + + + + + + + + + + + + + Sujeto + + + + + No sujeto + + + + + Exento + + + + + Inversión Sujeto Pasivo + + + + + + + + + días + + + + + meses + + + + + años + + + + + horas + + + + + + + + + Eur./día + + + + + Eur. + + + + + Eur./año + + + + + Eur./kVAr + + + + + Eur./kVArh + + + + + Eur./kW + + + + + Eur./kWh + + + + + % + + + + + Eur./kWd + + + + + Eur./kWm + + + + + Eur./mes + + + + + centEur./mes + + + + + centEur./año + + + + + centEur./día + + + + + centEur./kVAr + + + + + centEur./kVArh + + + + + centEur./kW + + + + + centEur./kWd + + + + + centEur./kWh + + + + + centEur./kWm + + + + + kVA + + + + + kVAr + + + + + kVArh + + + + + kW + + + + + kWh + + + + + Otros + + + + + Eur/ud + + + + + + + + + Energía activa entrante + + + + + Energía activa saliente + + + + + Energía reactiva 1 cuadrante + + + + + Energía reactiva 2 cuadrante + + + + + Energía reactiva 3 cuadrante + + + + + Energía reactiva 4 cuadrante + + + + + + + + + Consumo + + + + + Precio + + + + + + + + + Horaria + + + + + Cuarto horaria + + + + + \ No newline at end of file From 8bdfd76539c27067cab26017ab07a9f8db7890ec Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 19 Mar 2024 12:15:13 +0100 Subject: [PATCH 02/14] fix code --- facturae/extensions.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 6dd1735..7cf07e1 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -8,7 +8,7 @@ class Extensions(XmlModel): - _sort_order = ('extensions', 'utility') + _sort_order = ('extensions', 'utilities') def __init__(self): self.extensions = XmlField('Extensions') @@ -20,7 +20,7 @@ def __init__(self): class UtilitiesExtensionsELE(XmlModel): - _sort_order = ('utilitiesextensionsele', 'version', 'sellerparty', 'buyerparty') + _sort_order = ('utilitiesextensionsele', 'version', 'utilitiesfacturaresumen', 'utilitiesextensionele') def __init__(self): self.utilitiesextensionsele = XmlField('UtilitiesExtensionsELE') @@ -102,11 +102,12 @@ def __init__(self): class UtilitiesExtensionELE(XmlModel): - _sort_order = ('utilitiesextensionele', 'datosdelsuministro', 'utilitiesmedida', 'utilitiesdesgloseconceptosfactura' + _sort_order = ('utilitiesextensionele', 'tipoextension', 'datosdelsuministro', 'utilitiesmedida', 'utilitiesdesgloseconceptosfactura' , 'utilitieshistoricoconsumos', 'utilitiesmensajes', 'utilitiesatrasociado', 'utilitiescurva') def __init__(self): self.utilitiesextensionele = XmlField('UtilitiesExtensionELE') + self.tipoextension = XmlField('TipoExtension') self.datosdelsuministro = DatosDelSuministro() self.utilitiesmedida = UtilitiesMedida() self.utilitiesdesgloseconceptosfactura = UtilitiesDesgloseConceptosFactura() From c5bcef61a8c1c7a0ce53819f9d44b77eb9ad78ed Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 19 Mar 2024 13:47:00 +0100 Subject: [PATCH 03/14] fix code --- facturae/extensions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 7cf07e1..abe3973 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -331,12 +331,12 @@ def __init__(self): class UtilitiesDesgloseConceptosFactura(XmlModel): - _sort_order = ('utilitiesdesgloseconceptosfactura', 'desgloseconceptosfactura', 'Impuestos') + _sort_order = ('utilitiesdesgloseconceptosfactura', 'desgloseconceptosfactura', 'impuestos') def __init__(self): self.utilitiesdesgloseconceptosfactura = XmlField('UtilitiesDesgloseConceptosFactura') self.desgloseconceptosfactura = [] - self.Impuestos = Impuestos() + self.impuestos = Impuestos() super(UtilitiesDesgloseConceptosFactura, self).__init__('UtilitiesDesgloseConceptosFactura', 'utilitiesdesgloseconceptosfactura') # 2.2 From 7458b298d7ee8b67d1a1cc078a38740d49018a8c Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 19 Mar 2024 15:17:06 +0100 Subject: [PATCH 04/14] fix code --- facturae/facturae.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facturae/facturae.py b/facturae/facturae.py index 448a6f8..d638b6a 100644 --- a/facturae/facturae.py +++ b/facturae/facturae.py @@ -7,7 +7,7 @@ from . import extensions class FacturaeRoot(XmlModel): - _sort_order = ('root', 'fileheader', 'parties', 'invoices') + _sort_order = ('root', 'fileheader', 'parties', 'invoices', 'extensions') def __init__(self): From 68230f61e5ec91b7cc20bcfa2cfb93d5d9d67401 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 19 Mar 2024 15:52:30 +0100 Subject: [PATCH 05/14] fix code --- facturae/extensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index abe3973..0903f36 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -86,7 +86,7 @@ def __init__(self): class Impuesto(XmlModel): - _sort_order = ('impuesto', 'base', 'tipoimpuesto', 'tipoimpositivo', 'tipooperacion') + _sort_order = ('impuesto', 'base', 'tipoimpuesto', 'tipoimpositivo', 'tipooperacion', 'importe') def __init__(self): self.impuesto = XmlField('Impuesto') From 4ff21f53dbf4ec5502152520e0df26e84aee2241 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 19 Mar 2024 15:59:11 +0100 Subject: [PATCH 06/14] fix code --- facturae/extensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 0903f36..41544a0 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -122,7 +122,7 @@ def __init__(self): class DatosDelSuministro(XmlModel): - _sort_order = ('datosdelsuministro', 'CUPS', 'DireccionSuministro', 'contrato', 'potenciascontratadas', + _sort_order = ('datosdelsuministro', 'cups', 'direccionsuministro', 'contrato', 'potenciascontratadas', 'datosdistribuidora', 'referenciaslegal', 'tarifa', 'agrupacion', 'referencia') def __init__(self): From 0f47f9cfbb3176990425a7c2e43fd41a85ec65db Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Fri, 5 Apr 2024 14:50:06 +0200 Subject: [PATCH 07/14] fix tupple --- facturae/extensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 41544a0..f53944d 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -394,7 +394,7 @@ def __init__(self): class LineaMedidaContador(XmlModel): - _sort_order = ('lineamedidacontador') + _sort_order = ('lineamedidacontador',) def __init__(self): self.lineamedidacontador = XmlField('LineaMedidaContador') From 1fbd77901f991ef144b9c5738881e40d84bf495e Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Mon, 8 Apr 2024 09:28:54 +0200 Subject: [PATCH 08/14] dont drop node with only root element if not empty --- facturae/extensions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index f53944d..58fe0c4 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -387,7 +387,7 @@ class LineasMedidaContador(XmlModel): def __init__(self): self.lineasmedidacontador = XmlField('LineasMedidaContador') self.lineamedidacontador = [] - super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador') + super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador', drop_empty=False) # 2.2 @@ -398,7 +398,7 @@ class LineaMedidaContador(XmlModel): def __init__(self): self.lineamedidacontador = XmlField('LineaMedidaContador') - super(LineaMedidaContador, self).__init__('LineaMedidaContador', 'lineamedidacontador') + super(LineaMedidaContador, self).__init__('LineaMedidaContador', 'lineamedidacontador', drop_empty=False) # 2.2 From f60a291a56bc994da644aedb817a2a2295d488e3 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Mon, 8 Apr 2024 09:32:49 +0200 Subject: [PATCH 09/14] fix code --- facturae/extensions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 58fe0c4..a7db128 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -382,11 +382,11 @@ def __init__(self): class LineasMedidaContador(XmlModel): - _sort_order = ('lineasmedidacontador', 'lineamedidacontador') + _sort_order = ('lineasmedidacontador', 'lineamedidacontador_list') def __init__(self): self.lineasmedidacontador = XmlField('LineasMedidaContador') - self.lineamedidacontador = [] + self.self.lineamedidacontador_list = [] super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador', drop_empty=False) # 2.2 From 2df0d3725ecd5b30cb481139e61f8585467ba3c8 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Mon, 8 Apr 2024 09:37:37 +0200 Subject: [PATCH 10/14] fix code --- facturae/extensions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index a7db128..15244a3 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -382,11 +382,11 @@ def __init__(self): class LineasMedidaContador(XmlModel): - _sort_order = ('lineasmedidacontador', 'lineamedidacontador_list') + _sort_order = ('lineasmedidacontador', 'lineamedidacontador') def __init__(self): self.lineasmedidacontador = XmlField('LineasMedidaContador') - self.self.lineamedidacontador_list = [] + self.self.lineamedidacontador = [] super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador', drop_empty=False) # 2.2 From cf092685ad84ca297f897fc9c4bfcd7df8f5bbdc Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Mon, 8 Apr 2024 09:38:53 +0200 Subject: [PATCH 11/14] fix code --- facturae/extensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 15244a3..58fe0c4 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -386,7 +386,7 @@ class LineasMedidaContador(XmlModel): def __init__(self): self.lineasmedidacontador = XmlField('LineasMedidaContador') - self.self.lineamedidacontador = [] + self.lineamedidacontador = [] super(LineasMedidaContador, self).__init__('LineasMedidaContador', 'lineasmedidacontador', drop_empty=False) # 2.2 From 3733d31aef409e4ea957f7ffbba5f9c3aacafae9 Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Tue, 23 Apr 2024 15:01:58 +0200 Subject: [PATCH 12/14] some typos --- facturae/extensions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index 58fe0c4..ff5b833 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -496,11 +496,11 @@ def __init__(self): class UtilitiesCurva(XmlModel): - _sort_order = ('utilitiescurva', 'CurvaDiaria') + _sort_order = ('utilitiescurva', 'curvadiaria') def __init__(self): self.utilitiescurva = XmlField('UtilitiesCurva') - self.CurvaDiaria = [] + self.curvadiaria = [] super(UtilitiesCurva, self).__init__('UtilitiesCurva', 'utilitiescurva') # 2.2 @@ -508,12 +508,12 @@ def __init__(self): class CurvaDiaria(XmlModel): - _sort_order = ('curvadiaria', 'fechacurva', 'DatosCurva') + _sort_order = ('curvadiaria', 'fechacurva', 'datoscurva') def __init__(self): self.curvadiaria = XmlField('CurvaDiaria') self.fechacurva = XmlField('FechaCurva') - self.DatosCurva = DatosCurva() + self.datoscurva = DatosCurva() super(CurvaDiaria, self).__init__('CurvaDiaria', 'curvadiaria') # 2.2 From 807353276f67d9bd8edaaa9eae814148602e728c Mon Sep 17 00:00:00 2001 From: Marc Calvo Date: Wed, 15 May 2024 10:21:15 +0200 Subject: [PATCH 13/14] add namespace to UtilitiesExtensionsELE --- facturae/extensions.py | 4 +++- facturae/facturae.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/facturae/extensions.py b/facturae/extensions.py index ff5b833..b90d509 100644 --- a/facturae/extensions.py +++ b/facturae/extensions.py @@ -23,7 +23,9 @@ class UtilitiesExtensionsELE(XmlModel): _sort_order = ('utilitiesextensionsele', 'version', 'utilitiesfacturaresumen', 'utilitiesextensionele') def __init__(self): - self.utilitiesextensionsele = XmlField('UtilitiesExtensionsELE') + nsmap = {'utilities': 'http://www.facturae.es/Facturae/Extensions/Utilities'} + + self.utilitiesextensionsele = XmlField('UtilitiesExtensionsELE', namespace=nsmap['utilities']) self.version = XmlField('Version') self.utilitiesfacturaresumen = UtilitiesFacturaResumen() self.utilitiesextensionele = UtilitiesExtensionELE() diff --git a/facturae/facturae.py b/facturae/facturae.py index d638b6a..5bb5a6d 100644 --- a/facturae/facturae.py +++ b/facturae/facturae.py @@ -9,11 +9,14 @@ class FacturaeRoot(XmlModel): _sort_order = ('root', 'fileheader', 'parties', 'invoices', 'extensions') - def __init__(self): + def __init__(self, utilities=False): nsmap = {'ds': 'http://www.w3.org/2000/09/xmldsig#', 'fe': 'http://www.facturae.es/Facturae/2014/v3.2.1/Facturae'} + if utilities: + nsmap['utilities'] = 'http://www.facturae.es/Facturae/Extensions/Utilities' + self.root = XmlField('Facturae', namespace=nsmap['fe'], attributes={'nsmap': nsmap}) self.fileheader = FileHeader() From 1d2bf2975b4573fb9a31fb5c95376143e2122aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillem=20Juli=C3=A0?= Date: Tue, 16 Jul 2024 12:56:34 +0200 Subject: [PATCH 14/14] TEST:FIX one of py3 --- specs/invoice_parser_spec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/invoice_parser_spec.py b/specs/invoice_parser_spec.py index aeab875..4818b7b 100644 --- a/specs/invoice_parser_spec.py +++ b/specs/invoice_parser_spec.py @@ -4,7 +4,7 @@ with description('Facturae Invoice'): with before.each: - with open('./specs/assets/facturae.xsig', 'r') as f: + with open('./specs/assets/facturae.xsig', 'rb') as f: xml_data = f.read() self.facturae = FacturaeParser(xml_data)