Files
MBS/PROYECTOS/irdir/irprrp041.4gl
T

489 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
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