diff --git a/source/app/controllers/cfdi_xml.py b/source/app/controllers/cfdi_xml.py index f680f58..ce95784 100644 --- a/source/app/controllers/cfdi_xml.py +++ b/source/app/controllers/cfdi_xml.py @@ -325,7 +325,11 @@ class CFDI(object): attributes = {} attributes['version'] = SAT['locales']['version'] + if not datos['total_locales_trasladados']: + datos['total_locales_trasladados'] = '0.00' attributes['TotaldeTraslados'] = datos['total_locales_trasladados'] + if not datos['total_locales_retenciones']: + datos['total_locales_retenciones'] = '0.00' attributes['TotaldeRetenciones'] = datos['total_locales_retenciones'] node = ET.SubElement( diff --git a/source/app/models/main.py b/source/app/models/main.py index 344bf12..16be3a9 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -2326,12 +2326,12 @@ class Facturas(BaseModel): product['cantidad'] = cantidad product['valor_unitario'] = valor_unitario - product['descuento'] = descuento + product['descuento'] = round(descuento * cantidad, DECIMALES) product['precio_final'] = precio_final product['importe'] = round(cantidad * valor_unitario, DECIMALES) - descuento_cfdi += descuento - subtotal += importe + descuento_cfdi += product['descuento'] + subtotal += product['importe'] FacturasDetalle.create(**product) @@ -2382,12 +2382,12 @@ class Facturas(BaseModel): } FacturasImpuestos.create(**invoice_tax) - total = subtotal + \ + total = subtotal - descuento_cfdi + \ (total_trasladados or 0) - (total_retenciones or 0) \ + locales_traslados - locales_retenciones total_mn = round(total * invoice.tipo_cambio, DECIMALES) data = { - 'subtotal': subtotal + descuento, + 'subtotal': subtotal, 'descuento': descuento_cfdi, 'total': total, 'total_mn': total_mn, @@ -2624,11 +2624,11 @@ class Facturas(BaseModel): impuestos['traslados'] = traslados impuestos['retenciones'] = retenciones - impuestos['total_locales_trasladados'] = '0.00' + impuestos['total_locales_trasladados'] = '' if total_locales_trasladados: impuestos['total_locales_trasladados'] = \ FORMAT.format(total_locales_trasladados) - impuestos['total_locales_retenciones'] = '0.00' + impuestos['total_locales_retenciones'] = '' if total_locales_retenciones: impuestos['total_locales_retenciones'] = \ FORMAT.format(total_locales_retenciones)