Test Failed
Push — main ( b5f93a...b20cbc )
by Sat CFDI
05:30
created

imprimir_contablidad()   A

Complexity

Conditions 2

Size

Total Lines 32
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 24
nop 3
dl 0
loc 32
rs 9.304
c 0
b 0
f 0
1
import xlsxwriter
2
from satcfdi.accounting.process import excel_export
3
from satcfdi.cfdi import CFDI
4
5
EXCEL_COLUMNS = {
6
    'NumCta': (12, False, lambda i: i['NumCta']),
7
    'Desc': (62, False, lambda i: '    ' * (i['Nivel'] - 1) + i['Desc']),
8
    'Natur': (5, False, lambda i: i['Natur']),
9
10
    'SaldoIni': (12, False, lambda i: i.get('SaldoIni')),
11
    'Debe': (12, False, lambda i: i.get('Debe')),
12
    'Haber': (12, False, lambda i: i.get('Haber')),
13
    'SaldoFin': (12, False, lambda i: i.get('SaldoFin')),
14
15
    'CodAgrup': (12, False, lambda i: i['CodAgrup'].code),
16
    'CodDesc': (120, False, lambda i: i['CodAgrup'].description),
17
}
18
19
20
def imprimir_contablidad(
21
        catalogo_cuentas,
22
        balanza_comprobacion,
23
        archivo_excel
24
):
25
    # ct = CFDI.from_file(catalogo_cuentas)
26
    # bc = CFDI.from_file(balanza_comprobacion)
27
    ct = catalogo_cuentas
28
    bc = balanza_comprobacion
29
30
    ctas = {
31
        c['NumCta']: {
32
            'Desc': c['Desc'],
33
            'Natur': c['Natur'],
34
            'CodAgrup': c['CodAgrup'],
35
            'Nivel': c['Nivel'],
36
        }
37
        for c in ct['Ctas']
38
    }
39
    for r in bc['Ctas']:
40
        ctv = ctas[r['NumCta']]
41
        r.update(ctv)
42
43
    workbook = xlsxwriter.Workbook(archivo_excel)
44
    excel_export(
45
        workbook=workbook,
46
        name=bc['RFC'] + str(bc['Anio']) + str(bc['Mes']),
47
        invoices=bc['Ctas'],
48
        columns=EXCEL_COLUMNS,
49
        row_height=1
50
    )
51
    workbook.close()
52