{ ------------------------------------------------------------------ PROGRAMA : COPRRP028 OBJETIVO : Reporte De Ordenes Abiertas con Cantidades Pendientes por Llegar. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Mayo 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------ } GLOBALS "coprgb000.4gl" ##### Registro para almacenar la informacion enviada al reporte DEFINE d_rep28 RECORD tipo LIKE cotb00015.tipo, num_oc LIKE cotb00015.num_oc, fecha DATE, cod_n LIKE cotb00020.cod_n, cod_grupo LIKE cotb00020.cod_grupo, cod_tipo LIKE cotb00020.cod_tipo, cod_sec LIKE cotb00020.cod_sec, cantidad_l DECIMAL(12,2), descrip_esp CHAR(30), descrip CHAR(30), unidad_med CHAR(3), cantidad_r DECIMAL(12,2) END RECORD DEFINE fecha_i,fecha_f DATE ##### Funcion para buscar informacion FUNCTION coprrp028() OPTIONS FORM LINE 8 OPEN FORM cofmrp028 FROM "cofmrp028" DISPLAY FORM cofmrp028 CALL pantalla() DISPLAY "coprrp028" AT 4,3 DISPLAY "Cantidades Ordeneadas/Recibidas Por Orden" AT 6,20 LET int_flag = FALSE LET tipo_papel = 1 CALL msgrp000(tipo_papel) ##### Proceso de busqueda de la informacion requerida INPUT BY NAME fecha_i,fecha_f AFTER FIELD fecha_i IF fecha_i IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_i END IF BEFORE FIELD fecha_f LET fecha_f = TODAY DISPLAY BY NAME fecha_f AFTER FIELD fecha_f IF fecha_f IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_i END IF IF fecha_i > fecha_f THEN LET numero_msg = 149 CALL msg(numero_msg) NEXT FIELD fecha_f END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DECLARE busqueda CURSOR FOR SELECT a.tipo,a.num_oc,a.fech_oc,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, b.cantidad FROM cotb00014 a, cotb00015 b WHERE (a.tipo = b.tipo) AND (a.num_oc = b.num_oc) AND (a.cierre IS NULL OR a.cierre = "N") AND (a.status_t IS NULL) AND (a.fech_oc BETWEEN fecha_i AND fecha_f) ORDER BY 3,1,2,4,5,6,7 DISPLAY "Reporte Generandose ... Por Favor Espere" AT 19,14 ATTRIBUTE(BOLD,REVERSE) START REPORT reporte_28 TO "C:\\archivo" FOREACH busqueda INTO d_rep28.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET d_rep28.descrip_esp = NULL LET d_rep28.unidad_med = NULL CASE WHEN d_rep28.tipo = "01" SELECT a.descrip_esp,a.unidad_med INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM intb00001 a WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND (a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec) WHEN d_rep28.tipo = "02" SELECT a.descrip_esp,a.unidad_med INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM iptb00002 a WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND (a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec) OTHERWISE SELECT a.descrip_esp,a.unidad_med INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM irtb00001 a WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND (a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec) END CASE IF d_rep28.cantidad_l IS NULL THEN LET d_rep28.cantidad_l = 0 END IF IF d_rep28.cantidad_r IS NULL THEN LET d_rep28.cantidad_r = 0 END IF OUTPUT TO REPORT reporte_28(d_rep28.*) END FOREACH FINISH REPORT reporte_28 RUN "type C:\\archivo > %USPRINT%" END FUNCTION ###### Funcion que disena el reporte REPORT reporte_28(x) DEFINE x RECORd tipo LIKE cotb00015.tipo, num_oc LIKE cotb00015.num_oc, fecha DATE, cod_n LIKE cotb00020.cod_n, cod_grupo LIKE cotb00020.cod_grupo, cod_tipo LIKE cotb00020.cod_tipo, cod_sec LIKE cotb00020.cod_sec, cantidad_l DECIMAL(12,2), descrip_esp CHAR(30), descrip CHAR(30), unidad_med CHAR(3), cantidad_r DECIMAL(12,2) END RECORD, nombre_m CHAR(20), descripcion CHAR(43) DEFINE comprimido_on,comprimido_off,negrillas_on,negrillas_off CHAR(2), hora CHAR(5) OUTPUT LEFT MARGIN 0 TOP MARGIN 0 ###### Sortenado la informacion en orden de mes de reorden y dia de reorden FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comprimido_on = ASCII 15 LET comprimido_off = ASCII 18 LET hora = TIME LET l = (121 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comprimido_on,negrillas_on PRINT COLUMN 1, "coprrp028", COLUMN l, p_companias.nombre CLIPPED, COLUMN 114, "Pag. ",PAGENO USING "###" PRINT COLUMN 37, " SISTEMA DE COMPRAS", COLUMN 114, TODAY USING "dd/mm/yy" PRINT COLUMN 37, " Cantidades Ordenadas Vs Recibidas Por Orden", COLUMN 117, hora SKIP 1 LINES PRINT COLUMN 1, "Fecha: Del ",fecha_i USING "dd/mm/yy", " Al ",fecha_f USING "dd/mm/yy" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------", "---------------------------------------------------" PRINT COLUMN 1, "Orden", COLUMN 11, "Fecha", COLUMN 21, "Producto", COLUMN 84, "Ordenado", COLUMN 98, "Recibido", COLUMN 112, "Pendiente", COLUMN 123, " Porc." PRINT COLUMN 1, "----------------------------------------", "----------------------------------------", "---------------------------------------------------" PRINT negrillas_off BEFORE GROUP OF x.num_oc SKIP 1 LINE PRINT COLUMN 1, x.tipo USING "&&","-",x.num_oc USING "&&&&&&", COLUMN 11, x.fecha USING "dd/mm/yy"; ON EVERY ROW LET nombre_m = NULL LET descripcion = x.descrip_esp CLIPPED PRINT COLUMN 21, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ", descripcion, x.unidad_med, COLUMN 73, x.cantidad_l USING "###,###,###.##", COLUMN 88, x.cantidad_r USING "###,###,###.##", COLUMN 103, x.cantidad_l - x.cantidad_r USING "###,###,###.##", COLUMN 124, ((x.cantidad_l-x.cantidad_r)/x.cantidad_l)*100 USING "###.##"," %" ON LAST ROW PRINT comprimido_off END REPORT