225 lines
7.5 KiB
Plaintext
225 lines
7.5 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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 <Delete>
|
|
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 <Delete>
|
|
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
|
|
|