Skip to content

Commit 0afd082

Browse files
committed
Rollback calcular traslados sobre totales
1 parent 646bfb4 commit 0afd082

File tree

6 files changed

+15
-21
lines changed

6 files changed

+15
-21
lines changed

satcfdi/create/cfd/cfdi40.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,7 @@ def __init__(
424424
cfdi_relacionados: CfdiRelacionados | Sequence[CfdiRelacionados | dict] = None,
425425
complemento: CFDI | Sequence[CFDI] = None,
426426
addenda: CFDI | Sequence[CFDI] = None,
427-
fecha: datetime = None,
428-
_traslados_sobre_totales: bool = False
427+
fecha: datetime = None
429428
):
430429
super().__init__({
431430
'Version': self.version,
@@ -456,14 +455,14 @@ def __init__(
456455
'NoCertificado': '',
457456
'Certificado': '',
458457
})
459-
self.compute(traslados_sobre_totales=_traslados_sobre_totales)
458+
self.compute()
460459

461-
def compute(self, traslados_sobre_totales=False):
460+
def compute(self):
462461
self["Conceptos"] = conceptos = _make_conceptos(self["Conceptos"], rnd_fn=rounder(self["Moneda"]))
463462
self["SubTotal"] = sub_total = sum(c['Importe'] for c in conceptos)
464463
descuento = sum(c.get('Descuento') or 0 for c in conceptos)
465464
self['Descuento'] = descuento or None
466-
self['Impuestos'] = impuestos = make_impuestos(conceptos, rnd_fn=rounder(self["Moneda"]), traslados_sobre_totales=traslados_sobre_totales)
465+
self['Impuestos'] = impuestos = make_impuestos(conceptos)
467466
total = sub_total - descuento
468467
if impuestos:
469468
total += impuestos.get('TotalImpuestosTrasladados') or 0

satcfdi/create/compute.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def group_impuestos(elements, pfx="", ofx=""):
101101
return impuestos
102102

103103

104-
def make_impuestos(conceptos, rnd_fn, traslados_sobre_totales):
104+
def make_impuestos(conceptos):
105105
impuestos = group_impuestos(conceptos)
106106

107107
if retenciones := impuestos.get('Retenciones'):
@@ -111,10 +111,6 @@ def make_impuestos(conceptos, rnd_fn, traslados_sobre_totales):
111111
impuestos['TotalImpuestosRetenidos'] = sum(imp)
112112

113113
if traslados := impuestos.get('Traslados'):
114-
if traslados_sobre_totales:
115-
for i in traslados:
116-
if i["TipoFactor"] == 'Tasa':
117-
i["Importe"] = rnd_fn(i["Base"] * i["TasaOCuota"])
118114
impuestos['Traslados'] = traslados
119115
imp = list(i["Importe"] for i in traslados if i["Importe"] is not None)
120116
if imp:

tests/test_create_cfdi40.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,7 @@ def test_suma_conceptos_iva():
476476
)
477477
),
478478
)
479-
],
480-
_traslados_sobre_totales=True
479+
]
481480
)
482481
invoice.sign(signer)
483482

tests/test_create_cfdi40/iva_concepto_suma.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,15 @@ <h5>Conceptos</h5>
350350
</td>
351351
<td>002</td>
352352
<td>16.0000%</td>
353-
<td>32.01</td>
353+
<td>32.00</td>
354354
</tr>
355355
<tr class="r h">
356356
<td>
357357
<b>Total</b>
358358
</td>
359359
<td></td>
360360
<td></td>
361-
<td>232.07</td>
361+
<td>232.06</td>
362362
</tr>
363363
</table><div><br></div>
364364
</body>

