Skip to content

Commit 083a160

Browse files
committed
Optimized
1 parent 88f4077 commit 083a160

3 files changed

Lines changed: 15 additions & 16 deletions

File tree

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
strategy:
1616
fail-fast: false
1717
matrix:
18-
python-version: ["3.11", "3.12", "3.13"]
18+
python-version: ["3.11", "3.12", "3.13", "3.14"]
1919

2020
steps:
2121
- uses: actions/checkout@v3

satcfdi/create/cfd/cfdi40.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from ...transform.helpers import strcode
88

9-
from ...create.cfd.catalogos import Impuesto as CatImpuesto
9+
from ...create.cfd.catalogos import Impuesto as CatImpuesto, ObjetoImp
1010
from . import pago20
1111
from ..compute import make_impuestos, rounder, make_impuesto, \
1212
make_impuestos_dr_parcial, m_decimals, RoundTracker, RoundTrackerManager
@@ -340,25 +340,22 @@ def _make_conceptos(conceptos, decimals):
340340

341341
def make_concepto(concepto):
342342
impuestos = concepto.get("Impuestos") or {}
343-
trasladados = [x if isinstance(x, dict) else Traslado.parse(x) for x in iterate(impuestos.get("Traslados"))]
344-
retenciones = [x if isinstance(x, dict) else Retencion.parse(x) for x in iterate(impuestos.get("Retenciones"))]
345-
346343
valor_unitario = concepto['ValorUnitario']
347344

348345
importe = rnd_fn(concepto["Cantidad"] * valor_unitario)
349346
concepto["Importe"] = importe
350347
base = importe - (concepto.get("Descuento") or 0)
351348

352-
if concepto.get("ObjetoImp") in ("01", "03"):
353-
concepto['Impuestos'] = None
354-
else:
355-
impuestos = {
356-
imp_t: [
357-
make_impuesto(i, base=base, rnd_fn=rnd_tracker_instance[imp_t + strcode(i["Impuesto"])]) for i in imp
358-
]
359-
for imp_t, imp in [('Traslados', trasladados), ('Retenciones', retenciones)] if imp
360-
}
361-
concepto['Impuestos'] = impuestos or None
349+
impuestos = concepto['Impuestos'] = {
350+
imp_t: [
351+
make_impuesto(i, base=base,
352+
rnd_fn=rnd_tracker_instance[imp_t + strcode(i["Impuesto"])]) for i
353+
in iterate(impuestos.get(imp_t))
354+
]
355+
for imp_t in ['Traslados', 'Retenciones'] if impuestos.get(imp_t)
356+
} or None
357+
358+
if not concepto.get("ObjetoImp"):
362359
concepto["ObjetoImp"] = "02" if impuestos else "01"
363360

364361
return concepto

setup.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ def get_latest_git_tag():
6060
"Natural Language :: Spanish",
6161
"Operating System :: OS Independent",
6262
"Programming Language :: Python :: 3.11",
63-
"Programming Language :: Python :: 3.12"
63+
"Programming Language :: Python :: 3.12",
64+
"Programming Language :: Python :: 3.13",
65+
"Programming Language :: Python :: 3.14"
6466
],
6567
python_requires='>=3.11',
6668
package_dir={package: package_dir},

0 commit comments

Comments
 (0)