Files
DECOMARMOL/PROYECTOS/irdir/irprmt002.old
T
2026-09-22 20:38:51 -04:00

401 lines
15 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IRPRMT002
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Maestra Repuestos.
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Febrero 15, 1992.
------------------------------------------------------------------
MODIFICADO POR : ING. JOSE ALFREDO PAULINO
OBJETIVO : PARA ELIMINAR EN LA IRTB00002 Y IRTB00016
FECHA : 18 DE MARZO DEL 1997
------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE exist_act,cantidad DECIMAL(12,2)
DEFINE user1 CHAR(9)
DEFINE fech1 DATETIME YEAR TO MINUTE
FUNCTION irprmt002()
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmmt002 FROM "irfmmt002"
DISPLAY FORM irfmmt002
CALL pantalla()
DISPLAY "irprmt002" AT 4,3
DISPLAY "Maestra de Repuestos" at 6,30
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
CLEAR FORM
LET INT_FLAG = FALSE
CALL irpcad002()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
LET INT_FLAG = FALSE
CALL irpcmf002()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad002()
DEFINE fech_ant CHAR(8)
## Captura los datos que va a contener el registro
INPUT BY NAME m_articulos.cod_n THRU m_articulos.cod_sec,descrip_esp,
descrip_ing,medida,m_articulos.existencia THRU
m_articulos.fech_mod
## Verifica que el codigo no exista en el catalogo de m_articulos. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_sec
IF (m_articulos.cod_n = 0 AND m_articulos.cod_grupo = 0 AND
m_articulos.cod_tipo = 0 AND m_articulos.cod_sec = 0 ) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
SELECT i.* INTO articulos.* FROM irtb00002 i
WHERE i.cod_n = m_articulos.cod_n AND
i.cod_grupo = m_articulos.cod_grupo AND
i.cod_tipo = m_articulos.cod_tipo AND
i.cod_sec = m_articulos.cod_sec
IF status != NOTFOUND THEN
IF articulos.status_t IS NOT NULL THEN
LET numero_msg = 39
CALL msg(numero_msg)
DISPLAY BY NAME articulos.descrip_esp,
articulos.status_t THRU articulos.fech_mod
END IF
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
AFTER FIELD existencia
IF m_articulos.existencia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD existencia
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF m_articulos.cod_n = 5 THEN
SELECT unique cod_n FROM irtb00006
WHERE cod_n = m_articulos.cod_n and
cod_grupo = m_articulos.cod_grupo and
cod_tipo = m_articulos.cod_tipo and
cod_sec = m_articulos.cod_sec and
cod_mov = 99 and status_t is null
IF status = notfound THEN
LET datos_gen.num_doc = 0
SELECT MAX(a.num_doc) INTO datos_gen.num_doc FROM irtb00006 a
WHERE a.status_t IS NULL AND a.cod_mov = 99
IF datos_gen.num_doc IS NULL THEN
LET datos_gen.num_doc = 0
END IF
LET datos_gen.num_doc = datos_gen.num_doc + 1
INSERT INTO irtb00006
VALUES (1,today,null,null,null,null,null,null,99,null,
m_articulos.cod_n,m_articulos.cod_grupo,
m_articulos.cod_tipo,m_articulos.cod_sec,null,
m_articulos.existencia,null,null,null,null,
user,current,null,null)
END IF
END IF
INSERT INTO irtb00002
VALUES (m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo,
m_articulos.cod_sec,descrip_esp,descrip_ing,medida,NULL,USER,
CURRENT,NULL,NULL)
IF m_articulos.cod_n = 5 THEN
INSERT INTO irtb00002 VALUES (m_articulos.cod_n,m_articulos.cod_grupo,
m_articulos.cod_tipo,m_articulos.cod_sec, m_articulos.existencia,
m_articulos.exist_min,m_articulos.dia_llegada,
m_articulos.categoria, null,user,current,null,null)
IF m_articulos.categoria IS NOT NULL THEN
INSERT INTO irtb00016
VALUES (m_articulos.cod_n,m_articulos.cod_grupo,
m_articulos.cod_tipo,m_articulos.cod_sec,
m_articulos.categoria,TODAY,null,user,current,null,null)
END IF
END IF
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END FUNCTION
FUNCTION irpcmf002()
CLEAR FORM
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.descrip_esp,a.descrip_ing
FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp,
descrip_ing
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" b.existencia,b.exist_min,b.dia_llegada,b.categoria, ",
" a.status_t,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod, ",
" a.descrip_esp,a.descrip_ing,a.unidad_med ",
"FROM irtb00002 a, OUTER irtb00002 b ",
"WHERE a.cod_n IN (5,8) AND 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 a.status_t is null and ",
criterio clipped," ORDER BY 1,2,3,4 "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO m_articulos.*,descrip_esp,descrip_ing,medida
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL art_existe()
DISPLAY BY NAME m_articulos.*,descrip_esp,descrip_ing,medida
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO m_articulos.*,descrip_esp,descrip_ing,medida
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL art_existe()
DISPLAY BY NAME m_articulos.*,descrip_esp,descrip_ing,medida
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO m_articulos.*,descrip_esp,descrip_ing,medida
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL art_existe()
DISPLAY BY NAME m_articulos.*,descrip_esp,descrip_ing,medida
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO m_articulos.*,descrip_esp,descrip_ing,medida
CALL art_existe()
DISPLAY BY NAME m_articulos.*,descrip_esp,descrip_ing,medida
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
LET user1 = m_articulos.us_crea
LET fech1 = m_articulos.fech_crea
INPUT BY NAME descrip_esp,descrip_ing,medida,m_articulos.* WITHOUT DEFAULTS
BEFORE FIELD cod_n
NEXT FIELD existencia
AFTER FIELD existencia
IF m_articulos.existencia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD existencia
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE irtb00002 SET (descrip_esp,descrip_ing,unidad_med,us_mod,fech_mod) =
(descrip_esp,descrip_ing,medida,USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec
IF m_articulos.cod_n = 5 THEN
DELETE FROM irtb00002
WHERE @cod_n=m_articulos.cod_n AND @cod_grupo=m_articulos.cod_grupo AND
@cod_tipo=m_articulos.cod_tipo AND @cod_sec=m_articulos.cod_sec
INSERT INTO irtb00002
VALUES (m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo,
m_articulos.cod_sec, m_articulos.existencia,m_articulos.exist_min,
m_articulos.dia_llegada,m_articulos.categoria,null,
m_articulos.us_crea,m_articulos.fech_crea,USER,CURRENT)
IF m_articulos.existencia is null THEN
LET m_articulos.existencia = 0
END IF
SELECT a.* FROM irtb00006 a
WHERE a.cod_n=m_articulos.cod_n and
a.cod_grupo=m_articulos.cod_grupo and
a.cod_tipo=m_articulos.cod_tipo and
a.cod_sec=m_articulos.cod_sec and
a.cod_mov = 99 and status_t is null
IF STATUS = NOTFOUND THEN
INSERT INTO irtb00006
VALUES (1,today,null,null,null,null,null,null,99,null,
m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo,
m_articulos.cod_sec,null,m_articulos.existencia,null,null,null,
null,user1,fech1,user,current)
ELSE
UPDATE irtb00006 SET (cantidad_2,us_mod,fech_mod) =
(m_articulos.existencia,USER,CURRENT)
WHERE @cod_n=m_articulos.cod_n and @cod_grupo=m_articulos.cod_grupo and
@cod_tipo=m_articulos.cod_tipo and @cod_sec=m_articulos.cod_sec
and @cod_mov = 99 and status_t is null
END IF
SELECT a.* FROM irtb00016 a
WHERE a.cod_n=m_articulos.cod_n and a.cod_grupo=m_articulos.cod_grupo and
a.cod_tipo=m_articulos.cod_tipo and a.cod_sec=m_articulos.cod_sec
IF STATUS = NOTFOUND THEN
IF m_articulos.categoria IS NOT NULL THEN
INSERT INTO irtb00016
VALUES(m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo,
m_articulos.cod_sec,m_articulos.categoria,TODAY,null,user,
current,null,null)
END IF
ELSE
IF m_articulos.categoria IS NOT NULL THEN
UPDATE irtb00016 SET categoria = m_articulos.categoria,
us_mod = USER,
fech_mod = CURRENT
WHERE @cod_n = m_articulos.cod_n AND
@cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND
@cod_sec = m_articulos.cod_sec
ELSE
DELETE FROM irtb00016
WHERE @cod_n = m_articulos.cod_n AND
@cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND
@cod_sec = m_articulos.cod_sec
END IF
END IF
END IF
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
UPDATE irtb00002 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND
@cod_tipo=m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec
UPDATE irtb00002 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND
@cod_tipo=m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec
UPDATE irtb00016 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND
@cod_tipo=m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec
IF m_articulos.cod_n = 5 THEN
LET exist_act = 0
SELECT SUM(a.cantidad_2) INTO exist_act FROM irtb00006 a
WHERE a.cod_n = m_articulos.cod_n AND
a.cod_grupo = m_articulos.cod_grupo AND
a.cod_tipo = m_articulos.cod_tipo AND
a.cod_sec = m_articulos.cod_sec AND
a.status_t IS NULL
IF exist_act IS NULL THEN
LET exist_act = 0
END IF
IF exist_act = 0 THEN
UPDATE irtb00002 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND
@cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND
@cod_sec = m_articulos.cod_sec
UPDATE irtb00016 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND
@cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND
@cod_sec = m_articulos.cod_sec
UPDATE irtb00006 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @cod_n = m_articulos.cod_n AND
@cod_grupo = m_articulos.cod_grupo AND
@cod_tipo = m_articulos.cod_tipo AND
@cod_sec = m_articulos.cod_sec AND
@cod_mov = 99
LET numero_msg = 39
CALL msg(numero_msg)
END IF
ELSE
LET numero_msg = 232
CALL msg(numero_msg)
END IF
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION art_existe()
SELECT cantidad_2 INTO m_articulos.existencia
FROM irtb00006
WHERE cod_n = m_articulos.cod_n and
cod_grupo = m_articulos.cod_grupo and
cod_tipo = m_articulos.cod_tipo and
cod_sec = m_articulos.cod_sec and
cod_mov = 99 and
status_t IS NULL
END FUNCTION