{ ============================================================================= PROGRAMA : IRPRPC001 OBJETIVO : LLENAR TABLA TEMPORA DE COSTO ESTANDAR (IRTB01133) PROGRAMADOR : ABNER MONTALVO FECHA : AGOSTO 5, 1997 ============================================================================= } GLOBALS "irprgb000.4gl" DEFINE descrip CHAR(30) DEFINE codigo CHAR(10) DEFINE fecha_inicial,fecha_final DATE DEFINE opcion1 CHAR(1) DEFINE ano1 CHAR(4) DEFINE mes1, total_impresos INTEGER DEFINE datos_pc001 RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(3), existencia DECIMAL(10,2), num_oc INTEGER, costo_lq DECIMAL(16,4), precio DECIMAL(12,2), fecha_lq DATE, cod_mon INTEGER, descrip_mon CHAR(30), tasa_cambio DECIMAL(12,2) END RECORD FUNCTION irprpc001() WHENEVER ERROR CONTINUE OPTIONS PROMPT LINE 10, ERROR LINE 24, FORM LINE 8 OPEN FORM irfmrp025 FROM "irfmrp001" DISPLAY FORM irfmrp025 DISPLAY "irprpc001" AT 4,3 DISPLAY "Llenar Tabla Temporal Costos de Repuestos" AT 6,20 DISPLAY "Este proceso llena la tabla temporal de costos " AT 11,15 DISPLAY "de repuestos (irtb01133). Los registros de esta" AT 12,15 DISPLAY "tabla cumplen con las siguiente regla : " AT 13,15 DISPLAY "Son registros que tienen existencia en el Inven" AT 14,15 DISPLAY "tario de repuestos. Fecha de Corte < 07/08/97. " AT 15,15 LET total_impresos = 0 # LET tipo_papel = 1 # CALL msgrp000(tipo_papel) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF LET selec = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ", " b.unidad_med, SUM(c.cantidad_2) ", "FROM irtb00002 a, intb00001 b, irtb00006 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 ", " c.fecha < '07/08/97' AND ", " a.status_t IS NULL AND ", " b.status_t IS NULL AND ", " c.status_t IS NULL AND ", criterio CLIPPED, " GROUP BY 1,2,3,4,5,6 " DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 19,14 PREPARE comando FROM selec DECLARE busca CURSOR FOR comando #START REPORT reporte_pc001 TO PIPE "$DBPRINT" #START REPORT reporte_pc001 TO PIPE "salida" DISPLAY "<< Proceso Generandose ... Espere Por Favor >>" AT 19,14 FOREACH busca INTO datos_pc001.* LET datos_pc001.cod_mon = null LET datos_pc001.descrip_mon = null LET datos_pc001.fecha_lq = null LET datos_pc001.costo_lq = null LET codigo = datos_pc001.cod_n USING "&","-", datos_pc001.cod_grupo USING "&", "-", datos_pc001.cod_tipo USING "&&", "-", datos_pc001.cod_sec USING "&&&" DISPLAY codigo AT 20,35 SELECT MAX(fecha_lq) INTO datos_pc001.fecha_lq FROM cttb00013 d WHERE d.cod_n = datos_pc001.cod_n AND d.cod_grupo = datos_pc001.cod_grupo AND d.cod_tipo = datos_pc001.cod_tipo AND d.cod_sec = datos_pc001.cod_sec AND d.fecha < "07/08/97" AND d.status_t IS NULL IF status = NOTFOUND THEN LET datos_pc001.fecha_lq = null LET datos_pc001.costo_lq = null ELSE SELECT AVG(costo_lq) INTO datos_pc001.costo_lq FROM cttb00013 d WHERE d.cod_n = datos_pc001.cod_n AND d.cod_grupo = datos_pc001.cod_grupo AND d.cod_tipo = datos_pc001.cod_tipo AND d.cod_sec = datos_pc001.cod_sec AND d.fecha_lq = datos_pc001.fecha_lq AND d.status_t IS NULL END IF IF datos_pc001.costo_lq is null OR datos_pc001.costo_lq = 0 THEN LET datos_pc001.num_oc = null LET datos_pc001.precio = null SELECT MAX(a.num_oc) INTO datos_pc001.num_oc FROM cotb00015 a WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.status_t IS NULL IF status = NOTFOUND THEN LET datos_pc001.num_oc = null LET datos_pc001.precio = null ELSE LET datos_pc001.precio = 0 SELECT AVG(a.precio) INTO datos_pc001.precio FROM cotb00015 a WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.num_oc = datos_pc001.num_oc AND a.status_t IS NULL SELECT UNIQUE a.cod_mon, b.descrip_mon, b.tasa_cambio INTO datos_pc001.cod_mon, datos_pc001.descrip_mon, datos_pc001.tasa_cambio FROM cotb00015 a, cotb00031 b WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.num_oc = datos_pc001.num_oc AND a.cod_mon = b.cod_mon AND b.status_t IS NULL AND a.status_t IS NULL END IF END IF IF datos_pc001.precio is null OR datos_pc001.precio = 0 THEN LET datos_pc001.num_oc = null LET datos_pc001.precio = null SELECT MAX(a.num_oc) INTO datos_pc001.num_oc FROM cotb00034 a WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.status_t IS NULL IF status = NOTFOUND THEN LET datos_pc001.num_oc = null LET datos_pc001.precio = null ELSE SELECT AVG(a.precio) INTO datos_pc001.precio FROM cotb00034 a WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.num_oc = datos_pc001.num_oc AND a.status_t IS NULL SELECT UNIQUE a.cod_mon, b.descrip_mon, b.tasa_cambio INTO datos_pc001.cod_mon, datos_pc001.descrip_mon, datos_pc001.tasa_cambio FROM cotb00034 a, cotb00031 b WHERE a.cod_n = datos_pc001.cod_n AND a.cod_grupo = datos_pc001.cod_grupo AND a.cod_tipo = datos_pc001.cod_tipo AND a.cod_sec = datos_pc001.cod_sec AND a.num_oc = datos_pc001.num_oc AND a.cod_mon = b.cod_mon AND b.status_t IS NULL AND a.status_t IS NULL END IF END IF # IF datos_pc001.costo_lq is not null THEN # LET datos_pc001.costo_lq = # datos_pc001.costo_lq * datos_pc001.tasa_cambio * 1.08 # END IF # IF datos_pc001.costo_lq is null THEN # LET datos_pc001.costo_lq = 0 # END IF IF datos_pc001.costo_lq > 0 THEN LET datos_pc001.precio = 0 END IF IF datos_pc001.precio > 0 THEN LET datos_pc001.costo_lq = datos_pc001.precio * datos_pc001.tasa_cambio END IF IF datos_pc001.existencia > 0 THEN INSERT INTO irtb01133 VALUES (01,12,1997, datos_pc001.cod_n, datos_pc001.cod_grupo, datos_pc001.cod_tipo, datos_pc001.cod_sec, datos_pc001.costo_lq, null,user,current,null,null) # OUTPUT TO REPORT reporte_pc001(datos_pc001.*) END IF END FOREACH #FINISH REPORT reporte_pc001 END FUNCTION {REPORT reporte_pc001(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(3), existencia DECIMAL(10,2), num_oc INTEGER, costo_lq DECIMAL(16,4), precio DECIMAL(12,2), fecha_lq DATE, cod_mon INTEGER, descrip_mon CHAR(30) END RECORD, doble_off,doble_on,doce CHAR(3), unidad CHAR(3), total_p DECIMAL(12,2) OUTPUT LEFT MARGIN 0 FORMAT PAGE HEADER LET doce = ASCII 030 LET doble_on = ASCII 027, ASCII 001 LET doble_off = ASCII 027, ASCII 002 PRINT ASCII 031 PRINT COLUMN 1, "irprpc001", COLUMN 18, "R A Y .O. V A C D O M I N I C A N A, S. A.", COLUMN 74, "Pag. ",pageno using "###" PRINT COLUMN 18, " SISTEMA DE REPUESTOS", COLUMN 74, today using "dd/mm/yy" PRINT COLUMN 27, "Repuestos sin Costos Reales", COLUMN 74, time PRINT COLUMN 1, "FECHA: ",TODAY using "dd/mm/yy" PRINT "=============================================================================", "=========================================" PRINT COLUMN 1, "Codigo", COLUMN 53, "Costo Real", COLUMN 64, "O.Compra", COLUMN 75, "PRECIO", COLUMN 83, "MONEDA" PRINT "=============================================================================", "=========================================" SKIP 1 LINE ON EVERY ROW IF x.costo_lq > 0 THEN LET x.num_oc = null LET x.precio = null ELSE LET x.costo_lq = null END IF IF x.precio = 0 THEN LET x.precio = null END IF IF x.costo_lq is null AND x.precio is null THEN PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ", x.descrip_esp," ",x.unidad_med, COLUMN 47, x.costo_lq USING "###,###,###.####", COLUMN 64, x.num_oc USING "######", COLUMN 71, x.precio USING "####,###.##", COLUMN 83, x.cod_mon USING "##"," ",x.descrip_mon LET total_impresos = total_impresos + 1 END IF ON LAST ROW PRINT "=============================================================================", "=========================================" PRINT "TOTAL REGISTRO ---> ", total_impresos USING "<<<,<<<,<<<" PRINT ASCII 030 END REPORT }