~marcelo-escobal/geined/Alianza

35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
"""Programa para mostrar evolución financiera"""
4
import cgitb; cgitb.enable()
5
import htm
6
import cgi
7
import datos
8
import funciones
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
9
import pagina
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
10
def listado():
11
    """Listado de evolución financiera"""
61 by Marcelo Escobal
Varias actualizaciones estructurales en PAGINA y HTM separando ambas logicas
12
    pag = pagina.Pagina("Evolución financiera", 2)
13
    htm.button("Volver", "geined.py?accion=financiero")
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
14
    global i
15
    i = 0
16
    htm.encabezado_tabla(["Item", "2008", "2009", "2010"])
36 by Marcelo Escobal
Cambios en alumnos x sucursal, se arregla error
17
    hilera("Bienes de uso", "122")
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
18
    hilera("Ingresos por cursos", "411")
19
    hilera("Otros ingresos", "412")
20
    hilera("Ingresos por textos", "413")
21
    hilera("Ingresos no operativos", "42")
22
    i = 1
23
    hilera("TOTAL DE INGRESOS", "4")
24
    i = 0
25
    hilera("Gastos operativos", "51")
26
    hilera("Gastos no operativos", "52")
27
    i = 1
28
    hilera("TOTAL DE GASTOS", "5")
29
    htm.fila_alterna(i)
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
30
    print(htm.td("RESULTADOS FINANCIEROS"))
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
31
    ingresos_2008 = consulta("2008", "4")
32
    egresos_2008 = consulta("2008", "5")
33
    saldo_2008 = ingresos_2008 + egresos_2008
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
34
    print(htm.td(funciones.moneda(saldo_2008), "d"))
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
35
36
    ingresos_2009 = consulta("2009", "4")
37
    egresos_2009 = consulta("2009", "5")
38
    saldo_2009 = ingresos_2009 + egresos_2009
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
39
    print(htm.td(funciones.moneda(saldo_2009), "d"))
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
40
41
    ingresos_2010 = consulta("2010", "4")
42
    egresos_2010 = consulta("2010", "5")
43
    saldo_2010 = ingresos_2010 + egresos_2010
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
44
    print(htm.td(funciones.moneda(saldo_2010), "d"))
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
45
    print("</tr>")
46
47
    htm.fin_tabla()
61 by Marcelo Escobal
Varias actualizaciones estructurales en PAGINA y HTM separando ambas logicas
48
    htm.button("Volver", "geined.py?accion=financiero")
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
49
    pag.fin()
50
def hilera(texto, rubro):
51
    """Devuelve una hilera de la tabla de evolución"""
52
    global i
53
    htm.fila_alterna(i)
114 by Marcelo Escobal
Varios cambios al chequear con Eclipse, múltiples errores de tipeo y otros
54
    print(htm.td(texto))
55
    print(htm.td(funciones.moneda(consulta("2008", rubro)), "d"))
56
    print(htm.td(funciones.moneda(consulta("2009", rubro)), "d"))
57
    print(htm.td(funciones.moneda(consulta("2010", rubro)), "d"))
35 by Marcelo Escobal
Agrego codss.py y evolucion.py: evolución financiera
58
    print("</tr>")
59
60
def consulta(ano, rubro):
61
    """Devuelve el saldo para un año y encabezado de rubro"""
62
    db = datos.Datos()
63
    sql = "select sum(transacciones.debe) as debe, sum(transacciones.haber) as haber from transacciones join cuentas on transacciones.cuenta_id = cuentas.id WHERE (YEAR(transacciones.fecha)=" \
64
        + ano + ") and (cuentas.rubro like '" + rubro + "%')"
65
    db.cursor.execute(sql)
66
    resultado = db.cursor.fetchone()
67
    if type(resultado["haber"]) == type(None):
68
        haber = 0
69
    else:
70
        haber = resultado["haber"]
71
    if type(resultado["debe"]) == type(None):
72
        debe = 0
73
    else:
74
        debe = resultado["debe"]
75
    saldo = haber - debe
76
    return saldo
77
78
if __name__ == "__main__":
79
    form = cgi.FieldStorage()
80
    accion = form.getvalue("accion", "listado")
81
    if accion == "listado":
82
        listado()
83
    else:
84
        listado()