Files
MBS/PROYECTOS/irdir/irprrp029.4gl
T

277 lines
9.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP029
OBJETIVO : REPUESTOS CON EXISTENCIA MINIMA
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Mayo 27, 1996
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE minima LIKE irtb00002.exist_min,
impresion CHAR(1)
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp029()
END MAIN
FUNCTION irprrp029()
### Variable de los datos del reporte
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
unidad_med LIKE intb00001.unidad_med,
existencia LIKE irtb00002.existencia
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp28 FROM "irfmrp006"
DISPLAY FORM irfmrp28
-- CALL pantalla()
DISPLAY "irprrp029" AT 4,3
DISPLAY "Repuestos Con Existencia Minima" AT 6,22
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
LET pflag = "N"
INPUT BY NAME decide
ON KEY(F3)
DISPLAY "MODO PANTALLA..." AT 18,14 ATTRIBUTE(RED)
LET pflag = "S"
AFTER FIELD decide
IF decide IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD decide
END IF
END INPUT
CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
ON KEY(F3)
DISPLAY "MODO PANTALLA..." AT 18,14 ATTRIBUTE(RED)
LET pflag = "S"
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
### Proceso Para Cancelar Reportes
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## Buscando Informacion Dependiendo del tipo deseado
IF decide = "A" THEN
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp[1,30],b.descrip_ing[1,30],b.unidad_med, ",
" SUM(a.cantidad_2) ",
"FROM irtb00002 b,irtb00006 a ",
"WHERE (b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND ",
" b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec) AND ",
criterio clipped," and (a.status_t IS NULL) AND (b.status_t IS NULL) ",
"GROUP BY 1,2,3,4,5,6,7 ORDER BY 3,5 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
ELSE
LET SELEC =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp,b.descrip_ing,b.unidad_med, ",
" SUM(a.cantidad_2) ",
"FROM irtb00002 b,irtb00006 a ",
"WHERE (b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND ",
" b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec) AND ",
criterio clipped," and (a.status_t IS NULL) AND (b.status_t IS NULL) ",
"GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.descrip_esp,b.descrip_ing,b.unidad_med
ORDER BY 3,1,2,4 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
END IF
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion
LET selec1 = "SELECT COUNT(*) FROM intb00001 b ",
"WHERE ",criterio clipped, " and b.cod_n in (5) "
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1
START REPORT reporte_29 TO "C:\\archivo"
DISPLAY "<< Reporte Generandose... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
FETCH busca1 INTO regi
DISPLAY " " AT 17,14
LET p_param = "S"
WHILE status != notfound
FETCH accion INTO materia.*
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
CALL termometro(regi,p_param)
LET p_param = "N"
SELECT a.exist_min INTO minima
FROM irtb00002 a
WHERE (a.cod_n = materia.cod_n AND
a.cod_grupo = materia.cod_grupo AND
a.cod_tipo = materia.cod_tipo AND
a.cod_sec = materia.cod_sec) AND
a.status_t is null
# IF materia.existencia <= minima THEN
OUTPUT TO REPORT reporte_29(materia.*)
# END IF
END WHILE
FINISH REPORT reporte_29
CLEAR SCREEN
IF pflag = "N" THEN
RUN "type C:\\archivo > %USPRINT%"
ELSE
RUN "pantalla C:\\archivo"
END IF
END FUNCTION
REPORT reporte_29(x)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
unidad_med LIKE intb00001.unidad_med,
existencia LIKE irtb00002.existencia
END RECORD,
l SMALLINT,
varia CHAR(20),
nombre1,descripcion CHAR(60),
primera CHAR(1),
doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
normal,doce CHAR(2),
hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
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
IF decide = "N" THEN
LET varia = "N u m e r i c o"
ELSE
LET varia = "A l f a b e t i c o"
END IF
LET l = (95 - LENGTH(varia))/2
PRINT COLUMN 1, doce ,negrillas_on
PRINT COLUMN 1, "irprrp029",
COLUMN 25, " E U R O S T O N E, S. A.",
COLUMN 93, "Pag. ",PAGENO USING "###"
PRINT COLUMN 25, " Sistema de Inventario de Repuestos ",
COLUMN 93, TODAY USING "dd/mm/yy"
PRINT COLUMN 25, " Repuestos Con Existencia Minima",
COLUMN 96, hora
PRINT COLUMN l, varia clipped
PRINT COLUMN 1, "Fecha de Corte: ", TODAY USING "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 90, "Existencia"
PRINT COLUMN 1, "Codigo",
COLUMN 12, "Descripcion Espanol",
COLUMN 45, "Descripcion Ingles",
COLUMN 75, "Unidad",
COLUMN 83, "Exist.",
COLUMN 90, "Minima"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.cod_tipo
LET nombre1 = " "
### Buscandoi el nombre de la maquina a que pertenece el repuesto
SELECT a.nombre INTO nombre1 FROM irtb00010 a
WHERE a.status_t IS NULL AND a.codigo = x.cod_tipo
IF nombre1 IS NULL OR nombre1 = " " THEN
LET nombre1 = "MAQUINA NO EXISTE"
END IF
PRINT COLUMN 1, negrillas_on,nombre1 CLIPPED,negrillas_off
ON EVERY ROW
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
COLUMN 12, x.descrip_esp CLIPPED,
COLUMN 45, x.descrip_ing CLIPPED,
COLUMN 77, x.unidad_med CLIPPED,
COLUMN 81, x.existencia USING "#,##&.&&",
COLUMN 91, minima USING "#,##&.&&"
AFTER GROUP OF x.cod_tipo
SKIP 1 LINE
PRINT COLUMN 3, "Total del grupo = ",GROUP count(*) USING "####"
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 3, "Total de Registros Impresos = ", count(*) USING "####"
PRINT COLUMN 1, "====================================================",
"================================================="
PRINT normal
END REPORT