Files
MBS/PROYECTO/nodir/noprmt001.4gl
T

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