Files
MBS/PROYECTO/codir/coprmt004.4gl
T

514 lines
18 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRMT004
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Relacion Formas de Embarque
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Agosto 1997
DIRECTOR PROYECTO : J. ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
FUNCTION coprmt004()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmmt004 FROM "cofmmt004"
DISPLAY FORM cofmmt004
CALL pantalla()
DISPLAY "coprmt004" AT 4,3
DISPLAY "Formas de Embarque Productos " AT 6,24
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
CLEAR FORM
CALL copcad004()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
CALL copcmf004()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad004()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
LABEL vuelve:
INPUT BY NAME furgonart.*
## Verifica que el codigo no exista en el catalogo de furgones. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_embarque
IF furgonart.cod_embarque = 0 OR furgonart.cod_embarque IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_embarque
ELSE
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque AND status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 55
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
END IF
CALL integridad()
IF bandera = 1 THEN
RETURN
END IF
DISPLAY BY NAME embarques.descrip_emb
AFTER FIELD cod_furg
IF furgonart.cod_furg is not null THEN
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg AND status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 27
CALL msg(numero_msg)
NEXT FIELD cod_furg
END IF
DISPLAY BY NAME furgones.descrip_furg
END IF
CALL integridad()
IF bandera = 1 THEN
RETURN
END IF
AFTER FIELD cod_sec
IF ( furgonart.cod_n = 0 AND furgonart.cod_grupo =0 AND
furgonart.cod_tipo = 0 AND furgonart.cod_sec = 0 ) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
ELSE
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec AND status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 26
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med
SELECT * INTO furgonart.* FROM cotb00004
WHERE cod_furg = furgonart.cod_furg AND
cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec
IF STATUS != NOTFOUND THEN
IF furgonart.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
DISPLAY BY NAME furgonart.*
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
BEFORE FIELD cantidad
IF furgonart.cod_embarque = 2 THEN
EXIT INPUT
END IF
AFTER FIELD cantidad
IF furgonart.cantidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
AFTER FIELD fech_mod
EXIT INPUT
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# Valida que el codigo del articulo no sea cero. Si no es cero, adiciona el
# registro en la tabla, de lo contrario, presenta mensaje de error y acepta
# el codigo de nuevo.
IF ( furgonart.cod_n = 0 AND furgonart.cod_grupo =0 AND
furgonart.cod_tipo = 0 AND furgonart.cod_sec = 0 ) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
SELECT * FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec AND
status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 26
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
SELECT * INTO furgonart.* FROM cotb00004
WHERE cod_embarque = furgonart.cod_embarque AND
cod_furg = furgonart.cod_furg AND
cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec
IF STATUS != NOTFOUND THEN
IF furgonart.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
DISPLAY BY NAME furgonart.*
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
EXIT INPUT
END INPUT
INSERT INTO cotb00004
VALUES (furgonart.cod_embarque,furgonart.cod_furg,furgonart.cod_n,
furgonart.cod_grupo,furgonart.cod_tipo,furgonart.cod_sec,
furgonart.cantidad,null, USER, CURRENT, null, null)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET furgonart.cod_embarque = NULL
LET furgonart.cod_furg = NULL
INITIALIZE articulos.cod_n,articulos.cod_grupo,
articulos.cod_tipo,articulos.cod_sec TO NULL
LET furgonart.cantidad = NULL
GOTO vuelve
END FUNCTION
FUNCTION copcmf004()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00004.* FROM cotb00004.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE * FROM cotb00004 where ",
" status_t is null AND ",
criterio clipped,
" ORDER BY 1,2,3,4,5,6"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
FETCH FIRST datos INTO furgonart.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque AND
status_t is null
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg AND
status_t is null
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec AND
status_t is null
DISPLAY BY NAME furgonart.*,embarques.descrip_emb,
furgones.descrip_furg,articulos.descrip_esp,
articulos.unidad_med
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO furgonart.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque and
status_t is null
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg and
status_t is null
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec and
status_t is null
DISPLAY BY NAME furgonart.*,embarques.descrip_emb,
furgones.descrip_furg,articulos.descrip_esp,
articulos.unidad_med
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO furgonart.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque and status_t is null
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg and status_t is null
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n=furgonart.cod_n AND cod_grupo=furgonart.cod_grupo AND
cod_tipo=furgonart.cod_tipo AND cod_sec=furgonart.cod_sec and
status_t is null
DISPLAY BY NAME furgonart.*,embarques.cod_embarque,
furgones.descrip_furg,articulos.descrip_esp,
articulos.unidad_med
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO furgonart.*
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque and
status_t is null
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg and
status_t is null
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec and
status_t is null
DISPLAY BY NAME furgonart.*,embarques.cod_embarque,
furgones.descrip_furg,articulos.descrip_esp,
articulos.unidad_med
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO furgonart.*
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque and
status_t is null
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg and
status_t is null
SELECT * INTO articulos.* FROM intb00001
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec and
status_t is null
DISPLAY BY NAME furgonart.*,embarques.cod_embarque,
furgones.descrip_furg,articulos.descrip_esp,
articulos.unidad_med
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
INPUT BY NAME furgonart.cod_embarque,furgonart.cod_furg,
furgonart.cantidad,
furgonart.us_crea,furgonart.fech_crea,
furgonart.us_mod,furgonart.fech_mod
WITHOUT DEFAULTS
AFTER FIELD cod_embarque
IF furgonart.cod_embarque = 0 OR furgonart.cod_embarque IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_embarque
ELSE
SELECT * INTO embarques.* FROM cotb00027
WHERE cod_embarque = furgonart.cod_embarque AND status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 55
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
END IF
CALL integridad()
IF bandera = 1 THEN
RETURN
END IF
DISPLAY BY NAME embarques.descrip_emb
AFTER FIELD cod_furg
{ IF furgonart.cod_embarque = 1 THEN
IF furgonart.cod_furg IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_furg
END IF
ELSE}
IF furgonart.cod_furg is not null THEN
SELECT * INTO furgones.* FROM cotb00003
WHERE cod_furg = furgonart.cod_furg AND
status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 27
CALL msg(numero_msg)
NEXT FIELD cod_furg
END IF
DISPLAY BY NAME furgones.descrip_furg
END IF
#END IF
AFTER FIELD cantidad
IF furgonart.cantidad IS NULL OR furgonart.cantidad = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
## Verifica si el usuario presiono la tecla <Delete>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
INITIALIZE embarques.descrip_emb,furgones.descrip_furg,
articulos.descrip_esp,articulos.unidad_med TO NULL
IF furgonart.cod_embarque IS NULL OR furgonart.cod_embarque = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
UPDATE cotb00004 SET cod_embarque = furgonart.cod_embarque,
cod_furg = furgonart.cod_furg,
cantidad = furgonart.cantidad,
us_mod = USER,
fech_mod = CURRENT
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE cotb00004 SET status_t = "E"
WHERE cod_n = furgonart.cod_n AND
cod_grupo = furgonart.cod_grupo AND
cod_tipo = furgonart.cod_tipo AND
cod_sec = furgonart.cod_sec AND
cod_furg = furgonart.cod_furg AND
cod_embarque = furgonart.cod_embarque
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION