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 476fed7 commit ea294af
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 45 deletions.
89 changes: 55 additions & 34 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.catalogs import select

from satcfdi.utils import iterate

from satcfdi.create.contabilidad.AuxiliarCtas13 import AuxiliarCtas, Cuenta, DetalleAux
Expand Down Expand Up @@ -52,40 +54,6 @@ def output_file(file, folder, fiel=None, generate_pdf=False):
return output_file


def calcular_saldos(cuentas, polizas):
max_level = 1
for c in cuentas.values():
# c['SaldoIni'] = 0
c['Debe'] = 0
c['Haber'] = 0
c['SaldoFin'] = 0
max_level = max(max_level, c['Nivel'])

for p in polizas:
for t in p["Transaccion"]:
num_cta = t["NumCta"]
cuenta = cuentas[num_cta]
cuenta["Debe"] += t["Debe"]
cuenta["Haber"] += t["Haber"]

# Fill Parents
for level in range(max_level, 1, -1):
for k, v in cuentas.items():
if v['Nivel'] == level:
parent = v['SubCtaDe']
if parent:
p_cuenta = cuentas[parent]
p_cuenta['Debe'] += v['Debe']
p_cuenta['Haber'] += v['Haber']

# Fill SaldoFin
for c in cuentas.values():
if c["Natur"] == "D":
c["SaldoFin"] += c["SaldoIni"] + c["Debe"] - c["Haber"]
else:
c["SaldoFin"] += c["SaldoIni"] + c["Haber"] - c["Debe"]


def generar_contabilidad(
dp: DatePeriod,
rfc_emisor: str,
Expand All @@ -100,6 +68,7 @@ def generar_contabilidad(
fiel=None,
generate_pdf=False):

validate_cuentas(cuentas)
validate_polizas(polizas)
calcular_saldos(cuentas, polizas)

Expand Down Expand Up @@ -230,6 +199,23 @@ def group_aux_folios(polizas):
)


def validate_cuentas(cuentas):
# validar cuentas
for k, v in cuentas.items():
v['_Lowest'] = True
assert v['Natur'] in ['A', 'D']
if v['SubCtaDe']:
assert v['SubCtaDe'] in cuentas, f"Parent account {v['SubCtaDe']} not found for {k}"
v['Nivel'] = cuentas[v['SubCtaDe']]['Nivel'] + 1
else:
v['Nivel'] = 1
assert select('Cb9f_c_CodAgrup', v['CodAgrup'].split("_")[0]), f"Unknown CodAgrup: {v['CodAgrup']}"

for k, v in cuentas.items():
if v['SubCtaDe']:
cuentas[v['SubCtaDe']]['_Lowest'] = False


def validate_saldos(cuentas):
total = 0
totales = {}
Expand Down Expand Up @@ -263,3 +249,38 @@ def validate_polizas(polizas):
if u in num_un:
raise ValueError(f"Repeated NumUnIdenPol: {u}")
num_un.add(u)


def calcular_saldos(cuentas, polizas):
max_level = 1
for c in cuentas.values():
# c['SaldoIni'] = 0
c['Debe'] = 0
c['Haber'] = 0
c['SaldoFin'] = 0
max_level = max(max_level, c['Nivel'])

for p in polizas:
for t in p["Transaccion"]:
num_cta = t["NumCta"]
cuenta = cuentas[num_cta]
assert cuenta["_Lowest"], f"Account {num_cta} is not a lowest level account"
cuenta["Debe"] += t["Debe"]
cuenta["Haber"] += t["Haber"]

# Fill Parents
for level in range(max_level, 1, -1):
for k, v in cuentas.items():
if v['Nivel'] == level:
parent = v['SubCtaDe']
if parent:
p_cuenta = cuentas[parent]
p_cuenta['Debe'] += v['Debe']
p_cuenta['Haber'] += v['Haber']

# Fill SaldoFin
for c in cuentas.values():
if c["Natur"] == "D":
c["SaldoFin"] += c["SaldoIni"] + c["Debe"] - c["Haber"]
else:
c["SaldoFin"] += c["SaldoIni"] + c["Haber"] - c["Debe"]
7 changes: 0 additions & 7 deletions tests/contabilidad_electronica/cuentas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
Desc: Activos
Natur: D
CodAgrup: '100' # Activo
Nivel: 1
SubCtaDe:
SaldoIni: 0

Expand All @@ -13,21 +12,18 @@
Desc: Bancos
Natur: D
CodAgrup: '102' # Bancos nacionales
Nivel: 2
SubCtaDe: '1000'
SaldoIni: 0
'1020.01':
Desc: Bancos Nacionales
Natur: D
CodAgrup: '102.01' # Bancos nacionales
Nivel: 2
SubCtaDe: '1020'
SaldoIni: 0
'1020.02':
Desc: Bancos Extranjeros
Natur: D
CodAgrup: '102.02' # Bancos extranjeros
Nivel: 2
SubCtaDe: '1020'
SaldoIni: 0

Expand All @@ -36,20 +32,17 @@
Desc: Clientes
Natur: D
CodAgrup: '105' # Clientes
Nivel: 2
SubCtaDe: '1000'
SaldoIni: 0
'1050.01':
Desc: Clientes Nacionales
Natur: D
CodAgrup: '105.01' # Clientes nacionales
Nivel: 2
SubCtaDe: '1050'
SaldoIni: 0
'1050.02':
Desc: Clientes Extranjeros
Natur: D
CodAgrup: '105.02' # Clientes extranjeros
Nivel: 2
SubCtaDe: '1050'
SaldoIni: 0
Original file line number Diff line number Diff line change
@@ -1,5 +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:Ctas NumCta="1000" SaldoIni="0" Debe="10000" Haber="10000" SaldoFin="0"/>
<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"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<catalogocuentas:Catalogo xmlns:catalogocuentas="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/CatalogoCuentas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.3" RFC="CACX7605101P8" Mes="02" Anio="2024" xsi:schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/CatalogoCuentas http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/CatalogoCuentas/CatalogoCuentas_1_3.xsd">
<catalogocuentas:Ctas CodAgrup="100" NumCta="1000" Desc="Activos" Nivel="1" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="102" NumCta="1020" Desc="Bancos" SubCtaDe="1000" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="102.01" NumCta="1020.01" Desc="Bancos Nacionales" SubCtaDe="1020" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="102.02" NumCta="1020.02" Desc="Bancos Extranjeros" SubCtaDe="1020" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="102.01" NumCta="1020.01" Desc="Bancos Nacionales" SubCtaDe="1020" Nivel="3" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="102.02" NumCta="1020.02" Desc="Bancos Extranjeros" SubCtaDe="1020" Nivel="3" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="105" NumCta="1050" Desc="Clientes" SubCtaDe="1000" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="105.01" NumCta="1050.01" Desc="Clientes Nacionales" SubCtaDe="1050" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="105.02" NumCta="1050.02" Desc="Clientes Extranjeros" SubCtaDe="1050" Nivel="2" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="105.01" NumCta="1050.01" Desc="Clientes Nacionales" SubCtaDe="1050" Nivel="3" Natur="D"/>
<catalogocuentas:Ctas CodAgrup="105.02" NumCta="1050.02" Desc="Clientes Extranjeros" SubCtaDe="1050" Nivel="3" Natur="D"/>
</catalogocuentas:Catalogo>

0 comments on commit ea294af

Please sign in to comment.