179 lines
5.1 KiB
Plaintext
179 lines
5.1 KiB
Plaintext
{
|
|
PROGRAMA : ccprcs004.4gl
|
|
OBJETIVO : Consultar e imprimir reportes cuentas por cobrar
|
|
DESARROLLADO POR: Ing. Juan Soto
|
|
FECHA : Mayo 14, 2019
|
|
|
|
}
|
|
GLOBALS
|
|
DEFINE usuarios,clave VARCHAR(50),
|
|
selec,criterio STRING,
|
|
idx int,
|
|
img_es_hij,img_es_pad STRING
|
|
END GLOBALS
|
|
DEFINE tree_t DYNAMIC ARRAY OF RECORD
|
|
nombre VARCHAR(70),
|
|
corriente SMALLINT,
|
|
d1a30 DEC(12,2),
|
|
d31a60 DEC(12,2),
|
|
d61a90 DEC(12,2),
|
|
mas90 DEC(12,2),
|
|
totalSaldo DEC(12,2),
|
|
relleno CHAR(2),
|
|
nodo VARCHAR(10),
|
|
hijos VARCHAR(10),
|
|
imagen VARCHAR(30)
|
|
|
|
END RECORD,
|
|
k,p SMALLINT,
|
|
fecha DATE
|
|
|
|
MAIN
|
|
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("ccprmt01.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
|
|
CALL ccprcs004()
|
|
END MAIN
|
|
FUNCTION ccprcs004()
|
|
OPEN WINDOW w1 WITH FORM "ccfmcs004"
|
|
CALL ui.Interface.LoadStyles("mbsStyle")
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
CONSTRUCT BY NAME criterio ON a.codigo_grupo,a.descripcion
|
|
BEFORE CONSTRUCT
|
|
LET fecha = TODAY
|
|
END CONSTRUCT
|
|
INPUT BY NAME fecha
|
|
BEFORE INPUT
|
|
LET fecha = TODAY
|
|
|
|
END INPUT
|
|
ON ACTION buscar
|
|
|
|
LET img_es_pad="plus"
|
|
LET img_es_hij="minus"
|
|
CALL tree_t.clear()
|
|
CALL condatos()
|
|
|
|
ON ACTION CANCEL
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
|
|
CLOSE WINDOW w1
|
|
END FUNCTION
|
|
FUNCTION condatos()
|
|
DEFINE pdescrip VARCHAR(100),
|
|
pcodigo,i,x INT,
|
|
xcorriente,x1a30,x31a60,x61a90,xmas90,xtotalSaldo DEC(12,2)
|
|
|
|
|
|
LET selec =
|
|
"SELECT a.descripcion,a.codigo_Grupo FROM vetb00054 a ",
|
|
"WHERE ",criterio CLIPPED, " AND a.status_t IS NULL ",
|
|
"ORDER BY a.descripcion "
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busca CURSOR FOR comando
|
|
|
|
LET i = 1
|
|
FOREACH busca INTO pdescrip,pcodigo
|
|
LET tree_t[i].nombre = pdescrip
|
|
|
|
LET tree_t[i].nodo = ' '
|
|
LET tree_t[i].hijos = i
|
|
LET tree_t[i].imagen='about.png'
|
|
CALL llenahijos(tree_t[i].hijos,pcodigo) RETURNING x,xcorriente,x1a30,x31a60,x61a90,xmas90,xtotalSaldo
|
|
LET tree_t[i].corriente = xcorriente
|
|
LET tree_t[i].d1a30 = x1a30
|
|
LET tree_t[i].d31a60 = x31a60
|
|
LET tree_t[i].d61a90 = x61a90
|
|
LET tree_t[i].mas90 = xmas90
|
|
LET tree_t[i].totalSaldo = xtotalsaldo
|
|
|
|
LET i = x + 1
|
|
END FOREACH
|
|
# FOR i = 1 TO tree_t.getLength()
|
|
# DISPLAY "DATA ",tree_t[i].nombre," nodo ",tree_t[i].nodo," hijo ",tree_t[i].hijos
|
|
# END FOR
|
|
DISPLAY ARRAY tree_t TO s_rec.*
|
|
END FUNCTION
|
|
FUNCTION llenahijos(j,kcodigo)
|
|
DEFINE j,
|
|
kcodigo INT,
|
|
pnombre VARCHAR(100),
|
|
xtipo_cliente,xsec_cliente INT,
|
|
xcorriente,x1a30,x31a60,x61a90,xmas90,xtotalSaldo DEC(12,2),
|
|
txcorriente,tx1a30,tx31a60,tx61a90,txmas90,txtotalSaldo DEC(12,2)
|
|
DECLARE busca_h CURSOR FOR SELECT RTRIM('('+CAST(a.tipo_cliente AS CHAR(2))+'-'+RTRIM(CAST(a.sec_cliente AS char(10)))+')')
|
|
+ a.nombre,a.tipo_cliente,a.sec_cliente
|
|
FROM vetb00004 a,vetb00052 b
|
|
WHERE b.codigo_grupo = kcodigo AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente
|
|
LET k = j + 1
|
|
|
|
# IF p IS NULL OR p = 0 THEN
|
|
LET p = j+1
|
|
# END IF
|
|
LET txcorriente=0
|
|
LET tx1a30=0
|
|
LET tx31a60=0
|
|
LET tx61a90=0
|
|
LET txmas90=0
|
|
LET txtotalSaldo=0
|
|
FOREACH busca_h INTO pnombre,xtipo_cliente,xsec_cliente
|
|
LET tree_t[p].hijos = j USING "<<<<",".",k USING "<<<<"
|
|
LET tree_t[p].nombre = pnombre
|
|
LET tree_t[p].nodo = j USING "<<<<"
|
|
CALL busca_balance(xtipo_cliente,xsec_cliente,fecha) RETURNING xcorriente,x1a30,x31a60,x61a90,xmas90,xtotalSaldo
|
|
LET tree_t[p].corriente =xcorriente
|
|
LET tree_t[p].d1a30= x1a30
|
|
LET tree_t[p].d31a60 = x31a60
|
|
LET tree_t[p].d61a90= x61a90
|
|
LET tree_t[p].mas90=xmas90
|
|
LET tree_t[p].totalSaldo=xtotalSaldo
|
|
|
|
LET txcorriente = txcorriente + xcorriente
|
|
LET tx1a30 = x1a30+tx1a30
|
|
LET tx31a60 = tx31a60 + x31a60
|
|
LET tx61a90 = tx61a90 + x61a90
|
|
LET txmas90 = xmas90 +txmas90
|
|
LET txtotalSaldo = xtotalSaldo +txtotalSaldo
|
|
LET p = p+1
|
|
END FOREACH
|
|
RETURN p -1,txcorriente,tx1a30,tx31a60,tx61a90,txmas90,txtotalSaldo
|
|
END FUNCTION
|
|
|
|
{
|
|
FUNCTION pone_imagen(i)
|
|
|
|
DEFINE i SMALLINT
|
|
|
|
IF t_rec[i].hayHijos THEN
|
|
LET t_rec[i].imagen = img_es_pad
|
|
ELSE
|
|
LET t_rec[i].imagen = img_es_hij
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION collapse_d(i)
|
|
|
|
DEFINE i SMALLINT
|
|
|
|
LET t_rec[i].expandido= FALSE
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION expand_d(i)
|
|
|
|
DEFINE i SMALLINT
|
|
|
|
LET t_rec[i].expandido= TRUE
|
|
|
|
END FUNCTION
|
|
} |