{ ------------------------------------------------------------------------------- PROGRAMA : CPPRRP002 OBJETIVO : Saldos por Antiguedad PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Junio 16, 1993 ------------------------------------------------------------------------------- } GLOBALS "cpprgb000.4gl" DEFINE fecha_corte DATE DEFINE cod_sp1 SMALLINT DEFINE idx_1, idx_2 SMALLINT DEFINE doccli9 RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nombre CHAR(30), tipo_doc CHAR(2), fecha_doc DATE, num_doc CHAR(10), suplidor CHAR(6) END RECORD DEFINE tot_gen2 RECORD total1 DECIMAL(10,2), total2 DECIMAL(10,2), total3 DECIMAL(10,2), total4 DECIMAL(10,2), total5 DECIMAL(10,2), total6 DECIMAL(10,2) END RECORD FUNCTION cpprrp002() DEFINE valor1,valor2,valor3 DECIMAL(12,2) # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cpfmrp002 FROM "cpfmrp002" DISPLAY FORM cpfmrp002 CALL pantalla() DISPLAY "cpprrp002" AT 4,3 DISPLAY "Saldos por Antiguedad" AT 6,29 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_corte,cod_sp1 BEFORE FIELD fecha_corte LET fecha_corte = today AFTER FIELD fecha_corte IF fecha_corte is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_corte END IF AFTER FIELD cod_sp1 IF cod_sp1 is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp1 END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Busca valor de las facturas cuyas fechas de vencimiento son menores # a la fecha de corte DECLARE ft_valor CURSOR FOR SELECT a.cod_sp,a.cod_sp_sec,b.nom_sp,a.tipo_doc,a.fecha_orig,a.num_doc FROM cptb00001 a,cotb00001 b WHERE a.cod_sp = b.cod_sp and a.cod_sp_sec = b.cod_sp_sec and a.fecha_orig <= fecha_corte and a.cod_sp = cod_sp1 and a.status_t is null AND (a.aplica_a = a.num_doc OR a.tipo_doc = "CP") # GROUP BY 1,2,3,4,6 DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) START REPORT reporte31 TO "C:\\ARCHIVO" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH ft_valor INTO doccli9.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE EXIT FOREACH END IF LET doccli9.suplidor = doccli9.cod_sp using "&&", doccli9.cod_sp_sec using "&&&&" OUTPUT TO REPORT reporte31(doccli9.*) END FOREACH FINISH REPORT reporte31 DISPLAY BY NAME tot_gen2.* LET tot_gen2.total1 = 0 LET tot_gen2.total2 = 0 LET tot_gen2.total3 = 0 LET tot_gen2.total4 = 0 LET tot_gen2.total6 = 0 LET tot_gen2.total5 = 0 PROMPT "Desea Imprimir Reporte [S/N]......?" FOR CHAR opt LET opt = UPSHIFT(opt) IF opt = "S" THEN RUN "TYPE C:\\ARCHIVO > %USPRINT%" END IF CLEAR SCREEN END FUNCTION REPORT reporte31(x) DEFINE x RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nombre CHAR(30), tipo_doc CHAR(2), fecha_doc DATE, num_doc CHAR(10), suplidor CHAR(6) END RECORD DEFINE valor1,valor2,valor3,valor4 DECIMAL(12,2) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(6) DEFINE comp_off CHAR(6) DEFINE doce CHAR(2) DEFINE normall CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE fecha_factura DATE DEFINE de1a30, de31a45, de46a60, masde60, total_saldo, mas120 DECIMAL(12,2) DEFINE tm120,t30, t45, t60, tm60, tsaldo DECIMAL(12,2) DEFINE dias INTEGER OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.suplidor FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time LET lj = (123 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "cpprrp002", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 116, "Pag. ",pageno using "###" PRINT COLUMN 47, "Sistema de Cuentas por Pagar", COLUMN 114, today using "dd/mm/yyyy" PRINT COLUMN 45, "Saldos por Antiguedad al ", fecha_corte using "dd/mm/yy", COLUMN 119, hora PRINT COLUMN 53, "Valores en RD$" SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" PRINT COLUMN 2, "S u p l i d o r", COLUMN 46, "De 1 a 30", COLUMN 66, "De 31 a 60", COLUMN 82, "De 61 a 90", COLUMN 99, "91 a 120", COLUMN 113, "Mas de 120", COLUMN 133, "Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" BEFORE GROUP OF x.suplidor LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET mas120 = 0 ON EVERY ROW LET valor3 = 0 IF x.tipo_doc = "CP" THEN SELECT SUM(a.valor) INTO valor1 FROM cptb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec AND a.tipo_doc = "CP" AND a.aplica_a IS NULL AND a.num_doc=x.num_doc AND a.status_t IS NULL AND a.fecha_orig <= fecha_corte SELECT SUM(a.valor) INTO valor2 FROM cptb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec AND a.tipo_doc="CP" AND a.aplica_a IS NOT NULL AND a.num_doc=x.num_doc AND a.status_t IS NULL AND a.fecha_orig <= fecha_corte IF valor1 IS NULL THEN LET valor1 = 0 END IF IF valor2 IS NULL THEN LET valor2 = 0 END IF LET valor3 = valor1 - valor2 ELSE SELECT SUM(a.valor) INTO valor3 FROM cptb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec AND a.aplica_a = x.num_doc AND a.status_t IS NULL AND a.fecha_orig <= fecha_corte END IF IF valor3 IS NULL THEN LET valor3 = 0 END IF IF x.fecha_doc IS NULL THEN LET x.fecha_doc = 0 END IF LET dias = fecha_corte - x.fecha_doc IF dias < 31 THEN LET de1a30 = de1a30 + valor3 END IF IF dias >= 31 AND dias <= 60 THEN LET de31a45 = de31a45 + valor3 END IF IF dias >= 61 AND dias <= 90 THEN LET de46a60 = de46a60 + valor3 END IF IF dias > 90 AND dias <= 120 THEN LET masde60 = masde60 + valor3 END IF IF dias > 120 THEN LET mas120 = mas120 + valor3 END IF AFTER GROUP OF x.suplidor IF tm120 IS NULL THEN LET tm120 = 0 END IF IF t30 IS NULL THEN LET t30 = 0 END IF IF t45 IS NULL THEN LET t45 = 0 END IF IF t60 IS NULL THEN LET t60 = 0 END IF IF tm60 IS NULL THEN LET tm60 = 0 END IF IF tsaldo IS NULL THEN LET tsaldo = 0 END IF LET total_saldo = 0 LET total_saldo = de1a30 + de31a45 + de46a60 + masde60 + mas120 IF total_saldo <> 0 THEN LET t30 = t30 + de1a30 LET tm120 = tm120 + mas120 LET t45 = t45 + de31a45 LET t60 = t60 + de46a60 LET tm60 = tm60 + masde60 PRINT COLUMN 1, x.cod_sp using "&&", "-", x.cod_sp_sec using "&&&&", " ", x.nombre clipped, COLUMN 40, de1a30 using "(((,(((,(((.##)", COLUMN 61, de31a45 using "(((,(((,(((.##)", COLUMN 77, de46a60 using "(((,(((,(((.##)", COLUMN 93, masde60 using "(((,(((,(((.##)", COLUMN 109, mas120 using "(((,(((,(((.##)", COLUMN 125, total_saldo using "(((,(((,(((.##)" END IF LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET mas120 = 0 LET total_saldo = 0 ON LAST ROW SKIP 1 LINE LET tsaldo = t30 + t45 + t60 + tm60 + tm120 PRINT COLUMN 23, "Totales -->", COLUMN 41, t30 using "(((,(((,(((.##)", COLUMN 61, t45 using "(((,(((,(((.##)", COLUMN 77, t60 using "(((,(((,(((.##)", COLUMN 93, tm60 using "(((,(((,(((.##)", COLUMN 109, tm120 using "(((,(((,(((.##)", COLUMN 125, tsaldo using "(((,(((,(((.##)" PRINT COLUMN 23, "Porciento -->", COLUMN 41, (t30/tsaldo)*100 using "(((,(((,(((.##)", COLUMN 61, (t45/tsaldo)*100 using "(((,(((,(((.##)", COLUMN 77, (t60/tsaldo)*100 using "(((,(((,(((.##)", COLUMN 93, (tm60/tsaldo)*100 using "(((,(((,(((.##)", COLUMN 109, (tm120/tsaldo)*100 using "(((,(((,(((.##)" LET tot_gen2.total1 = t30 LET tot_gen2.total2 = t45 LET tot_gen2.total3 = t60 LET tot_gen2.total4 = tm60 LET tot_gen2.total6 = tm120 LET tot_gen2.total5 = tsaldo LET t30 = 0 LET t45 = 0 LET t60 = 0 LET tm60 = 0 LET tm120 = 0 LET tsaldo = 0 PRINT normal END REPORT