Skip to content

Commit 3482efd

Browse files
committed
Optimized Rounding
1 parent b540909 commit 3482efd

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

satcfdi/create/cfd/cfdi40.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,6 @@ def __post_init__(self):
335335
def _make_conceptos(conceptos, decimals):
336336
rnd_fn = lambda v: round(v, decimals)
337337
rnd_traslados_tracker = RoundTracker(decimals)
338-
rnd_retenciones_tracker = RoundTracker(decimals)
339338

340339
def make_concepto(concepto):
341340
impuestos = concepto.get("Impuestos") or {}
@@ -353,9 +352,9 @@ def make_concepto(concepto):
353352
else:
354353
impuestos = {
355354
imp_t: [
356-
make_impuesto(i, base=base, rnd_tracker=rnd_tracker) for i in imp
355+
make_impuesto(i, base=base, rnd_fn=rnd_tracker) for i in imp
357356
]
358-
for imp_t, imp, rnd_tracker in [('Traslados', trasladados, rnd_traslados_tracker), ('Retenciones', retenciones, rnd_retenciones_tracker)] if imp
357+
for imp_t, imp, rnd_tracker in [('Traslados', trasladados, rnd_traslados_tracker), ('Retenciones', retenciones, rnd_fn)] if imp
359358
}
360359
concepto['Impuestos'] = impuestos or None
361360
concepto["ObjetoImp"] = "02" if impuestos else "01"

satcfdi/create/compute.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def encode_impuesto(impuesto, tipo_factor, tasa_cuota: Decimal = None):
5050
return impuesto
5151

5252

53-
def make_impuesto(impuesto: dict, base, rnd_tracker):
53+
def make_impuesto(impuesto: dict, base, rnd_fn):
5454
_impuesto = impuesto["Impuesto"]
5555
tipo_factor = impuesto['TipoFactor']
5656
tasa_cuota = impuesto['TasaOCuota']
@@ -62,7 +62,7 @@ def make_impuesto(impuesto: dict, base, rnd_tracker):
6262
else:
6363
match tipo_factor:
6464
case "Tasa":
65-
importe = rnd_tracker.round(base * tasa_cuota)
65+
importe = rnd_fn(base * tasa_cuota)
6666
case "Cuota":
6767
importe = tasa_cuota
6868
case "Exento":
@@ -102,6 +102,9 @@ def peak(self, value):
102102
rounded = round(value, self.decimals)
103103
return rounded
104104

105+
def __call__(self, value):
106+
return self.round(value)
107+
105108

106109
def group_impuestos(elements, pfx="", ofx=""):
107110
retenciones = aggregate(

0 commit comments

Comments
 (0)