Skip to content

Commit

Permalink
updated test requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
satcfdi committed Apr 10, 2024
1 parent 92a3045 commit 476fed7
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 17 deletions.
51 changes: 43 additions & 8 deletions satcfdi/accounting/contabilidad.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os
from typing import Sequence

from satcfdi.utils import iterate

from satcfdi.create.contabilidad.AuxiliarCtas13 import AuxiliarCtas, Cuenta, DetalleAux
from satcfdi.create.contabilidad.BCE13 import Balanza
from satcfdi.create.contabilidad.PLZ13 import Polizas, CompNal, Poliza
Expand Down Expand Up @@ -97,6 +99,8 @@ def generar_contabilidad(
folder=None,
fiel=None,
generate_pdf=False):

validate_polizas(polizas)
calcular_saldos(cuentas, polizas)

plz = Polizas(
Expand Down Expand Up @@ -125,7 +129,7 @@ def generar_contabilidad(
) for k, v in cuentas.items()
]
)
output_file(cat, folder, fiel)
cato = output_file(cat, folder, fiel)

ban = Balanza(
rfc=rfc_emisor,
Expand All @@ -138,7 +142,7 @@ def generar_contabilidad(
**v,
} for k, v in cuentas.items() if v["SaldoIni"] or v["Debe"] or v["Haber"] or v["SaldoFin"]],
)
output_file(ban, folder, fiel)
bano = output_file(ban, folder, fiel)

