Files
MBS/PROYECTOS/isdir/isprrp010.4gl
T

271 lines
8.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ISPRRP010
OBJETIVO : Acumulado por Tipo de Movimiento
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Octubre 21, 1993
-------------------------------------------------------------------------------
}
GLOBALS "isprgb000.4gl"
FUNCTION isprrp010()
DEFINE salir CHAR(1)
DEFINE select_ac,select_ant,select_p CHAR(1000)
DEFINE idx_ac,ano,idx_a,idx_c SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE fecha_ini_per CHAR(8)
DEFINE acumulado_a RECORD
cod_mov LIKE istb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE istb00006.cantidad_2
END RECORD
DEFINE acumulado_ac RECORD
cod_mov LIKE istb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE istb00006.cantidad_2
END RECORD
DEFINE acumulado_m RECORD
cod_mov LIKE istb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE istb00006.cantidad_2
END RECORD
DEFINE acumulado RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
base LIKE intb00002.base,
cod_mov LIKE istb00006.cod_mov,
fecha DATE,
consumo DECIMAL(10,2)
END RECORD
WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM isfmrp010 FROM "isfmrp010"
DISPLAY FORM isfmrp010
CALL pantalla()
DISPLAY "isprrp010" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Acumulado por Tipo de Movimiento" AT 6,24 ATTRIBUTE(BLACK)
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
AFTER FIELD fech_in
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
LET ano_act = year(datos_cons.fech_fi) USING "&&&&"
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
FROM cod_mov,cod_n,cod_grupo, cod_tipo,cod_sec
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET ano = year(datos_cons.fech_fi)
LET ano = ano - 1
LET c_ano = ano USING "&&&&"
LET select_ac =
"SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,b.descrip_esp, ",
" b.unidad_med,a.base,c.cod_mov,c.fecha,c.cantidad_2 ",
"FROM istb00006 c,istb00002 a,intb00001 b ",
"WHERE c.cod_n = b.cod_n AND c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND c.cod_sec = b.cod_sec AND ",
" c.cod_n = a.cod_n AND c.cod_grupo = a.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND c.cod_sec = a.cod_sec AND ",
criterio clipped," AND c.fecha <= ? AND c.cod_mov != 99 AND ",
" c.status_t is null "
DISPLAY "<< Buscando Informacion ... Espere Por Favor " AT 19,14
PREPARE busca_act FROM select_ac
DECLARE actual CURSOR FOR busca_act
OPEN actual USING datos_cons.fech_fi
DISPLAY " " AT 19,14
START REPORT clase TO archivo
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
FOREACH actual INTO acumulado.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF acumulado.consumo IS NULL THEN
LET acumulado.consumo = 0
END IF
IF acumulado.base IS NULL THEN
LET acumulado.base = 1
END IF
OUTPUT TO REPORT clase(acumulado.*,c_ano)
END FOREACH
FINISH REPORT clase
RUN imprime
CLEAR SCREEN
END FUNCTION
REPORT clase(x,c_ano1)
DEFINE x RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
base LIKE intb00002.base,
cod_mov LIKE istb00006.cod_mov,
fecha DATE,
consumo DECIMAL(10,2)
END RECORD
DEFINE descrip_mov CHAR(30)
DEFINE c_ano1 char(4)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.cod_mov,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha
FORMAT
PAGE HEADER
LET hora = time
PRINT letras.doce
PRINT COLUMN 2, "isprrp010",
COLUMN 28, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 93, "Pag. ",
COLUMN 98, pageno using "###"
PRINT COLUMN 33, "Sistema de Inventario de Suministro",
COLUMN 93, today using "dd/mm/yyyy"
PRINT COLUMN 35, "Acumulado por Tipo de Movimiento",
COLUMN 96, hora
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 65, "Acumulado",
COLUMN 79, "Acumulado Ano",
COLUMN 93, "Porciento de"
PRINT COLUMN 1, "Suministros",
COLUMN 50, "Periodo",
COLUMN 65, "Al ",datos_cons.fech_fi using "dd/mm/yyyy",
COLUMN 79, "Anterior ",c_ano1,
COLUMN 93, "Variacion"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
BEFORE GROUP OF x.cod_mov
SELECT a.descrip_mov INTO descrip_mov FROM istb00005 a
WHERE a.cod_mov = x.cod_mov
PRINT COLUMN 1, "Movimiento",
COLUMN 13, x.cod_mov using "<<",
COLUMN 17, "Descripcion",
COLUMN 30, descrip_mov
skip 1 line
# ON EVERY ROW
AFTER GROUP OF x.cod_sec
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",x.descrip_esp," ",x.unidad_med CLIPPED,
COLUMN 47, GROUP SUM(x.consumo/x.base)
WHERE x.fecha >= datos_cons.fech_in AND
x.fecha <= datos_cons.fech_fi
USING "##,###,###.##",
COLUMN 61, GROUP SUM(x.consumo/x.base) USING "##,###,###.##",
COLUMN 75, GROUP SUM(x.consumo/x.base)
WHERE YEAR(x.fecha) = (c_ano1) USING "##,###,###.##",
COLUMN 89, ((GROUP SUM(x.consumo/x.base)
WHERE x.fecha >= datos_cons.fech_in AND
x.fecha <= datos_cons.fech_fi)/
(GROUP SUM(x.consumo/x.base)
WHERE YEAR(x.fecha) = (c_ano1))-1)*100
USING "#,###.##"," %"
AFTER GROUP OF x.cod_mov
SKIP TO TOP OF PAGE
ON LAST ROW
SKIP 2 LINES
PRINT COLUMN 1, "==================================================",
"==================================================",
"==============================="
PRINT COLUMN 4, "Total Registros Impresos =", count(*) USING "<<<<"
PRINT COLUMN 4, ASCII 27, ASCII 80
END REPORT