Files
DECOMARMOL/PROYECTOS COSTOS/irdir/irprrp029.4gl
T
2026-09-22 20:38:51 -04:00

271 lines
8.5 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
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 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,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