Files
MBS/PROYECTO/tedirbk/teprmt011.4gl
T

386 lines
12 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : TEPRMT011
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Asignacion Vendedores
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : OCTUBRE 6, 1998.
------------------------------------------------------------------
}
GLOBALS "teprgb000.4gl"
DEFINE asigna9 RECORD LIKE tetb00009.*,
nombre_v,nombre_a CHAR(40)
FUNCTION teprmt011()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
MESSAGE LINE 24,
COMMENT LINE 21
OPEN FORM tefmmt011 FROM "tefmmt011"
DISPLAY FORM tefmmt011
CALL pantalla()
DISPLAY "teprmt011" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Mantenimiento de Asignacion Vendedores" at 6,20 ATTRIBUTE(BLACK)
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
HELP 5
LET INT_FLAG = FALSE
CLEAR FORM
LET INT_FLAG = FALSE
CALL tepcad011()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> Cancela Operacion"
HELP 6
CALL tepcmf011()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION tepcad011()
DEFINE fech_ant CHAR(8)
MESSAGE ""
## Captura los datos que va a contener el registro
INPUT BY NAME asigna9.*
AFTER FIELD sec_vend
IF asigna9.sec_vend = 0 or
asigna9.sec_vend is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_vend
ELSE
SELECT i.nom1_emp, i.apell1_emp INTO descrip1, descrip2
FROM adtb00003 i
WHERE i.num_emp = asigna9.sec_vend AND i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 68
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
LET nombre_v = descrip1 clipped," ",descrip2 clipped
DISPLAY BY NAME nombre_v
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END IF
AFTER FIELD sec_vend_a
IF asigna9.sec_vend_a = 0 or
asigna9.sec_vend_a is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
ELSE
SELECT i.nom1_emp, i.apell1_emp INTO descrip1, descrip2
FROM adtb00003 i
WHERE i.num_emp = asigna9.sec_vend_a AND
i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 68
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
END IF
LET nombre_a = descrip1 clipped," ",descrip2 clipped
DISPLAY BY NAME nombre_a
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END IF
# Verifica que el vendedor no este asignado
SELECT *FROM tetb00009 a
WHERE a.sec_vend = asigna9.sec_vend AND
a.sec_vend_a = asigna9.sec_vend_a
IF STATUS != NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
INSERT INTO tetb00009 VALUES (asigna9.*)
UPDATE tetb00009 set us_crea = user,
fech_crea = current
WHERE sec_vend = asigna9.sec_vend AND
sec_vend_a = asigna9.sec_vend_a
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
FUNCTION tepcmf011()
## Aqui se prepara para la captura del criterio de seleccion
MESSAGE ""
CLEAR FORM
CONSTRUCT BY NAME criterio ON tetb00009.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM tetb00009 ",
" WHERE ",criterio clipped,
" ORDER BY sec_vend,sec_vend_a"
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO asigna9.*
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
LET bandera = 0
RETURN
END IF
END IF
DISPLAY BY NAME asigna9.*
LET comisiones.sec_vend = asigna9.sec_vend
CALL busca_vendedor3()
LET nombre_v = descrip6
LET comisiones.sec_vend = asigna9.sec_vend_a
CALL busca_vendedor3()
LET nombre_a = descrip6
DISPLAY BY NAME nombre_v,nombre_a ATTRIBUTE(YELLOW)
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO asigna9.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME asigna9.*
LET comisiones.sec_vend = asigna9.sec_vend
CALL busca_vendedor3()
LET nombre_v = descrip6
LET comisiones.sec_vend = asigna9.sec_vend_a
CALL busca_vendedor3()
LET nombre_a = descrip6
DISPLAY BY NAME nombre_v ,nombre_a ATTRIBUTE(YELLOW)
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO asigna9.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME asigna9.*
LET comisiones.sec_vend = asigna9.sec_vend
CALL busca_vendedor3()
LET nombre_v = descrip6
LET comisiones.sec_vend = asigna9.sec_vend_a
CALL busca_vendedor3()
LET nombre_a = descrip6
DISPLAY BY NAME nombre_v,nombre_a ATTRIBUTE(YELLOW)
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO asigna9.*
DISPLAY BY NAME asigna9.*
LET comisiones.sec_vend = asigna9.sec_vend
CALL busca_vendedor3()
LET nombre_v = descrip6
LET comisiones.sec_vend = asigna9.sec_vend_a
CALL busca_vendedor3()
LET nombre_a = descrip6
LET numero_msg = 5
CALL msg(numero_msg)
DISPLAY BY NAME nombre_v,nombre_a ATTRIBUTE(YELLOW)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO asigna9.*
DISPLAY BY NAME asigna9.*
LET comisiones.sec_vend = asigna9.sec_vend
CALL busca_vendedor3()
LET nombre_v = descrip6
LET comisiones.sec_vend = asigna9.sec_vend_a
CALL busca_vendedor3()
LET nombre_a = descrip6
LET numero_msg = 4
CALL msg(numero_msg)
DISPLAY BY NAME nombre_v,nombre_a ATTRIBUTE(YELLOW)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Supr> Cancela Operacion"
IF asigna9.status_t = "E" THEN
LET numero_msg =36
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME asigna9.sec_vend_a
WITHOUT DEFAULTS
AFTER FIELD sec_vend_a
IF asigna9.sec_vend_a = 0 or
asigna9.sec_vend_a is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
ELSE
SELECT i.nom1_emp, i.apell1_emp INTO descrip1, descrip2
FROM adtb00003 i
WHERE i.num_emp = asigna9.sec_vend_a AND
i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 68
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
END IF
LET nombre_a = descrip1 clipped," ",descrip2 clipped
DISPLAY BY NAME nombre_a
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END IF
# Verifica que el vendedor no este asignado
SELECT *FROM tetb00009 a
WHERE a.sec_vend = asigna9.sec_vend AND
a.sec_vend_a = asigna9.sec_vend_a
IF STATUS != NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_vend_a
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE tetb00009 SET sec_vend_a = asigna9.sec_vend_a,
us_mod = USER,
fech_mod = CURRENT
WHERE
sec_vend = asigna9.sec_vend AND
sec_vend_a = asigna9.sec_vend_a
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"
"Elimina registro que esta en la pantalla"
UPDATE tetb00009 SET status_t = "E",
us_mod = user,
fech_mod = current
WHERE
sec_vend = asigna9.sec_vend AND
sec_vend_a = asigna9.sec_vend_a
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_vendedor3()
# Esta funcion busca el nombre del vendedor y lo despliega en pantalla
# Esta funcion es valida solamente para la consulta-modificacion.
LET descrip6 = NULL
LET descrip2 = NULL
SELECT i.nom1_emp, i.apell1_emp, i.status_t
INTO descrip1, descrip2, status_reg
FROM adtb00003 i
WHERE i.num_emp = comisiones.sec_vend and i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET descrip6 = NULL
LET descrip2 = NULL
LET numero_msg = 68
CALL msg(numero_msg)
ELSE
IF status_reg = "E" THEN
LET descrip6 = NULL
LET descrip2 = NULL
LET numero_msg = 67
CALL msg(numero_msg)
END IF
END IF
LET descrip6 = descrip1 clipped," ",descrip2 clipped
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END FUNCTION