{ 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 }