tests/test_create_cfdi40/iva_concepto_suma.pretty.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@
5555
'Fecha': datetime.datetime(2020, 1, 1, 22, 40, 38),
5656
'Folio': '123456',
5757
'FormaPago': None,
58-
'Impuestos': {'TotalImpuestosTrasladados': Decimal('32.01'),
58+
'Impuestos': {'TotalImpuestosTrasladados': Decimal('32.00'),
5959
'Traslados': [{'Base': Decimal('200.06'),
60-
'Importe': Decimal('32.01'),
60+
'Importe': Decimal('32.00'),
6161
'Impuesto': <Impuesto.IVA: '002'>,
6262
'TasaOCuota': Decimal('0.160000'),
6363
'TipoFactor': <TipoFactor.TASA: 'Tasa'>}]},
@@ -73,10 +73,10 @@
7373
'ResidenciaFiscal': None,
7474
'Rfc': 'KIJ0906199R1',
7575
'UsoCFDI': 'G03'},
76-
'Sello': 'T59GluNZjmodDh0AJMV8LTvuw82HfKjtUVUfFjsahXdI/TBG4pVTsqT5gd5vRzV7/CxqVzjrIq2593sKOxS73OQWamwFx7dIXHwNKfQDVNdgBsi9uvwozrf3Bb0HUMk/1Rx8NyA3LKlm4PrdpG0bOvcPzAK6nsaKkxjDzVv4+cweGhaqKyna0YNaczYrvgCfMamKQd3T7mspbq7Ene0jmYK1WQLCEjBGnZqYmTJcJmrpxen9FZoseVD4dxYyAxRLmqAowWaZQJYfQSoVxltUrZVcdcqAP6W/awaxagpZHZ2clPJSQJper7tnK83t6Rc26TN9F4XoKqsz+b/UR0cw6g==',
76+
'Sello': 'NPiFQDW7WZP47PcvulN8YPtLzT2e5s74nzBtnl6bgx/tMKEam3NcYzjIuF09QGAWjiwUK8mR+fNWrMZJ6kgKAu6r2RfyPSL2GAOtFYnG5pz4uZBzG3lREBLY/tVcK4ID/SSzzRMZ38jk/dXZeMxy90Tu+kpAb6zG5xVaWhYpF9Ud40ukE345GloVDrQj1FwzW8MJBnKdKewRi3gstwvQLKkQHX1EPa0Ghs/crVTFpepHLHqdH62droEzl1YpPgwdAXBCR5XlWbrPCaTvw2VXB1eQG16WJ9baKn4udndig3doFElZd23fCnuutl3a8tfudlvabISWV+Z9iROQr350mw==',
7777
'Serie': 'A',
7878
'SubTotal': Decimal('200.06'),
7979
'TipoCambio': None,
8080
'TipoDeComprobante': 'I',
81-
'Total': Decimal('232.07'),
81+
'Total': Decimal('232.06'),
8282
'Version': '4.0'}

tests/test_create_cfdi40/iva_concepto_suma.xml

