{ ------------------------------------------------------------------ PROGRAMA : VEPRMT202 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Vendedor - Zona - Provincia. PROGRAMADOR : Lic. Abner Montalvo Z. FECHA REALIZACION : Septiembre 14, 1992. ------------------------------------------------------------------ } GLOBALS "veprgb000.4gl" FUNCTION veprmt202() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "vepray000.exe", HELP KEY CONTROL-W, MESSAGE LINE 24, COMMENT LINE 21 OPEN FORM vefmmt202 FROM "vefmmt202" DISPLAY FORM vefmmt202 CALL pantalla() CALL ayuda() DISPLAY "veprmt202" AT 4,3 DISPLAY "Mantenimiento de Vendedor - Zona - Provincia" AT 6,17 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" HELP 5 LET int_flag = FALSE CLEAR FORM CALL vepcad202() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" HELP 6 LET int_flag = FALSE CALL vepcmf202() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION vepcad202() ## Captura los datos que va a contener el registro # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false INPUT BY NAME vendedorzp.* ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_vend) CALL consulta_empleados() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_vend END IF IF NOT int_flag THEN LET vendedorzp.cod_vend = transportista.cod_transp LET vendedorzp.sec_vend = transportista.sec_transp DISPLAY transportista.cod_transp TO cod_vend DISPLAY transportista.sec_transp TO sec_vend DISPLAY descrip6 TO descrip6 NEXT FIELD cod_zona END IF LET int_flag = FALSE WHEN INFIELD (sec_vend) CALL consulta_empleados() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_vend END IF IF NOT int_flag THEN LET vendedorzp.cod_vend = transportista.cod_transp LET vendedorzp.sec_vend = transportista.sec_transp DISPLAY transportista.cod_transp TO cod_vend DISPLAY transportista.sec_transp TO sec_vend DISPLAY descrip6 TO descrip6 NEXT FIELD cod_zona END IF LET int_flag = FALSE WHEN INFIELD (cod_zona) CALL consulta_zonas() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_zona END IF IF NOT int_flag THEN LET vendedorzp.cod_zona = zona.cod_zona DISPLAY zona.cod_zona TO cod_zona DISPLAY descrip1 TO descrip NEXT FIELD cod_provincia END IF LET int_flag = FALSE WHEN INFIELD (cod_provincia) CALL consulta_provincias() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF IF NOT int_flag THEN LET vendedorzp.cod_provincia = zonap.cod_provincia DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia END IF LET int_flag = FALSE END CASE ## Verifica que el codigo no exista en la tabla de zona-provincia. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_vend IF vendedorzp.cod_vend = 0 or vendedorzp.cod_vend is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_vend END IF AFTER FIELD sec_vend IF vendedorzp.sec_vend = 0 or vendedorzp.sec_vend is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_vend ELSE SELECT i.nom_emp, i.apell_emp, i.status_t INTO descrip1, descrip2, status_reg FROM adtb00003 i WHERE i.cod_emp = vendedorzp.cod_vend AND i.cod_emp_sec = vendedorzp.sec_vend AND i.status_t is null IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 67 CALL msg(numero_msg) NEXT FIELD cod_vend END IF LET descrip6 = descrip1 clipped," ",descrip2 clipped DISPLAY descrip6 TO descrip6 ELSE LET numero_msg = 68 CALL msg(numero_msg) NEXT FIELD cod_vend END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD cod_zona IF vendedorzp.cod_zona is null or vendedorzp.cod_zona = 0 then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = vendedorzp.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD cod_provincia IF vendedorzp.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT b.nombre_provincia, b.status_t INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b WHERE a.cod_zona = vendedorzp.cod_zona AND a.cod_provincia = vendedorzp.cod_provincia AND b.cod_provincia = a.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF SELECT UNIQUE status_t INTO status_reg FROM vetb00010 WHERE cod_vend = vendedorzp.cod_vend AND sec_vend = vendedorzp.sec_vend AND cod_zona = vendedorzp.cod_zona AND cod_provincia = vendedorzp.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_vend END IF LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_vend END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE INITIALIZE zona.* TO NULL DISPLAY BY NAME zona.descrip CALL ayuda() RETURN END IF IF vendedorzp.cod_vend = 0 or vendedorzp.cod_vend is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_vend END IF IF vendedorzp.sec_vend = 0 or vendedorzp.sec_vend is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_vend ELSE SELECT i.nom_emp, i.apell_emp, i.status_t INTO descrip1, descrip2, status_reg FROM adtb00003 i WHERE i.cod_emp = vendedorzp.cod_vend AND i.cod_emp_sec = vendedorzp.sec_vend AND i.status_t is null IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 67 CALL msg(numero_msg) NEXT FIELD cod_vend END IF LET descrip6 = descrip1 clipped," ",descrip2 clipped DISPLAY descrip6 TO descrip6 ELSE LET numero_msg = 68 CALL msg(numero_msg) NEXT FIELD cod_vend END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF vendedorzp.cod_zona is null or vendedorzp.cod_zona = 0 then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = vendedorzp.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF vendedorzp.cod_provincia is null or vendedorzp.cod_provincia = 0 then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT b.nombre_provincia, b.status_t INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b WHERE a.cod_zona = vendedorzp.cod_zona AND a.cod_provincia = vendedorzp.cod_provincia AND b.cod_provincia = a.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF SELECT UNIQUE status_t INTO status_reg FROM vetb00010 WHERE cod_vend = vendedorzp.cod_vend AND sec_vend = vendedorzp.sec_vend AND cod_zona = vendedorzp.cod_zona AND cod_provincia = vendedorzp.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_vend END IF LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_vend END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF INSERT INTO vetb00010 VALUES (vendedorzp.cod_vend, vendedorzp.sec_vend, vendedorzp.cod_zona, vendedorzp.cod_provincia, null,USER, CURRENT, null, null) # Verifica el Status que retorna luego de insertar el registro en la tabla. # Si el Status es diferente de cero quiere decir que hubo problemas durante # la creacion del registro, entonces despliega un mensaje . CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) INITIALIZE vendedorzp.cod_zona, vendedorzp.cod_provincia, descrip1 TO NULL DISPLAY vendedorzp.cod_zona TO cod_zona DISPLAY vendedorzp.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD cod_vend AFTER FIELD fech_mod INITIALIZE vendedorzp.cod_zona, vendedorzp.cod_provincia, descrip1 TO NULL DISPLAY vendedorzp.cod_zona TO cod_zona DISPLAY vendedorzp.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia EXIT INPUT END INPUT END FUNCTION FUNCTION vepcmf202() # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion INITIALIZE vendedorzp.* TO NULL DISPLAY BY NAME vendedorzp.* CONSTRUCT criterio ON vetb00010.* FROM vetb00010.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF LET SELEC = " SELECT UNIQUE * FROM vetb00010 where ", " status_t is null and ", criterio clipped, " ORDER BY 1,2,3,4" 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 vendedorzp.* 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 vendedorzp.* LET comisiones.cod_vend = vendedorzp.cod_vend LET comisiones.sec_vend = vendedorzp.sec_vend CALL busca_vendedor() LET transportista.cod_zona = vendedorzp.cod_zona CALL busca_nombre_zona() LET transportista.cod_zona = vendedorzp.cod_zona LET transportista.cod_provincia = vendedorzp.cod_provincia CALL busca_provincia() MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO vendedorzp.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME vendedorzp.* LET comisiones.cod_vend = vendedorzp.cod_vend LET comisiones.sec_vend = vendedorzp.sec_vend CALL busca_vendedor() LET transportista.cod_zona = vendedorzp.cod_zona CALL busca_nombre_zona() LET transportista.cod_zona = vendedorzp.cod_zona LET transportista.cod_provincia = vendedorzp.cod_provincia CALL busca_provincia() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO vendedorzp.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME vendedorzp.* LET comisiones.cod_vend = vendedorzp.cod_vend LET comisiones.sec_vend = vendedorzp.sec_vend CALL busca_vendedor() LET transportista.cod_zona = vendedorzp.cod_zona CALL busca_nombre_zona() LET transportista.cod_zona = vendedorzp.cod_zona LET transportista.cod_provincia = vendedorzp.cod_provincia CALL busca_provincia() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO vendedorzp.* DISPLAY BY NAME vendedorzp.* LET numero_msg = 5 CALL msg(numero_msg) LET comisiones.cod_vend = vendedorzp.cod_vend LET comisiones.sec_vend = vendedorzp.sec_vend CALL busca_vendedor() LET transportista.cod_zona = vendedorzp.cod_zona CALL busca_nombre_zona() LET transportista.cod_zona = vendedorzp.cod_zona LET transportista.cod_provincia = vendedorzp.cod_provincia CALL busca_provincia() COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO vendedorzp.* DISPLAY BY NAME vendedorzp.* LET numero_msg = 4 CALL msg(numero_msg) LET comisiones.cod_vend = vendedorzp.cod_vend LET comisiones.sec_vend = vendedorzp.sec_vend CALL busca_vendedor() LET transportista.cod_zona = vendedorzp.cod_zona CALL busca_nombre_zona() LET transportista.cod_zona = vendedorzp.cod_zona LET transportista.cod_provincia = vendedorzp.cod_provincia CALL busca_provincia() { COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF vendedorzp.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME vendedorzp.nombre_provincia, vendedorzp.us_crea, vendedorzp.fech_crea, vendedorzp.us_mod, vendedorzp.fech_mod WITHOUT DEFAULTS AFTER FIELD nombre_provincia IF vendedorzp.nombre_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre_provincia END IF AFTER INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF IF vendedorzp.nombre_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre_provincia END IF EXIT INPUT END INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF UPDATE vetb00009 SET nombre_provincia = vendedorzp.nombre_provincia, us_mod = USER, fech_mod = CURRENT WHERE cod_zona = vendedorzp.cod_zona AND cod_provincia = vendedorzp.cod_provincia LET numero_msg = 13 CALL msg(numero_msg) } COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00010 SET status_t ="E" WHERE cod_vend = vendedorzp.cod_vend AND sec_vend = vendedorzp.sec_vend AND cod_zona = vendedorzp.cod_zona AND cod_provincia = vendedorzp.cod_provincia LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CALL ayuda() EXIT MENU END MENU END FUNCTION