363 lines
11 KiB
Plaintext
363 lines
11 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : NOPRMT001
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Maestra de Codigos de Movimientos
|
|
PROGRAMADOR : Ing. Betania Guerrero Perez
|
|
FECHA REALIZACION : Agosto 19, 1993
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "noprgb000.4gl"
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
CALL noprmt001()
|
|
END MAIN
|
|
|
|
FUNCTION noprmt001()
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
|
|
OPEN FORM nofmmt001 FROM "nofmmt001"
|
|
DISPLAY FORM nofmmt001
|
|
#CALL pantalla()
|
|
#DISPLAY "noprmt001" AT 4,3
|
|
#DISPLAY "Maestra de Movimientos" AT 6,29
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
|
|
let int_flag = false
|
|
CLEAR FORM
|
|
CALL nopcad001()
|
|
ON ACTION buscar
|
|
|
|
let int_flag = false
|
|
CALL nopcmf001()
|
|
ON ACTION Salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcad001()
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
## Captura los datos que va a contener el registro
|
|
|
|
INPUT BY NAME mov_nomi.*
|
|
|
|
## Verifica que el codigo no exista en el catalogo de movimientos. Si existe,
|
|
## entonces despliega los datos del registro existente.
|
|
|
|
AFTER FIELD cod_mov
|
|
IF mov_nomi.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
ELSE
|
|
SELECT * INTO mov_nomi.* FROM notb00002
|
|
WHERE cod_mov = mov_nomi.cod_mov
|
|
|
|
IF status >= 0 THEN
|
|
IF status != NOTFOUND THEN
|
|
IF mov_nomi.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
DISPLAY BY NAME mov_nomi.*
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
INITIALIZE mov_nomi.* TO NULL
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD descrip_mov
|
|
IF mov_nomi.descrip_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descrip_mov
|
|
END IF
|
|
|
|
AFTER FIELD primer_enc
|
|
IF mov_nomi.primer_enc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD primer_enc
|
|
END IF
|
|
|
|
|
|
AFTER FIELD clase_mov
|
|
IF mov_nomi.clase_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD clase_mov
|
|
END IF
|
|
|
|
BEFORE FIELD cantidad_emp
|
|
IF mov_nomi.tipo_mov = "V" THEN
|
|
LET mov_nomi.cantidad_emp = 0
|
|
END IF
|
|
|
|
{ AFTER FIELD cta_control
|
|
IF mov_nomi.clase_mov = "D" THEN
|
|
IF mov_nomi.cta_control IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cta_control
|
|
END IF
|
|
END IF}
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
IF mov_nomi.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
ELSE
|
|
INSERT INTO notb00002 VALUES (mov_nomi.cod_mov,mov_nomi.descrip_mov,
|
|
mov_nomi.primer_enc,mov_nomi.segundo_enc,
|
|
mov_nomi.tercer_enc,mov_nomi.ch_encabeza,
|
|
mov_nomi.tipo_mov,
|
|
mov_nomi.clase_mov,mov_nomi.afecta_tss,mov_nomi.cantidad_cia,
|
|
mov_nomi.cantidad_emp,mov_nomi.cta_control,
|
|
mov_nomi.cta_aux,null,SUSER_SNAME(),GETDATE(),
|
|
null,null,mov_nomi.modifica,mov_nomi.vacaciones)
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
INITIALIZE mov_nomi.* TO NULL
|
|
NEXT FIELD cod_mov
|
|
|
|
END IF
|
|
|
|
AFTER FIELD fech_mod
|
|
EXIT INPUT
|
|
END INPUT
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcmf001()
|
|
## Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
CONSTRUCT BY NAME criterio ON notb00002.*
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC = " SELECT UNIQUE * FROM notb00002 where ",
|
|
" status_t is null and ",
|
|
criterio clipped,
|
|
" ORDER BY cod_mov "
|
|
|
|
PREPARE busca FROM selec
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO mov_nomi.*
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME mov_nomi.*
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO mov_nomi.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME mov_nomi.*
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO mov_nomi.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
DISPLAY BY NAME mov_nomi.*
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO mov_nomi.*
|
|
|
|
DISPLAY BY NAME mov_nomi.*
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO mov_nomi.*
|
|
|
|
DISPLAY BY NAME mov_nomi.*
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <CTRL-C> Cancela Operacion"
|
|
IF mov_nomi.status_t = "E" THEN
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
INPUT BY NAME mov_nomi.descrip_mov,
|
|
mov_nomi.primer_enc,
|
|
mov_nomi.segundo_enc,
|
|
mov_nomi.tercer_enc,
|
|
mov_nomi.ch_encabeza,
|
|
mov_nomi.tipo_mov,
|
|
mov_nomi.clase_mov,
|
|
mov_nomi.afecta_tss,
|
|
mov_nomi.cantidad_cia,
|
|
mov_nomi.cantidad_emp,
|
|
mov_nomi.cta_control,
|
|
mov_nomi.cta_aux,
|
|
mov_nomi.us_crea,
|
|
mov_nomi.fech_crea,
|
|
mov_nomi.us_mod,
|
|
mov_nomi.fech_mod,mov_nomi.modifica,
|
|
mov_nomi.vacaciones WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD descrip_mov
|
|
IF mov_nomi.descrip_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descrip_mov
|
|
END IF
|
|
|
|
AFTER FIELD primer_enc
|
|
IF mov_nomi.primer_enc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD primer_enc
|
|
END IF
|
|
|
|
AFTER FIELD clase_mov
|
|
IF mov_nomi.clase_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD clase_mov
|
|
END IF
|
|
|
|
AFTER FIELD cta_control
|
|
IF mov_nomi.clase_mov = "D" THEN
|
|
IF mov_nomi.cta_control IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cta_control
|
|
END IF
|
|
END IF
|
|
|
|
#### Verifica si el usuario presiono la tecla <CTRL-C>
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
|
|
UPDATE notb00002 SET descrip_mov = mov_nomi.descrip_mov,
|
|
primer_enc = mov_nomi.primer_enc,
|
|
segundo_enc = mov_nomi.segundo_enc,
|
|
tercer_enc = mov_nomi.tercer_enc,
|
|
ch_encabeza = mov_nomi.ch_encabeza,
|
|
tipo_mov = mov_nomi.tipo_mov,
|
|
clase_mov = mov_nomi.clase_mov,
|
|
cantidad_cia = mov_nomi.cantidad_cia,
|
|
afecta_tss = mov_nomi.afecta_tss,
|
|
cantidad_emp = mov_nomi.cantidad_emp,
|
|
cta_control = mov_nomi.cta_control,
|
|
cta_aux = mov_nomi.cta_aux,
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE(),
|
|
modifica = mov_nomi.modifica,
|
|
vacaciones = mov_nomi.vacaciones
|
|
WHERE cod_mov = mov_nomi.cod_mov
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
LET opt = fgl_winquestion("ELIMINAR","DESEA ELIMINAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0)
|
|
IF opt = "YES" THEN
|
|
UPDATE notb00002 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE cod_mov = mov_nomi.cod_mov
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
COMMAND "Retornar"
|
|
"Retorna al menu anterior"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|