{ ------------------------------------------------------------------ PROGRAMA : COPRMT018 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Poliza de Seguro. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : AGOSTO 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------ } GLOBALS "coprgb000.4gl" DEFINE nombre_pt CHAR(30) DEFINE nombre_via CHAR(10) FUNCTION coprmt018() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmmt018 FROM "cofmmt018" DISPLAY FORM cofmmt018 CALL pantalla() DISPLAY "coprmt018" AT 4,3 DISPLAY "Poliza de Seguro" AT 6,32 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL copcad018() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL copcmf018() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION copcad018() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME polizas.* ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_pt) CALL busca_puerto() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_pt END IF IF existe = "N" THEN LET numero_msg = 3 CALL msg(numero_msg) LET existe = null NEXT FIELD cod_pt END IF LET polizas.cod_pt = puertos.cod_pt DISPLAY BY NAME puertos.cod_pt,nombre_pt LET identifica = NULL NEXT FIELD via_t END CASE ## Verifica que el codigo no exista en el catalogo de articulos. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_n IF polizas.cod_n IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF AFTER FIELD cod_tipo IF polizas.cod_tipo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tipo END IF AFTER FIELD cod_grupo IF polizas.cod_grupo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_grupo END IF AFTER FIELD cod_sec IF (polizas.cod_n is null AND polizas.cod_grupo is null AND polizas.cod_tipo is null AND polizas.cod_sec is null) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n ELSE SELECT descrip_esp,status_t INTO descrip1,polizas.status_t FROM intb00001 WHERE cod_n = polizas.cod_n AND cod_grupo = polizas.cod_grupo AND cod_tipo = polizas.cod_tipo AND cod_sec = polizas.cod_sec IF status >= 0 THEN IF polizas.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_n END IF DISPLAY BY NAME polizas.* ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF DISPLAY BY NAME descrip1 END IF AFTER FIELD procedencia IF polizas.procedencia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD procedencia END IF AFTER FIELD cod_pt IF polizas.cod_pt IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_pt ELSE SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt and status_t is null END IF DISPLAY BY NAME nombre_pt AFTER FIELD via_t IF polizas.via_t IS NOT NULL THEN SELECT * FROM cotb00017 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec and cod_pt = polizas.cod_pt and via_t = polizas.via_t IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF IF polizas.via_t = "03" THEN LET nombre_via = "TERRESTRE" END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD via_t END IF DISPLAY BY NAME nombre_via AFTER FIELD seguro IF polizas.seguro IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD seguro END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF ## Verifica que el codigo del articulo no sea cero o nulo. IF (polizas.cod_n is null AND polizas.cod_grupo is null AND polizas.cod_tipo is null AND polizas.cod_sec is null) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n ELSE INSERT INTO cotb00017 VALUES (polizas.cod_n,polizas.cod_grupo, polizas.cod_tipo,polizas.cod_sec,polizas.procedencia, polizas.cod_pt,polizas.via_t,polizas.seguro,null,user, current,null,null) END IF LET numero_msg = 1 CALL msg(numero_msg) INITIALIZE polizas.* to null CLEAR FORM NEXT FIELD cod_n AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION copcmf018() ## Aqui se prepara para la captura del criterio de seleccion WHENEVER ERROR CONTINUE CONSTRUCT criterio ON cotb00017.* FROM cotb00017.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM cotb00017 where ", " status_t is null and ", criterio clipped, " ORDER BY 1,2,3,4" 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 polizas.* 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 SELECT descrip_esp INTO descrip1 FROM intb00001 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF DISPLAY BY NAME polizas.*,descrip1,nombre_pt,nombre_via MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO polizas.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT descrip_esp INTO descrip1 FROM intb00001 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF DISPLAY BY NAME polizas.*,descrip1,nombre_pt,nombre_via COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO polizas.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT descrip_esp INTO descrip1 FROM intb00001 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF DISPLAY BY NAME polizas.*,descrip1,nombre_pt,nombre_via COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO polizas.* SELECT descrip_esp INTO descrip1 FROM intb00001 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF DISPLAY BY NAME polizas.*,descrip1,nombre_pt,nombre_via LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO polizas.* SELECT descrip_esp INTO descrip1 FROM intb00001 WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF DISPLAY BY NAME polizas.*,descrip1,nombre_pt,nombre_via LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF polizas.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF INPUT BY NAME polizas.procedencia, polizas.cod_pt, polizas.via_t, polizas.seguro, polizas.us_crea, polizas.fech_crea, polizas.us_mod, polizas.fech_mod WITHOUT DEFAULTS ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_pt) CALL busca_puerto() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_pt END IF IF existe = "N" THEN LET numero_msg = 3 CALL msg(numero_msg) LET existe = null NEXT FIELD cod_pt END IF LET polizas.cod_pt = puertos.cod_pt DISPLAY BY NAME puertos.cod_pt,nombre_pt LET identifica = NULL NEXT FIELD via_t END CASE AFTER FIELD procedencia IF polizas.procedencia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD procedencia END IF AFTER FIELD cod_pt IF polizas.cod_pt IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_pt ELSE SELECT nom_pt INTO nombre_pt FROM cotb00019 WHERE cod_pt = polizas.cod_pt and status_t is null END IF DISPLAY BY NAME nombre_pt AFTER FIELD via_t IF polizas.via_t IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD via_t END IF IF polizas.via_t = "01" THEN LET nombre_via = "MARITIMA" END IF IF polizas.via_t = "02" THEN LET nombre_via = "AEREA" END IF IF polizas.via_t = "03" THEN LET nombre_via = "TERRESTRE" END IF AFTER FIELD seguro IF polizas.seguro IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD seguro END IF #### Verifica si el usuario presiono la tecla 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 cotb00017 SET procedencia = polizas.procedencia, cod_pt = polizas.cod_pt, via_t = polizas.via_t, seguro = polizas.seguro, us_mod = USER, fech_mod = CURRENT WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE cotb00017 SET status_t = "E" WHERE cod_n = polizas.cod_n and cod_grupo = polizas.cod_grupo and cod_tipo = polizas.cod_tipo and cod_sec = polizas.cod_sec and cod_pt = polizas.cod_pt and via_t = polizas.via_t LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION busca_puerto() OPEN WINDOW busqueda_p AT 10,10 WITH FORM "cofmwd010" ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last -1) CONSTRUCT criterio ON cotb00019.nom_pt FROM cotb00019.nom_pt IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec = "SELECT cod_pt,nom_pt FROM cotb00019 ", " WHERE ", " status_t is null AND ", criterio clipped, "ORDER BY 1 " PREPARE localiza_p FROM selec DECLARE puerto CURSOR FOR localiza_p LET idx = 1 FOREACH puerto INTO puerto_wd[idx].* IF status = NOTFOUND THEN LET existe = "N" EXIT FOREACH END IF LET puertos_wd[idx].cod_pt = puerto_wd[idx].cod_pt LET puertos_wd[idx].nom_pt = puerto_wd[idx].nom_pt clipped LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY puertos_wd TO consart.* LET curr1 = arr_curr() LET puertos.cod_pt = puertos_wd[curr1].cod_pt LET puertos.nom_pt = puertos_wd[curr1].nom_pt LET nombre_pt = puertos_wd[curr1].nom_pt CLOSE WINDOW busqueda_p END FUNCTION