diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 28de848..0948cd8 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -1939,11 +1939,14 @@ def _totales(doc, cfdi, version): for n in list(node): tmp = CaseInsensitiveDict(n.attrib.copy()) if version in CFDI_VERSIONS: - tasa = round(float(tmp['tasaocuota']), DECIMALES) + tasa = '' + if 'tasaocuota' in tmp: + tasa = round(float(tmp['tasaocuota']), DECIMALES) title = 'Traslado {} {}'.format(tn.get(tmp['impuesto']), tasa) else: title = 'Traslado {} {}'.format(tmp['impuesto'], tmp['tasa']) - traslados.append((title, float(tmp['importe']))) + if 'importe' in tmp: + traslados.append((title, float(tmp['importe']))) node = imp.find('{}Retenciones'.format(PRE[version])) if node is not None: diff --git a/source/app/models/main.py b/source/app/models/main.py index 6c89aa3..2d8e5df 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -5684,6 +5684,7 @@ class Facturas(BaseModel): decimales_precios = Configuracion.get_bool('chk_config_decimales_precios') invoice_by_ticket = Configuracion.get_bool('chk_config_invoice_by_ticket') is_global = bool(invoice.periodicidad) + base_iva_exento = 0.0 data_global = {} if is_global: @@ -5842,6 +5843,7 @@ class Facturas(BaseModel): 'TipoFactor': 'Exento', } traslados.append(tax) + base_iva_exento += base continue if impuesto.key == '000': @@ -5957,6 +5959,14 @@ class Facturas(BaseModel): } retenciones.append(retencion) + if base_iva_exento: + traslado = { + 'Base': FORMAT.format(base_iva_exento), + 'Impuesto': '002', + 'TipoFactor': 'Exento', + } + traslados.append(traslado) + impuestos['traslados'] = traslados impuestos['retenciones'] = retenciones impuestos['total_locales_trasladados'] = ''