aux_detalles = group_aux_cuentas(polizas)
aux = AuxiliarCtas(
Expand Down Expand Up @@ -172,8 +176,8 @@ def generar_contabilidad(
output_file(auxf, folder, fiel, generate_pdf=generate_pdf)

imprimir_contablidad(
catalogo_cuentas=cat,
balanza_comprobacion=ban,
catalogo_cuentas=cato,
balanza_comprobacion=bano,
archivo_excel=os.path.join(folder, filename(ban)[:-4] + ".xlsx")
)

Expand All @@ -189,7 +193,7 @@ def group_aux_cuentas(polizas):
DetalleAux(
fecha=p["Fecha"],
num_un_iden_pol=p["NumUnIdenPol"],
concepto=t["Concepto"],
concepto=p["Concepto"] + " " + t["Concepto"],
debe=t["Debe"],
haber=t["Haber"],
)
Expand All @@ -199,10 +203,30 @@ def group_aux_cuentas(polizas):

def group_aux_folios(polizas):
for p in polizas:
compr_nal = []
compr_nal_otr = []
compr_ext = []

for t in p["Transaccion"]:
if c := t.get('CompNal'):
for c in iterate(c):
if c not in compr_nal:
compr_nal.append(c)
if c := t.get('CompNalOtr'):
for c in iterate(c):
if c not in compr_nal_otr:
compr_nal_otr.append(c)
if c := t.get('CompExt'):
for c in iterate(c):
if c not in compr_ext:
compr_ext.append(c)

yield DetAuxFol(
num_un_iden_pol=p["NumUnIdenPol"],
fecha=p["Fecha"],
compr_nal=p.comp_nal,
compr_nal=compr_nal,
compr_nal_otr=compr_nal_otr,
compr_ext=compr_ext,
)


Expand All @@ -225,6 +249,17 @@ def validate_saldos(cuentas):
assert total == 0
for k, v in totales.items():
if cuentas[k]['Natur'] == 'D':
assert v == cuentas[k]['SaldoFin']
if v != cuentas[k]['SaldoFin']:
raise ValueError(f"Error in {k}: {v} != {cuentas[k]['SaldoFin']}")
else:
assert v == -cuentas[k]['SaldoFin']
if v != -cuentas[k]['SaldoFin']:
raise ValueError(f"Error in {k}: {v} != {cuentas[k]['SaldoFin']}")


def validate_polizas(polizas):
num_un = set()
for p in polizas:
u = p['NumUnIdenPol']
if u in num_un:
raise ValueError(f"Repeated NumUnIdenPol: {u}")
num_un.add(u)
8 changes: 4 additions & 4 deletions satcfdi/accounting/contabilidad_print.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ def imprimir_contablidad(
balanza_comprobacion,
archivo_excel
):
# ct = CFDI.from_file(catalogo_cuentas)
# bc = CFDI.from_file(balanza_comprobacion)
ct = catalogo_cuentas
bc = balanza_comprobacion
ct = CFDI.from_file(catalogo_cuentas)
bc = CFDI.from_file(balanza_comprobacion)
# ct = catalogo_cuentas
# bc = balanza_comprobacion

ctas = {
c['NumCta']: {
Expand Down
44 changes: 43 additions & 1 deletion tests/test_contabilidad.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import datetime
import logging
import os
from uuid import UUID

import pytest
import yaml
from satcfdi.create.contabilidad.PLZ13 import Poliza, Transaccion, CompNal

from satcfdi.models import DatePeriod
from satcfdi import render
Expand Down Expand Up @@ -71,12 +75,50 @@ def test_generate_contabilidad_simple():
with open(os.path.join(current_dir, 'contabilidad_electronica', 'cuentas.yaml'), 'r', encoding='utf-8') as f:
cuentas = yaml.load(f, Loader=yaml.SafeLoader)

polizas = [
Poliza(
num_un_iden_pol="1",
fecha=datetime.date(2024, 2, 1),
concepto="Compra de equipo de computo",
transaccion=[
Transaccion(
num_cta="1020.01",
des_cta="Bancos",
concepto="Nal",
debe=10000,
haber=0,
comp_nal=[
CompNal(
uuid_cfdi='a4f4fea5-e798-4ab3-a2e5-75f741f4ecca',
rfc="CACX7605101P8",
monto_total=10000
)
]
),
Transaccion(
num_cta="1020.02",
des_cta="Bancos",
concepto="Ext",
debe=0,
haber=10000,
comp_nal=[
CompNal(
uuid_cfdi='a4f4fea5-e798-4ab3-a2e5-75f741f4ecca',
rfc="CACX7605101P8",
monto_total=10000
)
]
)
]
)
]
generar_contabilidad(
dp=DatePeriod(2024, 2),
rfc_emisor="CACX7605101P8",
cuentas=cuentas,
polizas=[],
polizas=polizas,
folder=os.path.join(current_dir, 'test_contabilidad_electronica/out/simple'),
tipo_solicitud='AF'
)

assert compare_directories(
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<BCE:Balanza xmlns:BCE="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoEnvio="N" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion/BalanzaComprobacion_1_3.xsd"/>
<BCE:Balanza xmlns:BCE="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoEnvio="N" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion/BalanzaComprobacion_1_3.xsd">
<BCE:Ctas NumCta="1020" SaldoIni="0" Debe="10000" Haber="10000" SaldoFin="0"/>
<BCE:Ctas NumCta="1020.01" SaldoIni="0" Debe="10000" Haber="0" SaldoFin="10000"/>
<BCE:Ctas NumCta="1020.02" SaldoIni="0" Debe="0" Haber="10000" SaldoFin="-10000"/>
</BCE:Balanza>
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<PLZ:Polizas xmlns:PLZ="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo/PolizasPeriodo_1_3.xsd"/>
<PLZ:Polizas xmlns:PLZ="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="AF" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo/PolizasPeriodo_1_3.xsd">
<PLZ:Poliza NumUnIdenPol="1" Fecha="2024-02-01" Concepto="Compra de equipo de computo">
<PLZ:Transaccion NumCta="1020.01" DesCta="Bancos" Concepto="Nal" Debe="10000" Haber="0">
<PLZ:CompNal UUID_CFDI="a4f4fea5-e798-4ab3-a2e5-75f741f4ecca" RFC="CACX7605101P8" MontoTotal="10000"/>
</PLZ:Transaccion>
<PLZ:Transaccion NumCta="1020.02" DesCta="Bancos" Concepto="Ext" Debe="0" Haber="10000">
<PLZ:CompNal UUID_CFDI="a4f4fea5-e798-4ab3-a2e5-75f741f4ecca" RFC="CACX7605101P8" MontoTotal="10000"/>
</PLZ:Transaccion>
</PLZ:Poliza>
</PLZ:Polizas>
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<AuxiliarCtas:AuxiliarCtas xmlns:AuxiliarCtas="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas/AuxiliarCtas_1_3.xsd"/>
<AuxiliarCtas:AuxiliarCtas xmlns:AuxiliarCtas="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="AF" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarCtas/AuxiliarCtas_1_3.xsd">
<AuxiliarCtas:Cuenta NumCta="1020.01" DesCta="Bancos Nacionales" SaldoIni="0" SaldoFin="10000">
<AuxiliarCtas:DetalleAux Fecha="2024-02-01" NumUnIdenPol="1" Concepto="Compra de equipo de computo Nal" Debe="10000" Haber="0"/>
</AuxiliarCtas:Cuenta>
<AuxiliarCtas:Cuenta NumCta="1020.02" DesCta="Bancos Extranjeros" SaldoIni="0" SaldoFin="-10000">
<AuxiliarCtas:DetalleAux Fecha="2024-02-01" NumUnIdenPol="1" Concepto="Compra de equipo de computo Ext" Debe="0" Haber="10000"/>
</AuxiliarCtas:Cuenta>
</AuxiliarCtas:AuxiliarCtas>
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<RepAux:RepAuxFol xmlns:RepAux="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios/AuxiliarFolios_1_3.xsd"/>
<RepAux:RepAuxFol xmlns:RepAux="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" TipoSolicitud="AF" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/AuxiliarFolios/AuxiliarFolios_1_3.xsd">
<RepAux:DetAuxFol NumUnIdenPol="1" Fecha="2024-02-01">
<RepAux:ComprNal UUID_CFDI="a4f4fea5-e798-4ab3-a2e5-75f741f4ecca" MontoTotal="10000" RFC="CACX7605101P8"/>
</RepAux:DetAuxFol>
</RepAux:RepAuxFol>

0 comments on commit 476fed7

Please sign in to comment.