{ ------------------------------------------------------------------------------- PROGRAMA : TEPRRP002 OBJETIVO : Estado De Cuentas PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Junio 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "teprgb000.4gl" DEFINE opt CHAR(1) DEFINE prima DECIMAL(10,2) DEFINE mov CHAR(1) DEFINE idx_1, idx_2, idx_3 SMALLINT DEFINE fecha_inicial, fecha_final DATE DEFINE salir, salir1, salir3, tipo_venta CHAR(1) DEFINE selec4,selec5, selec6 CHAR(1500) DEFINE tot_gen1 RECORD totald DECIMAL(10,2), totalc DECIMAL(10,2), totalg DECIMAL(10,2) END RECORD DEFINE clientes RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, valor DECIMAL(12,2) END RECORD DEFINE mvtos RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, tipo_doc CHAR(2), num_doc INTEGER, fecha_doc DATE, aplica_a INTEGER, valor DECIMAL(10,2), monto_desc LIKE cctb00001.monto_desc, cliente CHAR(6) , balance DECIMAL(12,2) END RECORD FUNCTION teprrp002() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM tefmrp002 FROM "tefmrp002" DISPLAY FORM tefmrp002 CALL pantalla() DISPLAY "teprrp002" AT 4,3 ATTRIBUTE(RED) DISPLAY " Estado Cuentas " AT 6,32 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*,archivo CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM tipo_cliente, sec_cliente INPUT BY NAME prima,fecha_inicial,fecha_final ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*,archivo AFTER FIELD fecha_inicial IF fecha_inicial is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF BEFORE FIELD fecha_final LET fecha_final = today AFTER FIELD fecha_final IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_final < fecha_inicial THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha_final END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fecha_inicial is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_final < fecha_inicial THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha_final END IF EXIT INPUT END INPUT LET parametro = "D" CALL elijeimpresion(parametro) RETURNING orden,destino,letras.* # Busca Balances de los clientes LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,sum(a.valor+a.monto_desc) ", "FROM cctb00001 a ", "WHERE ",criterio clipped," AND a.status_t is null AND a.fecha_orig < ? ", "GROUP BY 1,2 ORDER BY 1,2 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE b_balance FROM selec5 DECLARE c_balance SCROLL CURSOR FOR b_balance OPEN c_balance USING fecha_inicial # Busca los documentos que esten en el rango de fechas especificado LET selec4 = "SELECT a.tipo_cliente, a.sec_cliente, a.tipo_doc, a.num_doc, ", " a.fecha_orig, a.aplica_a, a.valor, a.monto_desc ", "FROM cctb00001 a ", "WHERE ",criterio clipped," AND a.status_t IS NULL AND ", " a.fecha_orig between ? AND ? ", "ORDER BY 1,2,6,5 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY "<< Buscando los Movimientos del Rango >>" AT 20,14 ATTRIBUTE (REVERSE,BOLD) PREPARE movi FROM selec4 DECLARE mvtos_cli SCROLL CURSOR FOR movi OPEN mvtos_cli USING fecha_inicial,fecha_final DISPLAY " " AT 20,14 START REPORT report14 TO archivo DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET idx_1 = 1 LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_1 mvtos_cli INTO mvtos.* IF status = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET salir = "S" LET numero_msg = 2 CALL msg(numero_msg) FINISH REPORT report14 EXIT WHILE END IF LET idx_1 = idx_1 + 1 LET mvtos.cliente = mvtos.tipo_cliente using "&&", mvtos.sec_cliente using "&&&&" LET mvtos.balance = 0 LET idx_2 = 1 LET salir1 = "N" WHILE salir1 != "S" FETCH ABSOLUTE idx_2 c_balance INTO clientes.* IF status = notfound THEN LET idx_2 = 1 LET salir1 = "S" EXIT WHILE END IF LET idx_2 = idx_2 + 1 IF mvtos.tipo_cliente = clientes.tipo_cliente AND mvtos.sec_cliente = clientes.sec_cliente THEN LET idx_2 = 1 LET mvtos.balance = clientes.valor EXIT WHILE END IF END WHILE # DISPLAY mvtos.cliente AT 13,1 IF prima is not null THEN LET mvtos.valor = mvtos.valor * prima LET mvtos.monto_desc = mvtos.monto_desc * prima LET mvtos.balance = mvtos.balance * prima END IF DISPLAY mvtos.cliente AT 21,20 DISPLAY mvtos.tipo_doc AT 21,35 DISPLAY mvtos.num_doc AT 21,38 OUTPUT TO REPORT report14(mvtos.*) END WHILE FINISH REPORT report14 #IF not int_flag THEN # LET int_flag = false # FINISH REPORT report14 PROMPT "Desea Imprimir Reporte [S/N].....?" FOR CHAR opt LET opt = UPSHIFT(opt) IF opt = "S" THEN #RUN imprime CALL fdestino(destino,archivo,imprime) END IF #END IF CLEAR SCREEN END FUNCTION REPORT report14(x) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, tipo_doc CHAR(2), num_doc INTEGER, fecha_doc DATE, aplica_a INTEGER, valor DECIMAL(10,2), monto_desc LIKE cctb00001.monto_desc, cliente CHAR(6) , balance DECIMAL(12,2) END RECORD DEFINE dias SMALLINT DEFINE p_calle,p_descrip CHAR(30) DEFINE p_casa,p_zona,p_numero CHAR(10) DEFINE hora CHAR(5) DEFINE tipo CHAR(2) DEFINE imp_cli CHAR(1) DEFINE credito, debito, tcredito, tdebito, tbalance, limite, b_balance, v1_30, v31_45, v46_60, vm_60,p_valor DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 33 ORDER BY x.cliente,x.aplica_a,x.fecha_doc FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, letras.comp_on # PRINT COLUMN 1, letras.doce, letras.negrillas_on PRINT COLUMN 1, "teprrp002", COLUMN 31, "R A Y - O - V A C D O M I N I C A N A, S. A.", COLUMN 103, "Pag.", COLUMN 108, pageno using "###" PRINT COLUMN 43, "Sistema de Tesoreria", COLUMN 101, today using "dd/mm/yyyy" PRINT COLUMN 44, " Estado de Cuenta ", COLUMN 106, hora PRINT COLUMN 47, " Al ", fecha_final using "dd/mm/yyyy" # , letras.negrillas_off IF prima is null THEN PRINT COLUMN 53, "RD$" ELSE PRINT COLUMN 53, "US$" END IF SKIP 1 LINES BEFORE GROUP OF x.cliente LET v1_30 = 0 LET v31_45 = 0 LET v46_60 = 0 LET vm_60 = 0 IF tdebito IS NULL THEN LET tdebito = 0 END IF IF tcredito IS NULL THEN LET tcredito = 0 END IF IF tbalance IS NULL THEN LET tbalance = 0 END IF SELECT b.nombre,b.limite_credito,b.zona_postal,b.num_rnc, c.calle,c.casa_num,d.descrip INTO descrip1,limite,p_zona,p_numero,p_calle,p_casa, p_descrip FROM vetb00004 b ,vetb00005 c,vetb00008 d WHERE x.tipo_cliente = b.tipo_cliente and x.sec_cliente = b.sec_cliente and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and b.cod_zona = d.cod_zona and b.status_t is null IF x.balance IS NULL THEN LET x.balance = 0 END IF IF limite IS NULL THEN LET limite = 0 END IF IF prima is not null THEN PRINT COLUMN 1,"Prima: ", prima using "###.##" END IF PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------" ,letras.negrillas_on PRINT COLUMN 1, "Cliente:", COLUMN 10, x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&", COLUMN 18, descrip1 clipped, COLUMN 49, "Limite Credito", COLUMN 64, limite using "####,###,###.##", COLUMN 81, "Balance Al: ", fecha_inicial using "dd/mm/yyyy" PRINT COLUMN 10, p_calle clipped," ",p_casa, COLUMN 24, "RNC: ", p_numero, COLUMN 91, x.balance using "####,###,###.##" PRINT COLUMN 10, p_descrip, COLUMN 22, "ZONA POSTAL: ",p_zona,letras.negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------" LET b_balance = x.balance # SKIP 1 LINE PRINT COLUMN 4, "D O C U M E N T O", COLUMN 29, "A F E C T A" PRINT COLUMN 1, "|----------------------|", COLUMN 27, "|---------------|" PRINT COLUMN 3, "Numero", COLUMN 11, "Tipo", COLUMN 17, "Fecha", COLUMN 29, "Numero", COLUMN 38, "Tipo", COLUMN 63, "D E B I T O", COLUMN 80, "C R E D I T O", COLUMN 99, "B A L A N C E" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" LET debito = 0 LET credito = 0 ON EVERY ROW # IF x.fecha_doc >= fecha_inicial AND # x.fecha_doc <= fecha_final THEN { SELECT UNIQUE tipo_doc INTO tipo FROM cctb00001 WHERE num_doc = x.num_doc #aplica_a } PRINT COLUMN 3, x.num_doc using "######", COLUMN 12, x.tipo_doc, COLUMN 16, x.fecha_doc using "dd/mm/yyyy", COLUMN 28, x.aplica_a using "######", COLUMN 39, tipo; LET b_balance = b_balance + (x.valor + x.monto_desc) IF x.valor >= 0 THEN PRINT COLUMN 59, x.valor using "####,###,###.##", COLUMN 97, b_balance using "####,###,###.##" LET debito = debito + x.valor ELSE PRINT COLUMN 78, x.valor + x.monto_desc using "####,###,###.##", COLUMN 97, b_balance using "####,###,###.##" LET credito = credito + (x.valor + x.monto_desc) END IF # END IF AFTER GROUP OF x.aplica_a LET p_valor = GROUP SUM(x.valor+x.monto_desc) IF p_valor > 0 THEN LET dias = fecha_inicial - x.fecha_doc IF dias < 31 THEN LET v1_30 = p_valor + v1_30 END IF IF dias > 30 and dias < 46 THEN LET v31_45 = p_valor + v31_45 END IF IF dias > 45 and dias < 61 THEN LET v46_60 = p_valor + v46_60 END IF IF dias > 60 THEN LET vm_60 = vm_60 + p_valor END IF END IF PAGE TRAILER PRINT COLUMN 1, "ANALISIS POR ANTIGUEDAD",letras.negrillas_on, COLUMN 33, "1 a 30", COLUMN 47, "31 a 45", COLUMN 59, "46 a 60", COLUMN 70, "Mas de 60",letras.negrillas_off PRINT COLUMN 1, "DE SU APRECIADA CUENTA: ", COLUMN 26, v1_30 using "##,###,###.##", COLUMN 41, v31_45 using "##,###,###.##", COLUMN 51, v46_60 using "##,###,###.##", COLUMN 61, vm_60 using "##,###,###.##" PRINT COLUMN 1, "NOTA: LE ROGAMOS REVISAR ESTE ESTADO Y NOTIFICAR A NUESTRO ", "DEPARTAMENTO DE CONTABILIDAD SOBRE CUALQUIER " PRINT COLUMN 1, "DISCREPANCIA O REPARO, A LA MAYOR BREVEDAD POSIBLE." PRINT COLUMN 1, "APRECIAMOS SU RESPUESTA, POR TANTO, QUEDAREMOS AGRADECIDOS" ," POR SU ATENCION, SERVANSE USAR LA COPIA DE ESTE ESTADO" PRINT COLUMN 1, "PARA SU CONFIRMACION." SKIP 1 LINE PRINT COLUMN 10, letras.negrillas_on, "NOMENCLATURA: PG- PAGOS FT- FACTURAS ND- NOTA DE DEBITO NC- NOTA CREDITO", " DE- DEVOLUCIONES", letras.negrillas_off { AFTER GROUP OF x.cliente IF imp_cli = "S" THEN SKIP 1 LINE PRINT COLUMN 1, letras.negrillas_on, COLUMN 27, "Total Cliente", COLUMN 59, debito using "####,###,###.##", COLUMN 78, credito using "####,###,###.##", COLUMN 97, b_balance using "####,###,###.##" PRINT COLUMN 59, "===============", COLUMN 78, "===============", COLUMN 97, "===============" , letras.negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" LET tcredito = tcredito + credito LET tdebito = tdebito + debito LET tbalance = tbalance + b_balance LET credito = 0 LET debito = 0 LET x.balance = 0 END IF} { ON LAST ROW SKIP 1 LINE PRINT COLUMN 1, letras.negrillas_on, COLUMN 27, "Total General", COLUMN 59, tdebito using "####,###,###.##", COLUMN 78, tcredito using "####,###,###.##", COLUMN 97, tbalance using "####,###,###.##" # , letras.negrillas_off LET tot_gen1.totald = tdebito LET tot_gen1.totalc = tcredito LET tot_gen1.totalg = tbalance PRINT normall # PRINT normal } END REPORT