Skip to content

Commit 4cb0aad

Browse files
committed
Fixed TotalImpuestosTrasladados
1 parent 97a9415 commit 4cb0aad

20 files changed

+498
-51
lines changed

satcfdi/create/compute.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,15 @@ def make_impuestos(conceptos):
106106

107107
if retenciones := impuestos.get('Retenciones'):
108108
impuestos['Retenciones'] = retenciones
109-
impuestos['TotalImpuestosRetenidos'] = sum(i["Importe"] for i in retenciones if i["Importe"])
109+
imp = list(i["Importe"] for i in retenciones if i["Importe"] is not None)
110+
if imp:
111+
impuestos['TotalImpuestosRetenidos'] = sum(imp)
110112

111113
if traslados := impuestos.get('Traslados'):
112114
impuestos['Traslados'] = traslados
113-
impuestos['TotalImpuestosTrasladados'] = sum(i["Importe"] for i in traslados if i["Importe"])
115+
imp = list(i["Importe"] for i in traslados if i["Importe"] is not None)
116+
if imp:
117+
impuestos['TotalImpuestosTrasladados'] = sum(imp)
114118

115119
return impuestos or None
116120

tests/test_create_cfdi40.py

+47
Original file line numberDiff line numberDiff line change
@@ -377,3 +377,50 @@ def test_nomina():
377377
invoice.sign(signer)
378378

379379
verify_invoice(invoice, f"{xml_file}")
380+
381+
382+
def test_iva_exento():
383+
rfc = 'xiqb891116qe4'
384+
signer = get_signer(rfc)
385+
386+
invoice = cfdi40.Comprobante(
387+
emisor=cfdi40.Emisor(
388+
rfc=signer.rfc,
389+
nombre=signer.legal_name,
390+
regimen_fiscal="601"
391+
),
392+
lugar_expedicion="56820",
393+
fecha=datetime.fromisoformat("2020-01-01T22:40:38"),
394+
receptor=cfdi40.Receptor(
395+
rfc='KIJ0906199R1',
396+
nombre='KIJ, S.A DE C.V.',
397+
uso_cfdi='G03',
398+
domicilio_fiscal_receptor="59820",
399+
regimen_fiscal_receptor="601"
400+
),
401+
metodo_pago='PPD',
402+
serie="A",
403+
folio="123456",
404+
conceptos=[
405+
cfdi40.Concepto(
406+
cuenta_predial='1234567890',
407+
clave_prod_serv='10101702',
408+
cantidad=Decimal('1.00'),
409+
clave_unidad='E48',
410+
descripcion='SERVICIOS DE FACTURACION',
411+
valor_unitario=Decimal('15390.30'),
412+
impuestos=cfdi40.Impuestos(
413+
traslados=cfdi40.Traslado(
414+
impuesto=Impuesto.IVA,
415+
tipo_factor=TipoFactor.EXENTO,
416+
importe=None,
417+
tasa_o_cuota=None
418+
)
419+
),
420+
)
421+
]
422+
)
423+
invoice.sign(signer)
424+
425+
verify_invoice(invoice, "iva_exento")
426+

