{ ============================================================================= PROGRAMA : IRPRRP026 OBJETIVO : LISTAR PRECIOS PROMEDIOS LOCALES DE LOS REPUESTOS COMPRADOS EN UN RANGO DE FECHA. PROGRAMADOR: JUAN F. SOTO FECHA : FEBRERO 20, 1995. ============================================================================== } GLOBALS "irprgb000.4gl" DEFINE fecha3,fecha4 DATE #DEFINE p,real1,cuenta1,cuenta INTEGER #DEFINE p_real DECIMAL(8,2) DEFINE j,mes_ini,mes_fin,p_ano SMALLINT DEFINE promedio DECIMAL(12,2) MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL irprrp026() END MAIN FUNCTION irprrp026() DEFINE p_datos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip CHAR(30), unidad CHAR(3), existencia DECIMAL(12,2), mes SMALLINT, precio DECIMAL(9,3), clave CHAR(10) END RECORD OPTIONS ERROR LINE 24, FORM LINE 8 OPEN FORM irfmrp026 FROM "irfmrp026" DISPLAY FORM irfmrp026 DISPLAY "irprrp026" AT 4,3 DISPLAY "Historial Precio Local" AT 6,28 CALL pantalla() LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano,mes_ini,mes_fin IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec 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 17,15 ATTRIBUTE(REVERSE) LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ", " b.unidad_med,MAX(c.costo_st) ", "FROM irtb00002 a, intb00001 b,OUTER irtb00013 c ", "WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_Sec = b.cod_sec AND ", " a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_Sec = c.cod_sec AND ", criterio clipped," AND a.status_t is null AND c.status_t IS NULL AND ", " c.ano = ? AND c.mes_ini <= ? AND c.mes_fin >= ? ", "GROUP BY 1,2,3,4,5,6 ORDER BY 1,2,3,4 " PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING p_ano,mes_fin,mes_fin LET selec1 = "SELECT COUNT(*) FROM irtb00002 a,intb00001 b ", "WHERE (a.cod_n = b.cod_n and ", " a.cod_grupo = b.cod_grupo and ", " a.cod_tipo = b.cod_tipo and ", " a.cod_sec = b.cod_sec and ", criterio clipped,") AND a.status_t is null" PREPARE comando1 FROM selec1 DECLARE busca1 CURSOR FOR comando1 OPEN busca1 FETCH busca1 INTO regi DISPLAY " " AT 17,10 #LET p_real = cuenta / 33 #LET real1 = p_real using "#####" START REPORT irrp26 TO PIPE "lp -dcentral" #LET p = 24 #LET cuenta = 0 #LET cuenta1 = 0 #DISPLAY " " AT 20,p ATTRIBUTE(REVERSE) #LET p = p + 1 LET p_param = "S" FOREACH busca INTO p_datos.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CALL termometro(regi,p_param) LET p_param = "N" { IF cuenta >= real1 THEN LET cuenta = 0 DISPLAY " " AT 20,p ATTRIBUTE(REVERSE) LET p = p + 1 END IF LET cuenta = cuenta + 1 } FOR idx = 1 TO mes_fin SELECT fecha_inicio,fecha_corte INTO fecha3,fecha4 FROM prdtable WHERE ano = p_ano AND mes = idx LET p_datos.precio = 0 SELECT AVG(precio) INTO p_datos.precio FROM cotb00015 a,cotb00014 b WHERE (a.num_oc = b.num_oc AND a.tipo = b.tipo) and (a.cod_n = p_datos.cod_n AND a.cod_grupo = p_datos.cod_grupo and a.cod_tipo = p_datos.cod_tipo AND a.cod_sec = p_datos.cod_sec) and (b.fech_oc between fecha3 AND fecha4) AND a.status_t is null IF p_datos.precio is null THEN LET p_datos.precio = 0 END IF LET p_datos.clave = p_datos.cod_n using "&","-", p_datos.cod_grupo using "&","-", p_datos.cod_tipo using "&&","-", p_datos.cod_sec using "&&&" LET p_datos.mes = idx OUTPUT TO REPORT irrp26(p_datos.*) LET p_datos.precio = 0 END FOR END FOREACH FINISH REPORT irrp26 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT irrp26(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip CHAR(30), unidad CHAR(3), existencia DECIMAL(12,2), mes SMALLINT, precio DECIMAL(9,3), clave CHAR(10) END RECORD, nomb1,nomb2 CHAR(10) DEFINE comp_on CHAR(3) OUTPUT LEFT MARGIN 0 FORMAT PAGE HEADER LET comp_on = ASCII 031 PRINT comp_on PRINT COLUMN 1,"irprrp026", COLUMN 85, "R A Y .O. V A C D O M I N I C A N A, S. A.", COLUMN 202, "PAG. ",pageno using "###" PRINT COLUMN 85, " SISTEMA DE REPUESTOS", COLUMN 202, TODAY USING "DD/MM/YY" PRINT COLUMN 85, " HISTORIAL PRECIOS REALES LOCALES", COLUMN 202, TIME SKIP 1 LINE SELECT descrip INTO nomb1 FROM mestable WHERE mes = mes_ini SELECT descrip INTO nomb2 FROM mestable WHERE mes = mes_fin PRINT "PERIODO: ",nomb1 clipped," - ",nomb2 clipped," DE ",p_ano PRINT "======================================================================", "======================================================================", "======================================================================", "===============" PRINT COLUMN 1, "REPUESTOS", COLUMN 57, " STD", COLUMN 71, " ENERO", COLUMN 81, " FEBRERO", COLUMN 91, " MARZO", COLUMN 101, " ABRIL", COLUMN 111, " MAYO", COLUMN 121, " JUNIO", COLUMN 131, " JULIO", COLUMN 141, " AGOSTO", COLUMN 151, "SEPTIEMB.", COLUMN 161, " OCTUBRE", COLUMN 171, " NOVIEMB.", COLUMN 181, "DICIEMBRE", COLUMN 191, " PROMEDIO ", COLUMN 201, "DIFERENC." PRINT "======================================================================", "======================================================================", "======================================================================", "===============" BEFORE GROUP OF x.clave IF x.existencia IS NULL THEN LET x.existencia = 0 END IF PRINT COLUMN 1,x.clave," ",x.descrip CLIPPED," ",x.unidad CLIPPED, COLUMN 52, x.existencia USING "###,###,###.##"; LET j = 71 ON EVERY ROW PRINT COLUMN j, x.precio using "#,###.##"; LET j = j + 10 AFTER GROUP OF x.clave PRINT COLUMN 191, GROUP AVG(x.precio) WHERE x.precio <> 0 USING "#,###.##", COLUMN 201, x.existencia-(GROUP AVG(x.precio) WHERE x.precio<>0) USING "((,((#.##)" END REPORT