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

397 lines
12 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRRP001
OBJETIVO : CATALOGO DE SUPLIDORES
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL coprrp001()
END MAIN
FUNCTION coprrp001()
#### Registro que almacena la informacion requerida
DEFINE listado 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,
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
DEFINE
r_filename STRING,
preview INT
# WHENEVER ERROR CONTINUE
OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21
CLEAR SCREEN
##### Abriendo el formulario para captura de datos de la condicion de busqueda
OPEN FORM cofmrp001 FROM "cofmrp001"
DISPLAY FORM cofmrp001
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
##### Entrando el valor por el cual se ordenara la salida
INPUT BY NAME decide
AFTER FIELD decide
IF decide IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD decide
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
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
RETURN
END IF
##### Selecionando la informacion ordenado alfabeticamente
IF decide = "A" THEN
LET SELEC =
"SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,a.dir_sp,a.area_sp,a.tel_sp, ",
" a.fax_sp,a.cont_sp,b.descrip_term ",
"FROM cotb00001 a, OUTER cotb00024 b ",
"WHERE a.term_sp = b.term_sp AND a.status_t is null AND ",
criterio CLIPPED,
" ORDER BY a.cod_sp,a.cod_sp_sec"
ELSE
##### Selecionando la informacion ordenado numericamente
LET SELEC =
"SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,a.dir_sp,a.area_sp,a.tel_sp, ",
" a.fax_sp,a.cont_sp,b.descrip_term ",
"FROM cotb00001 a, OUTER cotb00024 b ",
"WHERE a.term_sp = b.term_sp AND a.status_t is null AND ",
criterio CLIPPED,
" ORDER BY a.cod_sp,a.cod_sp_sec"
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor"
AT 19, 14
ATTRIBUTE(REVERSE, BOLD)
PREPARE busca FROM selec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE accion CURSOR FOR busca
DISPLAY " " AT 19, 14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19, 14
ATTRIBUTE(REVERSE)
CALL defecto(
usuarios, clave, impresor)
RETURNING imprime,
negrilla_on,
negrillas_of,
doble_on,
doble_off,
comp_on,
comp_off,
doce,
normal,
archivo,
copia
LET r_filename = 'coprrp001.4rp'
CALL seleccionarSalida() RETURNING r_output
LET preview = 1
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT catalogo2 TO XML HANDLER handler
#### Enviando la informacion al registro del reporte
FOREACH accion INTO listado.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF status = NOTFOUND THEN
EXIT FOREACH
ELSE
OUTPUT TO REPORT catalogo2(listado.*)
END IF
END FOREACH
FINISH REPORT catalogo2
#RUN imprime
END FUNCTION
##### Funcion que genera el reporte
REPORT catalogo(x)
DEFINE x 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,
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
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE hora CHAR(5)
DEFINE l SMALLINT
DEFINE varia CHAR(10)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 0
PAGE LENGTH 100
FORMAT
PAGE HEADER
{ LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
}
LET hora = TIME
IF decide = "N" THEN
LET varia = "*Numerico*"
ELSE
LET varia = "Alfabetico"
END IF
LET l = (215 - LENGTH(p_companias.nombre)) / 2
PRINT COLUMN 1, comp_on, negrillas_on
PRINT COLUMN 1,
"coprrp001",
COLUMN l,
p_companias.nombre CLIPPED,
COLUMN 208,
"Pag. ",
PAGENO USING "<<<"
PRINT COLUMN 99,
"Sistema de Compras",
COLUMN 208,
TODAY USING "dd/mm/yy"
PRINT COLUMN 1,
COLUMN 97,
"Catalogo de Suplidores",
COLUMN 211,
hora
LET l = (215 - LENGTH(varia)) / 2
PRINT COLUMN L, varia
PRINT COLUMN 1,
"----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"-------"
PRINT COLUMN 113, "Codigo"
PRINT COLUMN 2,
"Codigo",
COLUMN 15,
"Nombre Suplidor",
COLUMN 49,
"Direccion",
COLUMN 114,
"Area",
COLUMN 121,
"Telefono",
COLUMN 132,
"Fax",
COLUMN 143,
"Persona de Contacto",
COLUMN 177,
"Terminos de Pago"
PRINT COLUMN 1,
"----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"-------"
PRINT negrillas_off
BEFORE GROUP OF x.cod_sp
SKIP 1 LINE
LET idx = 0
ON EVERY ROW
PRINT COLUMN 2,
x.cod_sp USING "&&",
"-",
COLUMN 5,
x.cod_sp_sec USING "&&&&",
COLUMN 15,
x.nom_sp,
COLUMN 49,
x.dir_sp,
COLUMN 114,
x.area_sp,
COLUMN 121,
x.tel_sp,
COLUMN 132,
x.fax_sp,
COLUMN 143,
x.cont_sp,
COLUMN 177,
x.descrip_term
LET idx = idx + 1
AFTER GROUP OF x.cod_sp
SKIP 1 LINE
IF x.cod_sp = 10 THEN
PRINT COLUMN 2, "Total Suplidores LOCALES .... ", idx
ELSE
PRINT COLUMN 2, "Total Suplidores del EXTRANJERO... ", idx
END IF
ON LAST ROW
PRINT ASCII 18
{ ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) USING "####"
PRINT COLUMN 2, ASCII 27, ASCII 80
PRINT COLUMN 1, "====================================================",
"====================================================",
"====================================================",
"====================================================",
"=======" }
END REPORT
REPORT catalogo2(x)
DEFINE x 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,
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
DEFINE total_suplidores,tipo_reporte,total_registros STRING
DEFINE codigo_sp STRING
DEFINE l SMALLINT
DEFINE varia CHAR(10)
FORMAT
PAGE HEADER
BEFORE GROUP OF x.cod_sp
IF decide = "N" THEN
LET varia = "*Numerico*"
ELSE
LET varia = "Alfabetico"
END IF
LET tipo_reporte = varia
PRINTX tipo_reporte
LET idx = 0
ON EVERY ROW
LET codigo_sp = x.cod_sp CLIPPED,"-",x.cod_sp_sec CLIPPED
PRINTX codigo_sp,
x.nom_sp,
x.dir_sp,
x.area_sp,
x.tel_sp,
x.fax_sp,
x.cont_sp,
x.descrip_term
LET idx = idx + 1
AFTER GROUP OF x.cod_sp
IF x.cod_sp = 10 THEN
LET total_suplidores =
"Total Suplidores LOCALES .... ", idx
ELSE
LET total_suplidores =
"Total Suplidores del EXTRANJERO... ", idx
END IF
PRINTX total_suplidores
ON LAST ROW
LET total_registros =
"Total de Registros Impresos = ", COUNT(*) USING "####"
PRINTX total_registros
END REPORT