{ ============================================================================== PROGRAMA : NOPRCS008 OBJETIVO : CONSULTA LOS MOVIMIENTOS TOTALIZADOS POR ANO PROGRAMADOR : JUAN F. SOTO FECHA : MARZO 3, 1995 ============================================================================== } GLOBALS "noprgb000.4gl" DEFINE p_ano SMALLINT FUNCTION noprcs008() DEFINE datos RECORD cod_mov SMALLINT, descrip_mov CHAR(30), valor DECIMAL(12,2) END RECORD, opt7 CHAR(1),ch_fecha CHAR(8),ch_ano CHAR(4), fecha1,fecha2 DATE DEFINE datos_arr ARRAY[100] OF RECORD cod_mov SMALLINT, descrip_mov CHAR(30), valor DECIMAL(12,2) END RECORD OPTIONS ERROR LINE 24, FORM LINE 8 LET int_flag = false OPEN FORM nofmcs008 FROM "nofmcs008" DISPLAY FORM nofmcs008 CALL pantalla() DISPLAY "noprcs008" AT 4,3 DISPLAY "Movimientos Acumulado Por Ano" AT 6,25 DISPLAY " " AT 22,1 INPUT BY NAME p_ano AFTER FIELD p_ano IF p_ano is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT LET ch_ano = p_ano using "####" LET ch_ano = ch_ano[3,4] clipped LET ch_fecha = "0101",ch_ano clipped LET fecha1 = ch_fecha LET ch_fecha = "3112",ch_ano clipped LET fecha2 = ch_fecha IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DISPLAY "En Proceso... Espere" AT 22,1 IF p_ano != year(today) THEN LET selec = "SELECT a.cod_mov,b.descrip_mov,SUM(a.valor) ", "FROM notb00016 a,notb00002 b ", "WHERE (a.cod_mov = b.cod_mov and YEAR(a.fecha) = ?) ", "GROUP BY 1,2 ORDER BY 1 " ELSE LET selec = "SELECT a.cod_mov,b.descrip_mov,SUM(a.valor) ", "FROM notb00008 a,notb00002 b ", "WHERE (a.cod_mov = b.cod_mov and YEAR(a.fecha) = ? ) ", "GROUP BY 1,2 ORDER BY 1 " END IF PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING p_ano START REPORT imp_nomi TO "nocs08" LET idx = 1 WHILE STATUS != NOTFOUND FETCH busca INTO datos.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF datos.valor < 0 THEN LET datos.valor = datos.valor * -1 END IF IF datos.valor > 0 THEN OUTPUT TO REPORT imp_nomi(datos.*) LET datos_arr[idx].cod_mov = datos.cod_mov LET datos_arr[idx].descrip_mov = datos.descrip_mov LET datos_arr[idx].valor = datos.valor LET idx = idx + 1 END IF END WHILE FINISH REPORT imp_nomi DISPLAY " " AT 22,1 CALL set_count(idx -1) DISPLAY ARRAY datos_arr TO s_datos.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF PROMPT "DESEA IMPRIMIR REPORTE (S/N) " FOR opt7 LET opt7 = upshift(opt7) IF opt7 = "S" THEN RUN "$DBPRINT $HOME/nocs08" END IF END FUNCTION REPORT imp_nomi(x) DEFINE x RECORD cod_mov SMALLINT, descrip_mov CHAR(30), valor DECIMAL(12,2) END RECORD OUTPUT LEFT MARGIN 0 FORMAT PAGE HEADER PRINT COLUMN 1, "noprcs008", COLUMN 20, "R A Y .O. V A C D O M I N I C A N A, S. A.", COLUMN 70, "Pag. ",pageno USING "###" PRINT COLUMN 25, "SISTEMA DE NOMINA DE PAGO", COLUMN 70, today using "dd/mm/yy" PRINT COLUMN 26, "MOVIMIENTOS TOTALIZADOS", COLUMN 70, TIME SKIP 1 LINE PRINT "ANO: ",p_ano PRINT "===========================================================================", "===" PRINT COLUMN 1,"CODIGO", COLUMN 11, "DESCRIPCION", COLUMN 58, "VALOR" PRINT COLUMN 58, "ACUMULADO" PRINT "===========================================================================", "===" SKIP 1 LINE ON EVERY ROW PRINT COLUMN 1, x.cod_mov using "&&&", COLUMN 11, x.descrip_mov, COLUMN 50, x.valor using "##,###,###.##" ON LAST ROW PRINT PRINT "Total Registros==> ",count(*) using "###" END REPORT