Files
MBS/PROYECTO/codir/coprcs005.4gl
T

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