{ ------------------------------------------------------------------------------- PROGRAMA : COPRCS005 OBJETIVO : Consulta Relacion Suplidor - Bienes y Servicios PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Agosto 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" DEFINE base2 DECIMAL(10,2) DEFINE idx_e SMALLINT DEFINE supli RECORD cod_sp LIKE cotb00001.cod_sp, cod_sp_sec LIKE cotb00001.cod_sp_sec, nom_sp LIKE cotb00001.nom_sp, dir_sp LIKE cotb00001.dir_sp, ciu_sp LIKE cotb00001.ciu_sp, cod_pais LIKE cotb00001.cod_pais, nom_pais LIKE cotb00018.nom_pais, area_sp LIKE cotb00001.area_sp, tel_sp LIKE cotb00001.tel_sp, fax_sp LIKE cotb00001.fax_sp, cont_sp LIKE cotb00001.cont_sp, descrip_term LIKE cotb00024.descrip_term 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 coprcs005() END MAIN FUNCTION coprcs005() WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmcs005 FROM "cofmcs005" DISPLAY FORM cofmcs005 LABEL volver: CONSTRUCT criterio ON a.cod_sp,a.cod_sp_sec,a.nom_sp FROM cod_sp,cod_sp_sec,nom_sp IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF LET SELEC = "SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,a.dir_sp,a.ciu_sp,a.cod_pais, ", " c.nom_pais,a.area_sp,a.tel_sp,a.fax_sp,a.cont_sp,b.descrip_term ", "FROM cotb00001 a,cotb00024 b,cotb00018 c ", "WHERE a.term_sp = b.term_sp AND a.cod_pais = c.cod_pais AND ", "a.status_t is null AND ", criterio clipped, " ORDER BY a.cod_sp,a.cod_sp_sec" ## Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF DISPLAY "Buscando Informacion... Espere Por Favor" AT 23,3 ATTRIBUTE (YELLOW) PREPARE busca FROM selec DECLARE accion SCROLL CURSOR FOR busca OPEN accion DISPLAY " " AT 21,2 LET idx = 1 FETCH FIRST accion INTO supli.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM GOTO volver END IF DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el registro Siguiente encontrado" LET idx = 1 FETCH NEXT accion INTO supli.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term COMMAND "Anterior" "Presenta en pantalla el registro Anterior encontrado" LET idx = 1 FETCH PREVIOUS accion INTO supli.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term COMMAND "Primero" "Presenta en pantalla el Primer registro encontrado" LET idx = 1 FETCH FIRST accion INTO supli.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term COMMAND "Ultimo" "Presenta en pantalla el Ultimo registro encontrado" LET idx = 1 FETCH LAST accion INTO supli.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term COMMAND "Ver" "Presenta los materiales de este suplidor" CALL material() COMMAND "Retornar" EXIT MENU END MENU CLEAR FORM RETURN END FUNCTION FUNCTION material() ## Se seleccionan los campos que el usuario debe ver en la pantalla DECLARE accion5 CURSOR FOR SELECT d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec," ",d.precio, MAX(d.fech_crea) FROM cotb00015 d, cotb00014 h WHERE h.cod_sp = supli.cod_sp AND h.cod_sp_sec = supli.cod_sp_sec AND h.num_oc = d.num_oc and h.tipo = d.tipo and d.status_t is null GROUP BY d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.precio ORDER BY d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec ## Busca los registros que cumplan con la condicion dada y verifica si el ## suplidor existe en el catalogo de suplidores LET idx_e = 1 FOREACH accion5 INTO smp[idx_e].* SELECT a.descrip_esp,a.unidad_med,c.nombre_marca INTO articulos.descrip_esp,articulos.descrip_ing, articulos.unidad_med,nombre_m FROM intb00001 a,iptb00002 b,iptb00019 c WHERE a.cod_n = smp[idx_e].cod_n AND a.cod_grupo =smp[idx_e].cod_grupo AND a.cod_tipo = smp[idx_e].cod_tipo AND a.cod_sec = smp[idx_e].cod_sec AND b.cod_n = smp[idx_e].cod_n AND b.cod_grupo =smp[idx_e].cod_grupo AND b.cod_tipo = smp[idx_e].cod_tipo AND b.cod_sec = smp[idx_e].cod_sec AND b.marca = c.marca LET smp[idx_e].descrip_esp = articulos.descrip_esp CLIPPED," ", nombre_m CLIPPED," ",articulos.descrip_ing LET idx_e = idx_e + 1 END FOREACH CALL set_count (idx_e-1) DISPLAY BY NAME supli.cod_sp,supli.cod_sp_sec,supli.nom_sp,supli.dir_sp, supli.ciu_sp,supli.cod_pais,supli.nom_pais,supli.area_sp, supli.tel_sp,supli.fax_sp,supli.cont_sp,supli.descrip_term DISPLAY ARRAY smp TO consart.* ## Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF CLEAR FORM END FUNCTION