diff --git a/source/helper/util.py b/source/helper/util.py index edcc80f..5bcc45f 100644 --- a/source/helper/util.py +++ b/source/helper/util.py @@ -267,11 +267,15 @@ class DictToCfdi(): node_name = f'{{{XMLNS}}}BOVEDAFISCAL' node = ET.SubElement(self._node_addenda, node_name, schema, nsmap=NSMAP) - # ~ Type 02 - for k, v in data.items(): - node_name = f'{{{XMLNS}}}{k}' - n = ET.SubElement(node, node_name) - n.text = v + if type_boveda == '01': + for k, v in data.items(): + node_name = f'{{{XMLNS}}}{k}' + ET.SubElement(node, node_name, v) + elif type_boveda == '02': + for k, v in data.items(): + node_name = f'{{{XMLNS}}}{k}' + n = ET.SubElement(node, node_name) + n.text = v return @@ -522,7 +526,38 @@ class DataToDict(): def _boveda(self, data): type_addenda = data[0] - if type_addenda == '02': + if type_addenda == '01': + fields = ( + ('ImporteLetra', 'importe'), + ('UsoCFDI', 'UsoCFDI'), + ('MetodosPago', 'MetodoPagoSAT'), + ('FormaPago', 'FormaPagoSAT'), + ('TipoDoctoElectronico', 'TipoDocumento'), + ('BovedaFiscal', 'almacen', 'condicion', 'correoEmisor', 'correoReceptor', 'numeroCliente', 'razonSocialCliente', 'tipo'), + ('DireccionEmisor', 'Calle', 'CodigoPostal', 'Colonia', 'Estado', 'Localidad', 'Municipio', 'NoExterior', 'NoInterior', 'Pais', 'Referencia', 'Telefono'), + ('DireccionSucursal', 'Calle', 'Ciudad', 'CodigoPostal', 'Colonia', 'Estado', 'Localidad', 'Municipio', 'NoExterior', 'NoInterior', 'Pais', 'Referencia'), + ('DireccionReceptor', 'Calle', 'Ciudad', 'CodigoPostal', 'Colonia', 'Delegacion', 'Estado', 'Localidad', 'Municipio', 'NoExterior', 'NoInterior', 'Pais', 'Referencia'), + ('DireccionReceptorSucursal', 'Nombre', 'Calle', 'Ciudad', 'CodigoPostal', 'Estado', 'Pais', 'Comentario', 'Dato01', 'Dato02', 'Dato03', 'Dato04', 'Dato05', 'Dato06', 'Dato07', 'Dato08', 'Dato09', 'Dato10'), + ('NombreComercial', 'Nombre'), + ('ClaveTipoFolio', 'clave'), + ('TR', 'transaccion'), + ('OrdenCompra', 'folio'), + ('NotaDeVenta', 'folio'), + ) + boveda = {} + i = 1 + for f in fields: + k = f[0] + attr = {} + for a in f[1:]: + try: + attr[a] = data[i] + except IndexError: + log.error('Faltan datos en addenda Boveda') + attr[a] = '' + i += 1 + boveda[k] = attr + elif type_addenda == '02': fields = ( 'Razon_Social_destino', 'Calle_Destino',