tests/test_create_cfdi40/h&e951128469_ingreso_exento.pretty.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
'Fecha': datetime.datetime(2020, 1, 1, 22, 40, 38),
3535
'Folio': '123456',
3636
'FormaPago': None,
37-
'Impuestos': {'TotalImpuestosTrasladados': 0,
38-
'Traslados': [{'Base': Decimal('15390.30'),
37+
'Impuestos': {'Traslados': [{'Base': Decimal('15390.30'),
3938
'Importe': None,
4039
'Impuesto': <Impuesto.IVA: '002'>,
4140
'TasaOCuota': None,
@@ -52,7 +51,7 @@
5251
'ResidenciaFiscal': None,
5352
'Rfc': 'KIJ0906199R1',
5453
'UsoCFDI': 'G03'},
55-
'Sello': 'ITnWt9XD28y3p9TifH554OrrvBoPcnsr+v33Tkhq+P+XD1tqg3dsKnC6GqYJezTdCbdpS9+VOaAK6b7/0Efw5KmwRKJ/zXHcdaG5vjHNoAljH+HHu/t4gbK+ToSkLnT2mSEr8dbGeUWMUXsu/yTonZQfw0aXcd8NXxwCJeB/EH1sAlAesZ1uMMVdcNhbOfiDPwFuMuGaKvTXj6pRpbU4SdZ5BKboqyOBfiBtXC+B/n8R/NoniMs+SAhPj9QF4hFPh5v62eFFrP1/KeK16uwHhUaF4VQmqvIgKmoh84kaFhXLXRLD80q0ShgfnYWof8uDZH7o7fIon02FMDUxSZdmgQ==',
54+
'Sello': 'aR5o+/+GiFVZG1csiz01f1IuDtW/R/FpgKHViqpF/61rb//fzaoea2aqj8Z4PSiduekpZW+GFC8g/yQrVbKTBeymIyJinBogcqChMVlu9wIw2CbVYk7zJ3ts+ieD6e1eoyc7w0BJk3WfHrdOwEQY8saSVItouOZ71vMWuvGGpRyhx+xzFJM3W2C85KdXrH/baS3Cxo89ekpKhpU9Qh4cP8YnVm6kNjUyx2QIfdjHN6Tx5d2NKofvHgvJx2cTTALNWR0sbLpJeBZk7pt8mg/nzyEqcUQ1q/jYl3wmzlq67OIJuefrp0GGi6b1zncwV4vWWZ15KOrt4TpGRCdHVwuXQg==',
5655
'Serie': 'A',
5756
'SubTotal': Decimal('15390.30'),
5857
'TipoCambio': None,

tests/test_create_cfdi40/h&e951128469_ingreso_exento.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version='1.0' encoding='UTF-8'?>
2-
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="4.0" Serie="A" Folio="123456" Fecha="2020-01-01T22:40:38" Sello="ITnWt9XD28y3p9TifH554OrrvBoPcnsr+v33Tkhq+P+XD1tqg3dsKnC6GqYJezTdCbdpS9+VOaAK6b7/0Efw5KmwRKJ/zXHcdaG5vjHNoAljH+HHu/t4gbK+ToSkLnT2mSEr8dbGeUWMUXsu/yTonZQfw0aXcd8NXxwCJeB/EH1sAlAesZ1uMMVdcNhbOfiDPwFuMuGaKvTXj6pRpbU4SdZ5BKboqyOBfiBtXC+B/n8R/NoniMs+SAhPj9QF4hFPh5v62eFFrP1/KeK16uwHhUaF4VQmqvIgKmoh84kaFhXLXRLD80q0ShgfnYWof8uDZH7o7fIon02FMDUxSZdmgQ==" NoCertificado="30001000000400002460" Certificado="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" SubTotal="15390.30" Moneda="MXN" Total="15390.30" TipoDeComprobante="I" Exportacion="01" MetodoPago="PPD" LugarExpedicion="56820" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd">
2+
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="4.0" Serie="A" Folio="123456" Fecha="2020-01-01T22:40:38" Sello="aR5o+/+GiFVZG1csiz01f1IuDtW/R/FpgKHViqpF/61rb//fzaoea2aqj8Z4PSiduekpZW+GFC8g/yQrVbKTBeymIyJinBogcqChMVlu9wIw2CbVYk7zJ3ts+ieD6e1eoyc7w0BJk3WfHrdOwEQY8saSVItouOZ71vMWuvGGpRyhx+xzFJM3W2C85KdXrH/baS3Cxo89ekpKhpU9Qh4cP8YnVm6kNjUyx2QIfdjHN6Tx5d2NKofvHgvJx2cTTALNWR0sbLpJeBZk7pt8mg/nzyEqcUQ1q/jYl3wmzlq67OIJuefrp0GGi6b1zncwV4vWWZ15KOrt4TpGRCdHVwuXQg==" NoCertificado="30001000000400002460" Certificado="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" SubTotal="15390.30" Moneda="MXN" Total="15390.30" TipoDeComprobante="I" Exportacion="01" MetodoPago="PPD" LugarExpedicion="56820" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd">
33
<cfdi:Emisor Rfc="H&amp;E951128469" Nombre="HERRERIA &amp; ELECTRICOS" RegimenFiscal="601"/>
44
<cfdi:Receptor Rfc="KIJ0906199R1" Nombre="KIJ, S.A DE C.V." DomicilioFiscalReceptor="59820" RegimenFiscalReceptor="601" UsoCFDI="G03"/>
55
<cfdi:Conceptos>
@@ -12,7 +12,7 @@
1212
<cfdi:CuentaPredial Numero="1234567890"/>
1313
</cfdi:Concepto>
1414
</cfdi:Conceptos>
15-
<cfdi:Impuestos TotalImpuestosTrasladados="0">
15+
<cfdi:Impuestos>
1616
<cfdi:Traslados>
1717
<cfdi:Traslado Base="15390.30" Impuesto="002" TipoFactor="Exento"/>
1818
</cfdi:Traslados>

0 commit comments

Comments
 (0)