Files
MBS/PROYECTO/nodir/noprcs008.4gl
T

184 lines
4.3 KiB
Plaintext

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