{ ------------------------------------------------------------------ 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" " Adiciona Registro Cancela Operacion" HELP 5 LET INT_FLAG = FALSE CLEAR FORM LET INT_FLAG = FALSE CALL tepcad011() COMMAND "Consultar-modificar" " Realiza Busqueda 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" " Actualiza Registro 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