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

233 lines
7.3 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ISPRRP003
OBJETIVO : REPORTE DE MOVIMIENTOS
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Octubre 21, 1993
-------------------------------------------------------------------------------
}
GLOBALS "isprgb000.4gl"
FUNCTION isprrp003()
DEFINE idx_b SMALLINT
DEFINE salir CHAR(1)
DEFINE transacc RECORD
cod_n LIKE istb00002.cod_n,
cod_grupo LIKE istb00002.cod_grupo,
cod_tipo LIKE istb00002.cod_tipo,
cod_sec LIKE istb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fecha LIKE istb00006.fecha,
num_doc LIKE istb00006.num_doc,
cod_mov LIKE istb00006.cod_mov,
descrip_mov CHAR(30),
cantidad_2 LIKE istb00006.cantidad_2
END RECORD
DEFINE codigo_ant RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
DEFINE balances RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE istb00006.cantidad_2
END RECORD
DEFINE select_balan CHAR(1000)
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM isfmrp003 FROM "isfmrp003"
DISPLAY FORM isfmrp003
CALL pantalla()
DISPLAY "isprrp003" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Movimientos" AT 6,34 ATTRIBUTE(BLACK)
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*,archivo
IF int_flag != 0 THEN
let numero_msg = 2
CALL msg(numero_msg)
SLEEP 1
LET int_flag = 0
RETURN
END IF
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
AFTER INPUT
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
CLEAR SCREEN
RETURN
END IF
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM 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
LET select_balan =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ",
" b.unidad_med,a.fecha,a.num_doc,a.cod_mov,c.descrip_mov, ",
" a.cantidad_2 ",
"FROM istb00006 a,intb00001 b,istb00005 c ",
"WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
criterio clipped," AND a.cod_mov=c.cod_mov AND a.status_t IS NULL AND ",
" a.fecha BETWEEN ? AND ? "
DISPLAY "<< Buscando Informacion ... Espere Por Favor"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_balan FROM select_balan
DECLARE accion SCROLL CURSOR FOR busca_balan
OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi
START REPORT reporte3 TO archivo
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
WHILE STATUS != NOTFOUND
FETCH accion INTO transacc.*
IF status = notfound THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT WHILE
END IF
OUTPUT TO REPORT reporte3(transacc.*)
END WHILE
FINISH REPORT reporte3
RUN imprime
CLEAR SCREEN
END FUNCTION
REPORT reporte3(x)
DEFINE x RECORD
cod_n LIKE istb00002.cod_n,
cod_grupo LIKE istb00002.cod_grupo,
cod_tipo LIKE istb00002.cod_tipo,
cod_sec LIKE istb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fecha LIKE istb00006.fecha,
num_doc LIKE istb00006.num_doc,
cod_mov LIKE istb00006.cod_mov,
descrip_mov CHAR(30),
cantidad_2 LIKE istb00006.cantidad_2
END RECORD,
cantidad DECIMAL(12,2)
DEFINE nombre CHAR(8),
und CHAR(3) ,
primera, busca,imprime CHAR(1),
hora CHAR(5),
balance_in,balan_ini,canti,balance_rp DECIMAL(12,2),
entrada,salida DECIMAL(12,2)
OUTPUT
LEFT MARGIN 0
ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha,x.num_doc
FORMAT
PAGE HEADER
LET hora = time
PRINT letras.doce
PRINT COLUMN 1, "isprrp003",
COLUMN 22, "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 1,
COLUMN 25, "Sistema de Inventario de Suministros",
COLUMN 93, today using "dd/mm/yyyy"
PRINT COLUMN 34, "Movimientos",
COLUMN 96, hora
SKIP 2 LINES
PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 1, "Suministro",
COLUMN 64, "Entradas",
COLUMN 79, "Salidas",
COLUMN 93, "Balance"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
BEFORE GROUP OF x.cod_sec
LET balance_in = 0
SELECT SUM(a.cantidad_2) INTO balance_in FROM istb00006 a
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND
a.status_t IS NULL AND a.fecha < datos_cons.fech_in
IF balance_in is null THEN
LET balance_in = 0
END IF
LET canti = balance_in
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",x.descrip_esp,
#COLUMN 51, x.unidad_med
COLUMN 73, "Inicial ---> ",
COLUMN 89, balance_in using "---,---,---.##"
ON EVERY ROW
LET salida = null
LET entrada = null
IF x.cantidad_2 > 0 THEN
LET salida = null
LET entrada = x.cantidad_2
ELSE
LET salida = x.cantidad_2
LET entrada = null
END IF
LET canti = canti + x.cantidad_2
PRINT COLUMN 8, x.num_doc USING "&&&&&&"," ",x.fecha USING "dd/mm/yyyy",
COLUMN 24, "(",x.cod_mov using "&&",") ",x.descrip_mov CLIPPED,
COLUMN 59, entrada USING "---,---,---.##",
COLUMN 74, salida USING "---,---,---.##",
COLUMN 89, canti USING "---,---,---.##"
AFTER GROUP OF x.cod_sec
SKIP 1 LINE
END REPORT