{ ------------------------------------------------------------------------------- PROGRAMA : IRPRRP041 OBJETIVO : RANKING DE USO DE REPUESTOS PROGRAMADOR : Lic. Abner Montalvo FECHA REALIZACION : Febrero 15, 1998 ------------------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" DEFINE ano_c CHAR(4), p_mes INTEGER, nomb1 CHAR(12), t_existe,t_valor DECIMAL(12,2), tipo_r,opt5 CHAR(1), limite SMALLINT , nombre_rk CHAR(20) MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL irprrp041() END MAIN FUNCTION irprrp041() DEFINE mes CHAR(2) DEFINE idx_ant,idx_cos,idx_act SMALLINT DEFINE salir,primera CHAR(1) DEFINE balance_in DECIMAL(12,2) DEFINE existe RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, existe_act DECIMAL(10,2), costo LIKE intb00013.costo_st, valor DECIMAL(12,2) END RECORD DEFINE select_cost,select_act,select_ant CHAR(1000) OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmrp041 FROM "irfmrp041" DISPLAY FORM infmrp041 CALL pantalla() DISPLAY "irprrp041" AT 4,3 DISPLAY "Ranking de Uso de Repuestos " AT 6,26 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME tipo_r,datos_cons.fech_in, datos_cons.fech_fi, limite 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 IF datos_cons.fech_fi < datos_cons.fech_in THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fech_in END IF BEFORE FIELD limite IF limite IS NULL THEN LET limite = 0 END IF AFTER FIELD limite IF limite IS NULL OR limite < 0 THEN LET numero_msg = 7 CALL msg(numero_msg) NEXT FIELD limite END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT CONSTRUCT criterio ON d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec LET select_cost = "SELECT d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,c.descrip_esp, ", " c.unidad_med ", "FROM intb00001 c,irtb00002 d ", "WHERE (",criterio CLIPPED," AND ", " d.cod_n = c.cod_n AND ", " d.cod_grupo = c.cod_grupo AND ", " d.cod_tipo = c.cod_tipo AND ", " d.cod_sec = c.cod_sec) ", " GROUP BY 1,2,3,4,5,6 ", " ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Los Costos Actuales >>" AT 17,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_costo FROM select_cost DECLARE material_costo SCROLL CURSOR FOR busca_costo OPEN material_costo DISPLAY " " AT 17,14 IF tipo_r = "V" THEN START REPORT reporte_v41 TO "rpir41" LET nombre_rk = "Por Valor" ELSE START REPORT reporte_c41 TO "rpir41" LET nombre_rk = "Por Uso" END IF DISPLAY "<< Reporte Generandose.. Espere Por Favor" AT 17,14 ATTRIBUTE (REVERSE,BOLD) FOREACH material_costo INTO existe.* LET existe.existe_act = 0 LET existe.costo = 0 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET ano_c = YEAR(datos_cons.fech_fi) SELECT MAX(a.mes_fin) INTO p_mes FROM irtb00013 a WHERE a.cod_n = existe.cod_n AND a.cod_grupo = existe.cod_grupo AND a.cod_tipo = existe.cod_tipo AND a.cod_sec = existe.cod_sec AND a.ano = ano_c AND a.status_t is null SELECT a.costo_st INTO existe.costo FROM irtb00013 a WHERE a.cod_n = existe.cod_n AND a.cod_grupo = existe.cod_grupo AND a.cod_tipo = existe.cod_tipo AND a.cod_sec = existe.cod_sec AND a.ano = ano_c AND a.mes_fin = p_mes AND a.status_t is null IF existe.costo IS NULL THEN LET existe.costo = 0 END IF SELECT SUM(cantidad_2) INTO existe.existe_act FROM irtb00006 WHERE cod_n = existe.cod_n AND cod_grupo = existe.cod_grupo AND cod_tipo = existe.cod_tipo AND cod_sec = existe.cod_sec AND fecha BETWEEN datos_cons.fech_in AND datos_cons.fech_fi AND # cod_mov IN (10,11,12,13,51,52,53,54,55,58,59,60,61,62) AND cod_mov IN (24,51,52,53,54,55,58,59,60,61,62) AND status_t is null IF existe.existe_act IS NULL THEN LET existe.existe_act = 0 END IF IF existe.existe_act < 0 THEN LET existe.existe_act = existe.existe_act * -1 END IF LET existe.valor = existe.existe_act * existe.costo # IF tipo_r = "V" THEN IF existe.valor <= 0 THEN CONTINUE FOREACH END IF # END IF DISPLAY existe.cod_n USING "&" AT 20,35 DISPLAY existe.cod_grupo USING "&" AT 20,37 DISPLAY existe.cod_tipo USING "&&" AT 20,39 DISPLAY existe.cod_sec USING "&&&" AT 20,42 IF tipo_r = "V" THEN OUTPUT TO REPORT reporte_v41(existe.*) ELSE OUTPUT TO REPORT reporte_c41(existe.*) END IF END FOREACH IF tipo_r = "V" THEN FINISH REPORT reporte_v41 ELSE FINISH REPORT reporte_c41 END IF PROMPT "Desea Imprimir Reporte (S/N) " FOR opt5 LET opt5 = upshift(opt5) IF opt5 = "S" THEN RUN "$DBPRINT rpir41" END IF CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_v41(x) DEFINE x RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, existe_act DECIMAL(10,2), costo LIKE intb00013.costo_st, valor DECIMAL(12,2) END RECORD, no_reg, total_reg SMALLINT DEFINE total_c,total_p DECIMAL (12,2) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(2) DEFINE doce CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.valor DESC FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 # LET comp_on = ASCII 031 # LET comp_off = ASCII 029 LET comp_on = ASCII 015 LET comp_off = ASCII 018 LET doce = ASCII 030 LET hora = time PRINT COLUMN 1, comp_on PRINT COLUMN 1, "irprrp041", COLUMN 24, " M A R M O T E C H S. A.", COLUMN 89, "Pag. ",pageno using "###" PRINT COLUMN 1, COLUMN 24, " Sistema de Inventario de Repuestos", COLUMN 89, today using "dd/mm/yy" PRINT COLUMN 33, "Ranking de Uso de Repuestos ", nombre_rk, COLUMN 92, hora PRINT COLUMN 34, "Del ", datos_cons.fech_in USING "dd/mm/yy", " al ", datos_cons.fech_fi USING "dd/mm/yy" SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------" PRINT COLUMN 81, "Costo" PRINT COLUMN 1, "Ranking", COLUMN 12, "Repuesto", COLUMN 65, " Cantidad ", COLUMN 81, "Standard", COLUMN 101, "Valor" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------" IF t_existe is null THEN LET t_existe = 0 END IF IF t_valor is null THEN LET t_valor = 0 END IF SKIP 1 LINE ON EVERY ROW IF x.valor > 0 THEN IF no_reg IS NULL THEN LET no_reg = 0 END IF LET no_reg = no_reg + 1 IF limite > 0 THEN IF no_reg <= limite THEN PRINT COLUMN 2, no_reg USING "###", COLUMN 10, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp CLIPPED, " ",x.unidad_med CLIPPED, COLUMN 60, x.existe_act USING "###,###,###.##", COLUMN 77, x.costo USING "#,###,###.##", COLUMN 92, x.valor USING "###,###,###.##" END IF ELSE PRINT COLUMN 2, no_reg USING "###", COLUMN 10, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp CLIPPED, " ",x.unidad_med CLIPPED, COLUMN 60, x.existe_act USING "###,###,###.##", COLUMN 77, x.costo USING "#,###,###.##", COLUMN 92, x.valor USING "###,###,###.##" END IF END IF ON LAST ROW PRINT comp_off { LET t_valor = SUM(x.existe_act * x.costo) PRINT COLUMN 82, "--------------" PRINT COLUMN 83, t_valor USING "((,(((,(##.##)" PRINT COLUMN 1, "==================================================", "==============================================" PRINT COLUMN 4, "Total Registros Impresos =", no_reg USING "<<<<" PRINT COLUMN 1, "==================================================", "==============================================" PRINT COLUMN 4, comp_off } END REPORT REPORT reporte_c41(x) DEFINE x RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, existe_act DECIMAL(10,2), costo LIKE intb00013.costo_st, valor DECIMAL(12,2) END RECORD, no_reg, total_reg SMALLINT DEFINE total_c,total_p DECIMAL (12,2) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(2) DEFINE doce CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.existe_act DESC FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 # LET comp_on = ASCII 031 # LET comp_off = ASCII 029 LET comp_on = ASCII 015 LET comp_off = ASCII 018 LET doce = ASCII 030 LET hora = time PRINT COLUMN 1, comp_on PRINT COLUMN 1, "irprrp041", COLUMN 24, " M A R M O T E C H S. A.", COLUMN 89, "Pag. ",pageno using "###" PRINT COLUMN 1, COLUMN 24, " Sistema de Inventario de Repuestos", COLUMN 89, today using "dd/mm/yy" PRINT COLUMN 33, "Ranking de Uso de Repuestos ", nombre_rk, COLUMN 92, hora PRINT COLUMN 34, "Del ", datos_cons.fech_in USING "dd/mm/yy", " al ", datos_cons.fech_fi USING "dd/mm/yy" SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------" PRINT COLUMN 81, "Costo" PRINT COLUMN 1, "Ranking", COLUMN 12, "Repuesto", COLUMN 65, " Cantidad ", COLUMN 81, "Standard", COLUMN 101, "Valor" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------" IF t_existe is null THEN LET t_existe = 0 END IF IF t_valor is null THEN LET t_valor = 0 END IF SKIP 1 LINE ON EVERY ROW IF x.existe_act <> 0 THEN IF no_reg IS NULL THEN LET no_reg = 0 END IF LET no_reg = no_reg + 1 IF limite > 0 THEN IF no_reg <= limite THEN PRINT COLUMN 2, no_reg USING "###", COLUMN 10, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp CLIPPED, " ",x.unidad_med CLIPPED, COLUMN 60, x.existe_act USING "###,###,###.##", COLUMN 77, x.costo USING "#,###,###.##", COLUMN 92, x.valor USING "###,###,###.##" END IF ELSE PRINT COLUMN 2, no_reg USING "###", COLUMN 10, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp CLIPPED, " ",x.unidad_med CLIPPED, COLUMN 60, x.existe_act USING "###,###,###.##", COLUMN 77, x.costo USING "#,###,###.##", COLUMN 92, x.valor USING "###,###,###.##" END IF END IF ON LAST ROW PRINT comp_off { LET t_valor = SUM(x.existe_act * x.costo) PRINT COLUMN 82, "--------------" PRINT COLUMN 83, t_valor USING "((,(((,(##.##)" PRINT COLUMN 1, "==================================================", "==============================================" PRINT COLUMN 4, "Total Registros Impresos =", no_reg USING "<<<<" PRINT COLUMN 1, "==================================================", "==============================================" PRINT COLUMN 4, comp_off } END REPORT