{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP026 OBJETIVO : Ordenes de Compras Vs Suplidor. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Mayo 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" DEFINE desc_mat CHAR(15) DEFINE cod_n,cod_n1 SMALLINT DEFINE datos_com RECORD cod_n LIKE cotb00015.cod_n, cod_grupo LIKE cotb00015.cod_grupo, cod_tipo LIKE cotb00015.cod_tipo, cod_sec LIKE cotb00015.cod_sec, num_oc LIKE cotb00014.num_oc, tipo LIKE cotb00014.tipo, fech_oc LIKE cotb00014.fech_oc, cod_sp LIKE cotb00001.cod_sp, cod_sp_sec LIKE cotb00001.cod_sp_sec, nom_sp LIKE cotb00001.nom_sp, precio LIKE cotb00015.precio, cantidad LIKE cotb00015.cantidad, descripcion CHAR(30), descrip1 CHAR(30), unidad_med CHAR(10), codigo CHAR(10), suplidor CHAR(6), orden_no CHAR(8) END RECORD FUNCTION coprrp026() DEFINE select_fech,select_movi,select_ent1,select_ent CHAR(1000) DEFINE idx_o,idx_e,idx_p,idx_m SMALLINT DEFINE esta,encontre,salir2,salir1,salir CHAR(1) DEFINE recibida,pendiente DECIMAL(12,2) DEFINE descripcion CHAR(30) DEFINE fecha1,fecha2 DATE #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmrp025 FROM "cofmrp025" DISPLAY FORM cofmrp025 CALL pantalla() DISPLAY "coprrp026" AT 4,3 DISPLAY "Orden de Compra Vs Suplidor" AT 6,26 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha1,fecha2,cod_n AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN LET numero_msg = 149 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD cod_n IF cod_n IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF END INPUT LET cod_n1 = cod_n IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.cod_grupo,a.cod_tipo,a.cod_sec,c.cod_sp,c.cod_sp_sec FROM cod_grupo,cod_tipo,cod_sec,cod_sp,cod_sp_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET select_ent = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.num_oc,c.tipo, ", " c.fech_oc,c.cod_sp,c.cod_sp_sec,b.nom_sp,a.precio,a.cantidad ", "FROM cotb00014 c,cotb00001 b,cotb00015 a ", "WHERE a.cod_n= ? AND c.fech_oc BETWEEN ? AND ? AND c.status_t is null ", " AND a.num_oc=c.num_oc AND a.tipo=c.tipo AND c.cod_sp=b.cod_sp AND ", " c.cod_sp_sec = b.cod_sp_sec AND b.status_t IS NULL AND ", criterio CLIPPED DISPLAY "<< Estoy Buscando Las Ordenes de Compras >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM select_ent DECLARE ent_curs CURSOR FOR comando OPEN ent_curs USING cod_n1,fecha1,fecha2 START REPORT documento26 TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET salir = "N" WHILE salir != "S" FETCH ent_curs INTO datos_com.* IF STATUS = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET datos_com.suplidor = datos_com.cod_sp USING "&&", datos_com.cod_sp_sec USING "&&&&" LET datos_com.orden_no = datos_com.tipo USING "&&", datos_com.num_oc USING "&&&&&&" LET datos_com.codigo = datos_com.cod_n USING "&","-", datos_com.cod_grupo USING "&","-", datos_com.cod_tipo USING "&&","-", datos_com.cod_sec USING "&&&" LET datos_com.descripcion = NULL LET datos_com.unidad_med = NULL SELECT b.descrip_esp,b.descrip_ing,b.unidad_med INTO datos_com.descripcion,datos_com.descrip1,datos_com.unidad_med FROM intb00001 b WHERE b.cod_n=datos_com.cod_n AND b.cod_grupo = datos_com.cod_grupo AND b.cod_tipo=datos_com.cod_tipo AND b.cod_sec = datos_com.cod_sec AND b.status_t is null CASE WHEN datos_com.cod_n = 1 LET desc_mat = " Productos " EXIT CASE WHEN datos_com.cod_n = 2 LET desc_mat = " Suministro " EXIT CASE END CASE IF datos_com.cantidad IS NULL THEN LET datos_com.cantidad = 0 END IF IF datos_com.cantidad > 0 THEN OUTPUT TO REPORT documento26(datos_com.*,fecha1,fecha2) END IF END WHILE FINISH REPORT documento26 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT documento26(x,fecha,fecha3) DEFINE x RECORD cod_n LIKE cotb00015.cod_n, cod_grupo LIKE cotb00015.cod_grupo, cod_tipo LIKE cotb00015.cod_tipo, cod_sec LIKE cotb00015.cod_sec, num_oc LIKE cotb00014.num_oc, tipo LIKE cotb00014.tipo, fech_oc LIKE cotb00014.fech_oc, cod_sp LIKE cotb00001.cod_sp, cod_sp_sec LIKE cotb00001.cod_sp_sec, nom_sp LIKE cotb00001.nom_sp, precio LIKE cotb00015.precio, cantidad LIKE cotb00015.cantidad, descripcion CHAR(30), descrip1 CHAR(30), unidad_med CHAR(10), codigo CHAR(10), suplidor CHAR(6), orden_no CHAR(8) END RECORD, descrip_f CHAR(65) DEFINE fecha,fecha3 DATE DEFINE imp CHAR(1) DEFINE negrillas_on,negrillas_off,comp_on,comp_off CHAR(2) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.suplidor,x.orden_no,x.codigo FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 27, ASCII 15 LET comp_off = ASCII 18 LET imp = "T" LET hora = time LET l = (140 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on PRINT COLUMN 1, "coprrp026", COLUMN l, p_companias.nombre CLIPPED, COLUMN 133, "Pag. ",pageno using "###" PRINT COLUMN 38, " Sistema de Compras", COLUMN 133, today using "dd/mm/yy" PRINT COLUMN 34, "Ordenes de Compra Vs Suplidor Del ", fecha USING "dd/mm/yy", " Al ", fecha3 USING "dd/mm/yy", COLUMN 136, hora PRINT COLUMN 53, desc_mat SKIP 1 LINE PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "________________________________________" PRINT COLUMN 1, "Orden ", COLUMN 21, "Fecha", COLUMN 31, "Bien y/o Servicio", COLUMN 105, "Cantidad ", COLUMN 121, "Precio", COLUMN 136, "Valor" PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "________________________________________" SKIP 1 LINE BEFORE GROUP OF x.suplidor PRINT COLUMN 1, "Suplidor : ",x.cod_sp USING "&&","-", x.cod_sp_sec USING "&&&&"," ", x.nom_sp CLIPPED SKIP 1 LINE BEFORE GROUP OF x.orden_no PRINT COLUMN 1, x.tipo USING "&&","-",x.num_oc using "&&&&&&", COLUMN 21, x.fech_oc USING "dd/mm/yy"; ON EVERY ROW SELECT UNIQUE a.nombre_marca INTO nombre_m FROM iptb00019 a,iptb00002 b WHERE b.cod_n = x.cod_n AND b.cod_grupo = x.cod_grupo AND b.cod_tipo = x.cod_tipo AND b.cod_sec = x.cod_sec AND b.marca = a.marca LET descrip_f = x.descripcion CLIPPED," ",nombre_m CLIPPED," ", x.descrip1 LET descrip_f = descrip_f CLIPPED PRINT COLUMN 31, x.cod_n USING "&","-", x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-", x.cod_sec USING "&&&", " ", descrip_f[1,45], COLUMN 89,x.unidad_med, COLUMN 94, x.cantidad using "###,###,###.##", COLUMN 109, x.precio USING "###,###,###.##", COLUMN 124, x.cantidad * x.precio USING "###,###,###.##" AFTER GROUP OF x.orden_no SKIP 1 LINE PRINT COLUMN 60, "Total Orden -->", COLUMN 127, GROUP SUM(x.cantidad*x.precio) USING "###,###,###.##" AFTER GROUP OF x.suplidor SKIP 1 LINE PRINT COLUMN 60, "Total Suplidor -->", COLUMN 127, GROUP SUM(x.cantidad*x.precio) USING "###,###,###.##" ON LAST ROW SKIP 1 LINE PRINT COLUMN 60, " Total Gral. -->", COLUMN 127, SUM(x.cantidad*x.precio) USING "###,###,###.##" PRINT COLUMN 1,comp_off END REPORT