453 lines
14 KiB
Plaintext
453 lines
14 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"
|
|
DEFINE arrmovimientos DYNAMIC ARRAY OF RECORD
|
|
codmov1 INT,
|
|
descripmov1 VARCHAR(100),
|
|
tipomov1 VARCHAR(50),
|
|
clasificacion VARCHAR(50),
|
|
afectatss1,modificanovedad1,afectavacacion1 VARCHAR(3)
|
|
END RECORD
|
|
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
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
DISPLAY ARRAY arrmovimientos TO smovimientos.*
|
|
BEFORE DISPLAY
|
|
-- CALL DIALOG.setActionActive( "Ok", FALSE )
|
|
-- CALL DIALOG.setActionActive( "insert", FALSE )
|
|
-- CALL DIALOG.setActionActive( "delete", FALSE )
|
|
CALL buscamovimientos()
|
|
ON ACTION nuevo ATTRIBUTE(TEXT="Nuevo Movimiento",IMAGE="new")
|
|
CALL nopcad001()
|
|
ON ACTION modificar ATTRIBUTE(TEXT="Modificar",IMAGE="fa-cloud-upload")
|
|
LET mov_nomi.cod_mov = arrmovimientos[arr_curr()].codmov1
|
|
CALL buscaData()
|
|
CALL nopcmf001()
|
|
CALL buscamovimientos()
|
|
|
|
ON ACTION salir ATTRIBUTE(TEXT="Salir", IMAGE="quit")
|
|
RETURN
|
|
END DISPLAY
|
|
END DIALOG
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcad001()
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
## Captura los datos que va a contener el registro
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
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.
|
|
BEFORE INPUT
|
|
|
|
CALL buscaMaximo()
|
|
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}
|
|
|
|
ON ACTION guardar ATTRIBUTE(TEXT='Salvar', IMAGE='save')
|
|
|
|
IF mov_nomi.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
ELSE
|
|
CALL buscaMaximo()
|
|
IF mov_nomi.descrip_mov IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD descrip_mov
|
|
END IF
|
|
IF mov_nomi.tipo_mov IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_mov
|
|
END IF
|
|
|
|
IF mov_nomi.cta_aux IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cta_aux
|
|
END IF
|
|
IF mov_nomi.clase_mov IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD clase_mov
|
|
END IF
|
|
IF mov_nomi.cod_mov IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
|
|
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
|
|
|
|
ON ACTION CANCEL
|
|
RETURN
|
|
END INPUT
|
|
END DIALOG
|
|
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
|
|
|
|
FUNCTION buscamovimientos()
|
|
|
|
DECLARE buscaInformacion CURSOR FOR
|
|
SELECT a.cod_mov,a.descrip_mov,a.tipo_mov,a.clase_mov,a.afecta_tss,a.modifica,a.vacaciones
|
|
FROM notb00002 a
|
|
WHERE a.status_t IS NULL
|
|
ORDER BY a.cod_mov
|
|
|
|
LET idx =1
|
|
FOREACH buscaInformacion INTO arrmovimientos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
FUNCTION buscaMaximo()
|
|
SELECT isnull(MAX(cod_mov),0) INTO mov_nomi.cod_mov FROM notb00002
|
|
|
|
LET mov_nomi.cod_mov =mov_nomi.cod_mov + 1
|
|
|
|
DISPLAY BY NAME mov_nomi.cod_mov
|
|
END FUNCTION
|
|
FUNCTION buscaData()
|
|
|
|
SELECT a.descrip_mov,
|
|
a.primer_enc,
|
|
a.segundo_enc,
|
|
a.tercer_enc,
|
|
a.ch_encabeza,
|
|
a.tipo_mov,
|
|
a.clase_mov,
|
|
a.afecta_tss,
|
|
a.cantidad_cia,
|
|
a.cantidad_emp,
|
|
a.cta_control,
|
|
a.cta_aux,
|
|
a.us_crea,
|
|
a.fech_crea,
|
|
a.us_mod,
|
|
a.fech_mod,a.modifica,
|
|
a.vacaciones
|
|
INTO
|
|
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
|
|
FROM notb00002 a WHERE a.cod_mov = mov_nomi.cod_mov
|
|
END FUNCTION |