Lines changed: 3 additions & 3 deletions
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="T59GluNZjmodDh0AJMV8LTvuw82HfKjtUVUfFjsahXdI/TBG4pVTsqT5gd5vRzV7/CxqVzjrIq2593sKOxS73OQWamwFx7dIXHwNKfQDVNdgBsi9uvwozrf3Bb0HUMk/1Rx8NyA3LKlm4PrdpG0bOvcPzAK6nsaKkxjDzVv4+cweGhaqKyna0YNaczYrvgCfMamKQd3T7mspbq7Ene0jmYK1WQLCEjBGnZqYmTJcJmrpxen9FZoseVD4dxYyAxRLmqAowWaZQJYfQSoVxltUrZVcdcqAP6W/awaxagpZHZ2clPJSQJper7tnK83t6Rc26TN9F4XoKqsz+b/UR0cw6g==" NoCertificado="30001000000400002311" Certificado="MIIF1DCCA7ygAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDIzMTEwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNTI4MjE1ODQyWhcNMjMwNTI3MjE1ODQyWjCByTEeMBwGA1UEAxMVQkVSRU5JQ0UgWElNTyBRVUVaQURBMR4wHAYDVQQpExVCRVJFTklDRSBYSU1PIFFVRVpBREExHjAcBgNVBAoTFUJFUkVOSUNFIFhJTU8gUVVFWkFEQTELMAkGA1UEBhMCTVgxJTAjBgkqhkiG9w0BCQEWFnBydWViYXNAcHJ1ZWJhcy5nb2IubXgxFjAUBgNVBC0TDVhJUUI4OTExMTZRRTQxGzAZBgNVBAUTElhJUUI4OTExMTZNR1JNWlIwNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJJLU6Iu3cOyJ14hkh9mjCy3XN5i1M36+60vnwTap8Uv1vQQxJqIB4WK85CSJxujhZE0XY2OT6QPJMQ3kqcuMk8Yz+KptHq51Uhs4jiShI0GGoVUqZ/8qSmY+DnYM/WGvSzuaMMm+cMwgMVYusKHE5FI+K39ht9aSP045KIR84ImnDuVp6DJeUaHEtlqspnQfMvZHfmT71IT7niBJOWYThjmCKMX6Y5tnlng8pOs9hjwHzlpUhVlGRjjUSJjeIZZY66kgbQcpOFCUsoyR2SbOZDMWSqlsXNsRZ5sjICxFrMqZ6GoCzobx7tn6WYisTVvMIvkNHzi8a8idyAMVrDhNb0CAwEAAaNPME0wDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCA9gwEQYJYIZIAYb4QgEBBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAFFyKKTbclgM9SellL9BCWusArCHwtERUXnaFzQzVbcXzZ9rrXoiXLo8OCCkE5fT4ig8FcWiH1bkh6ZABQSHKcEEY9ewJWZpD3bA8E7DLHfDHmG1EqRKStajIG1aq3GSvFAetMvJE2epFsWvkO7CkN2hNT9SwsFkBYl+aiCP27LzQ4uD+mXJ6Pg79nD/ayuQDa7RGJ6u5KHY1I66xcpVxOegQr+zolYQ6RfAye6Fk6JxUnYBVXtnsC3GLpB0fMb+53NZGzARVD9/762A3dy3GHlMWs9FVoRN7DBJyNsVSlAodi9ClETC3Tr7WuXIzPZTbu17JEcqgL6Ovrk6L/SLULvhDe89eBmZHGIm5Vaye2X1OeY+CmpKZ0nMzu16+hOhE3ecRTmxHFUCWzyHuH8qyBetiJY64vyHMwgbyqwM3Lk7lEQowhYb4s8vGyJgb0qQoyt0lACbtkM73CwzasPTtxnHZFKzt0C9aYIZvSVQidmK5EbGNh5YWL8tk352Sqjk4yxlZRqH8SkKHoMjPOrTcBJJwzWWQtz9hOl78kLqcYi+TK4ZWvunGXtZqDyQ2omhZBokSAHqUDjcRmOnuMpazF68j8U73Bz2voQtimMJlB/yyT6luFlzUbEK3ckUYBkk0PKxDe/6T7NXj+H4UWhpTivKnrqNWL7qAHLSP1tnmG8s=" SubTotal="200.06" Moneda="MXN" Total="232.07" 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="NPiFQDW7WZP47PcvulN8YPtLzT2e5s74nzBtnl6bgx/tMKEam3NcYzjIuF09QGAWjiwUK8mR+fNWrMZJ6kgKAu6r2RfyPSL2GAOtFYnG5pz4uZBzG3lREBLY/tVcK4ID/SSzzRMZ38jk/dXZeMxy90Tu+kpAb6zG5xVaWhYpF9Ud40ukE345GloVDrQj1FwzW8MJBnKdKewRi3gstwvQLKkQHX1EPa0Ghs/crVTFpepHLHqdH62droEzl1YpPgwdAXBCR5XlWbrPCaTvw2VXB1eQG16WJ9baKn4udndig3doFElZd23fCnuutl3a8tfudlvabISWV+Z9iROQr350mw==" NoCertificado="30001000000400002311" Certificado="MIIF1DCCA7ygAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDIzMTEwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNTI4MjE1ODQyWhcNMjMwNTI3MjE1ODQyWjCByTEeMBwGA1UEAxMVQkVSRU5JQ0UgWElNTyBRVUVaQURBMR4wHAYDVQQpExVCRVJFTklDRSBYSU1PIFFVRVpBREExHjAcBgNVBAoTFUJFUkVOSUNFIFhJTU8gUVVFWkFEQTELMAkGA1UEBhMCTVgxJTAjBgkqhkiG9w0BCQEWFnBydWViYXNAcHJ1ZWJhcy5nb2IubXgxFjAUBgNVBC0TDVhJUUI4OTExMTZRRTQxGzAZBgNVBAUTElhJUUI4OTExMTZNR1JNWlIwNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJJLU6Iu3cOyJ14hkh9mjCy3XN5i1M36+60vnwTap8Uv1vQQxJqIB4WK85CSJxujhZE0XY2OT6QPJMQ3kqcuMk8Yz+KptHq51Uhs4jiShI0GGoVUqZ/8qSmY+DnYM/WGvSzuaMMm+cMwgMVYusKHE5FI+K39ht9aSP045KIR84ImnDuVp6DJeUaHEtlqspnQfMvZHfmT71IT7niBJOWYThjmCKMX6Y5tnlng8pOs9hjwHzlpUhVlGRjjUSJjeIZZY66kgbQcpOFCUsoyR2SbOZDMWSqlsXNsRZ5sjICxFrMqZ6GoCzobx7tn6WYisTVvMIvkNHzi8a8idyAMVrDhNb0CAwEAAaNPME0wDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCA9gwEQYJYIZIAYb4QgEBBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAFFyKKTbclgM9SellL9BCWusArCHwtERUXnaFzQzVbcXzZ9rrXoiXLo8OCCkE5fT4ig8FcWiH1bkh6ZABQSHKcEEY9ewJWZpD3bA8E7DLHfDHmG1EqRKStajIG1aq3GSvFAetMvJE2epFsWvkO7CkN2hNT9SwsFkBYl+aiCP27LzQ4uD+mXJ6Pg79nD/ayuQDa7RGJ6u5KHY1I66xcpVxOegQr+zolYQ6RfAye6Fk6JxUnYBVXtnsC3GLpB0fMb+53NZGzARVD9/762A3dy3GHlMWs9FVoRN7DBJyNsVSlAodi9ClETC3Tr7WuXIzPZTbu17JEcqgL6Ovrk6L/SLULvhDe89eBmZHGIm5Vaye2X1OeY+CmpKZ0nMzu16+hOhE3ecRTmxHFUCWzyHuH8qyBetiJY64vyHMwgbyqwM3Lk7lEQowhYb4s8vGyJgb0qQoyt0lACbtkM73CwzasPTtxnHZFKzt0C9aYIZvSVQidmK5EbGNh5YWL8tk352Sqjk4yxlZRqH8SkKHoMjPOrTcBJJwzWWQtz9hOl78kLqcYi+TK4ZWvunGXtZqDyQ2omhZBokSAHqUDjcRmOnuMpazF68j8U73Bz2voQtimMJlB/yyT6luFlzUbEK3ckUYBkk0PKxDe/6T7NXj+H4UWhpTivKnrqNWL7qAHLSP1tnmG8s=" SubTotal="200.06" Moneda="MXN" Total="232.06" 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="XIQB891116QE4" Nombre="BERENICE XIMO QUEZADA" RegimenFiscal="601"/>
44
<cfdi:Receptor Rfc="KIJ0906199R1" Nombre="KIJ, S.A DE C.V." DomicilioFiscalReceptor="59820" RegimenFiscalReceptor="601" UsoCFDI="G03"/>
55
<cfdi:Conceptos>
@@ -18,9 +18,9 @@
1818
</cfdi:Impuestos>
1919
</cfdi:Concepto>
2020
</cfdi:Conceptos>
21-
<cfdi:Impuestos TotalImpuestosTrasladados="32.01">
21+
<cfdi:Impuestos TotalImpuestosTrasladados="32.00">
2222
<cfdi:Traslados>
23-
<cfdi:Traslado Base="200.06" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="32.01"/>
23+
<cfdi:Traslado Base="200.06" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="32.00"/>
2424
</cfdi:Traslados>
2525
</cfdi:Impuestos>
2626
</cfdi:Comprobante>

0 commit comments

Comments
 (0)