{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP007 OBJETIVO : Cronologico de Requisiciones PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Octubre 26, 1992 FECHA MODIFICACION : Octubre 29, 1992 ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL coprrp007() END MAIN FUNCTION coprrp007() ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE requisito RECORD fech_req LIKE cotb00006.fech_req, nom_dpto LIKE adtb00001.nom_dpto, num_req LIKE cotb00006.num_req, num_oc LIKE cotb00014.num_oc, fech_oc LIKE cotb00014.fech_oc, cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, cantidad LIKE cotb00008.cantidad, procesada LIKE cotb00008.procesada, tipo_inv VARCHAR(30), uso VARCHAR(100), descrip_esp VARCHAR(100), unidad_med LIKE intb00001.unidad_med END RECORD DEFINE r_filename STRING # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmrp007 FROM "cofmrp007" DISPLAY FORM cofmrp007 # CALL pantalla() DISPLAY "coprrp007" AT 4,3 ATTRIBUTE(YELLOW) DISPLAY "Cronologico de Requisiciones" AT 6,26 ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA PARA EL REPORTE INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,clasifica AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fi END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF clasifica IS NULL THEN NEXT FIELD clasifica END IF EXIT INPUT END INPUT CONSTRUCT criterio ON a.departamento FROM departamento BEFORE CONSTRUCT CALL busca_departamento() AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF INT_FLAG THEN RETURN END IF ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE IF CLASIFICA = "T" THEN LET SELEC = "SELECT UNIQUE a.fech_req,e.nom_dpto,a.num_req,h.num_oc,g.fech_oc, ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ", "FROM cotb00006 a ,cotb00008 c LEFT OUTER JOIN cotb00015 h ON c.num_req = h.num_req AND h.status_t IS NULL ", " AND c.cod_n = h.cod_n and c.cod_grupo = h.cod_grupo and c.cod_tipo = h.cod_tipo and c.cod_Sec = h.cod_sec ", " LEFT OUTER JOIN cotb00014 g ON h.num_oc = g.num_oc,adtb00001 e ", "WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ", " a.fech_req between ? and ? and a.status_t is null and ", criterio CLIPPED," ", "ORDER BY e.nom_dpto,a.num_req" END IF IF CLASIFICA = "P" THEN LET SELEC = "SELECT DISTINCT a.fech_req,e.nom_dpto,a.num_req,' ',' ', ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ", "FROM cotb00006 a ,cotb00008 c ,adtb00001 e ", "WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ", " a.estado in( 'ABIERTA','EN PROCESO') AND ", " a.fech_req between ? and ? and a.status_t is null AND ", criterio CLIPPED," ", "ORDER BY e.nom_dpto,a.num_req" END IF IF CLASIFICA = "C" THEN LET SELEC = "SELECT distinct a.fech_req,e.nom_dpto,a.num_req,h.num_oc,h.fech_oc, ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ", "FROM cotb00006 a ,cotb00008 c ,adtb00001 e,cotb00014 h,cotb00015 p ", "WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ", " a.estado = 'CERRADA' AND a.num_req = p.num_req and h.num_oc = p.num_oc AND", " a.fech_req between ? and ? and a.status_t is null AND ",criterio CLIPPED," ", "ORDER BY e.nom_dpto,a.num_req" END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## SE PREPARA LA INFORMACION PREPARE busca FROM selec ## SE DECLARA EL CURSOR PARA LA SALIDA DEL REPORTE DECLARE accion CURSOR FOR busca OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA ## AL REPORTE LET idx = 1 WHILE status != notfound FETCH accion INTO requisito.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF idx = 1 THEN -- La API de configuracion de reportes (fgl_report_*) no esta -- disponible en este FGL; seleccionarsalida()/configureoutput() -- tampoco estan definidas en este programa. Se escribe el XML -- directo a un archivo en FGLSPOOL en lugar de usar la plantilla -- .4rp con vista previa. LET r_filename = FGL_GETENV("FGLSPOOL"), "/coprrp007_organiza.xml" LET handler = om.XmlWriter.createFileWriter(r_filename) START REPORT organiza TO XML HANDLER handler END IF OUTPUT TO REPORT organiza(requisito.*) LET idx = idx + 1 END WHILE IF idx > 1 THEN FINISH REPORT organiza END IF IF idx = 1 THEN CALL fgl_winmessage("ERROR","NO EXISTEN INFORMACIONES CON ESAS CONDICIONES","INFO") END IF END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT organiza(x) DEFINE x RECORD fech_req LIKE cotb00006.fech_req, nom_dpto CHAR(30), num_req LIKE cotb00006.num_req, num_oc LIKE cotb00014.num_oc, fech_oc LIKE cotb00014.fech_oc, cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, cantidad LIKE cotb00008.cantidad, procesada LIKE cotb00008.procesada, tipo_inv VARCHAR(30), uso VARCHAR(100), descrip_esp VARCHAR(100), unidad_med LIKE intb00001.unidad_med END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE b_oc,b_fecha,imp,bandera,bandera1 CHAR(1) DEFINE l,total_requisiciones SMALLINT DEFINE varia CHAR(12) 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 normal CHAR(2) DEFINE hora CHAR(5) 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 normal = ASCII 27, ASCII 80} LET bandera1 = "N" LET imp = "T" LET hora = time IF clasifica = "P" THEN LET varia = "*Pendientes*" END IF IF clasifica = "C" THEN LET varia = "*Cerradas*" END IF IF clasifica = "T" THEN LET varia = "*Todas*" END IF IF total_requisiciones IS NULL THEN LET total_requisiciones=0 END IF LET l = (143 - LENGTH(p_companias.nombre CLIPPED))/2 ## AQUI SE IMPRIME EL ENCABEZADO PRINT COLUMN 1,normal, comp_on, negrillas_on PRINT COLUMN 2, "coprrp007", COLUMN l, p_companias.nombre CLIPPED, COLUMN 134, "Pag. ",pageno using "<<<" PRINT COLUMN 61, "Sistema de Compras", COLUMN 134, today using "dd/mm/yy" PRINT COLUMN 61, "Cronologico de Requisiciones", COLUMN 137, hora LET l = (143 - LENGTH(varia))/2 PRINT COLUMN L, varia SKIP 1 LINES PRINT COLUMN 1, comp_on PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yy", COLUMN 20, "Hasta ", datos_cons.fech_fi using "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------" PRINT COLUMN 2, "Fecha", COLUMN 12, "Departamento", COLUMN 38, "Numero de", COLUMN 51, "Orden de", COLUMN 63, "Fecha" PRINT COLUMN 2, "Solicitud", COLUMN 12, "Requiriente", COLUMN 38, "Requisicion", COLUMN 51, "Compra", COLUMN 63, "Orden" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------" ## AQUI SE IMPRIME EL DETALLE SKIP 1 LINE BEFORE GROUP OF x.nom_dpto PRINT COLUMN 1, negrillas_on, COLUMN 2, x.fech_req USING "dd/mm/yyyy", COLUMN 14, x.nom_dpto BEFORE GROUP OF x.num_req PRINT COLUMN 2,x.fech_req USING "dd/mm/yyyy", COLUMN 48, x.num_req USING "<<<<<<", 2 SPACES, x.num_oc USING "<<<<<<<<", 2 SPACES, x.fech_oc USING "dd/mm/yyyy", 2 SPACES, x.uso WORDWRAP RIGHT MARGIN 100 PRINT COLUMN 48,"-------------------------------------------------------", "----------------------------------------" PRINT COLUMN 48, "Bien/Servicio", 50 SPACES, "Und", 2 SPACES, "Cantidad", 2 SPACES, ' Procesada' PRINT COLUMN 48,"-------------------------------------------------------", "----------------------------------------" ON EVERY ROW CALL producto(x.tipo_inv,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec) RETURNING x.descrip_esp,x.unidad_med PRINT COLUMN 48, x.cod_n USING "&&&&","-", x.cod_grupo USING "&&&&","-", x.cod_tipo USING "&&&&&","-", x.cod_sec USING "&&&&&&"," ", COLUMN 72, x.descrip_esp WORDWRAP RIGHT MARGIN 95, COLUMN 98, x.num_oc USING "<<<<<<<<", COLUMN 111, x.unidad_med, COLUMN 112, x.cantidad USING "##,###,###.##", COLUMN 130, x.procesada AFTER GROUP OF x.num_req PRINT COLUMN 48,"-------------------------------------------------------", "----------------------------------------" LET total_requisiciones = total_requisiciones + 1 ON LAST ROW SKIP 1 LINE PRINT COLUMN 1, "Total Registros===> ",total_requisiciones USING "&&&&" END REPORT