Files
DECOMARMOL/PROYECTOS COSTOS/irdir/irprrp008.4gl
T
2026-09-22 20:38:51 -04:00

340 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP008
OBJETIVO : Rreporte de Consumo Por Maquina
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Junio 03, 1993
MODIFICACION : Incluir costo estandar del repuesto y valor consumo.
PROGRAMADOR : Abner Montalvo.
FECHA REALIZACION : Febrero 13, 1998
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "decomarmol" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp008()
END MAIN
FUNCTION irprrp008()
##### Definicion de la variables a imprimir
DEFINE cons_maq RECORD
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha LIKE irtb00006.fecha,
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(7),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp008 FROM "irfmrp008"
DISPLAY FORM irfmrp008
DISPLAY "irprrp008" AT 4,3
DISPLAY "Consumo de Repuesto Por Maquina" AT 6,25
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
DISPLAY " "
at 19,14
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2
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 fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.maquina,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM maquina,cod_n,cod_grupo,cod_tipo,cod_sec
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
##### Selecionando la informacion requerida para la salida de
##### informacion
LET selec =
"SELECT a.maquina,b.nombre,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,SUM(a.cantidad_2*-1) ",
"FROM irtb00006 a,irtb00009 b,irtb00002 c ",
"WHERE 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 ",
" a.maquina = b.codigo AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio clipped,
" GROUP BY a.maquina,b.nombre,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.maquina,b.nombre,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,",
" c.descrip_esp,c.unidad_med,a.fecha ",
" ORDER BY a.maquina,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
LET selec1 =
"SELECT COUNT(*) ",
"FROM irtb00006 a,irtb00009 b,irtb00002 c ",
"WHERE 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 ",
" a.maquina = b.codigo AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cod_mov = 24 AND ",
criterio clipped
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1 USING fecha1,fecha2
FETCH busca1 INTO regi
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2
START REPORT rep_consu TO archivo
LET p_param = "S"
WHILE STATUS != NOTFOUND
FETCH accion INTO cons_maq.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
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"
LET cons_maq.codigo = cons_maq.cod_n USING "&",
cons_maq.cod_grupo USING "&",
cons_maq.cod_tipo USING "&&",
cons_maq.cod_sec USING "&&&"
LET cons_maq.costo_st = 0
SELECT costo_st INTO cons_maq.costo_st
FROM irtb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
LET cons_maq.valor = 0
LET cons_maq.valor = cons_maq.costo_st * cons_maq.cantidad_2
OUTPUT TO REPORT rep_consu(cons_maq.*)
END WHILE
FINISH REPORT rep_consu
RUN imprime
END FUNCTION
###### Proceso de generacion del reporte.
REPORT rep_consu(x)
DEFINE x RECORD
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
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 CHAR(30),
unidad_med CHAR(4),
fecha LIKE irtb00006.fecha,
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(7),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
DEFINE nombre_suplidor CHAR(30)
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE nombre CHAR(8),
und CHAR(3) ,
doble_on CHAR(2),
doble_off CHAR(2),
negrillas_on CHAR(2),
negrillas_off CHAR(2),
comprimido_on CHAR(2),
comprimido_off CHAR(2),
primera CHAR(1),
hora CHAR(5),
dia,mes smallint,
nom_dia,nom_mes CHAR(10)
OUTPUT
LEFT MARGIN 0
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comprimido_on = ASCII 15
LET comprimido_off = ASCII 18
LET hora = time
LET dia = WEEKDAY(x.fecha)
LET mes = MONTH(x.fecha)
LET primera = "S"
CALL busca_mes()
LET nom_mes = nombre_mes[mes]
LET dia = dia + 1
CALL busca_dia()
LET nom_dia = nombre_dia[dia]
PRINT COLUMN 1, comprimido_on, negrillas_on
PRINT COLUMN 1,"irprrp008",
COLUMN 17, p_companias.nombre,
COLUMN 70, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos",
COLUMN 70, today using "dd/mm/yyyy"
PRINT COLUMN 17, " Consumo de Repuestos Por Maquina ",
COLUMN 73, hora
PRINT COLUMN 1, "Del ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------",
"----"
PRINT COLUMN 1, "Repuesto",
COLUMN 60, "Fecha",
COLUMN 74, "Consumo",
COLUMN 81, " Costo St.",
COLUMN 96, " Valor"
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------",
"----"
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.maquina
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, x.maquina USING "&&&&"," ",x.nombre CLIPPED
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.codigo
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
x.descrip_esp CLIPPED," ",x.unidad_med CLIPPED;
ON EVERY ROW
PRINT COLUMN 60, x.fecha USING "dd/mm/yyyy",
COLUMN 70, x.cantidad_2 USING "###,##&.&&",
COLUMN 81, x.costo_st USING "###,###,##&.&&",
COLUMN 96, x.valor USING "###,###,##&.&&"
AFTER GROUP OF x.codigo
PRINT COLUMN 70, "----------",
COLUMN 96, "--------------"
PRINT COLUMN 70, GROUP SUM(x.cantidad_2) USING "###,##&.&&",
COLUMN 96, GROUP SUM(x.valor) USING "###,###,##&.&&"
SKIP 1 LINE
AFTER GROUP OF x.maquina
PRINT COLUMN 96, "--------------"
PRINT COLUMN 78, "Total Maquina RD$",
COLUMN 96, GROUP SUM(x.valor) USING "###,###,##&.&&"
SKIP 1 LINE
ON LAST ROW
PRINT COLUMN 96, "--------------"
PRINT COLUMN 82, " Total RD$ ",
COLUMN 96, SUM(x.valor) USING "###,###,##&.&&"
PRINT comprimido_off
END REPORT
##### Igualandon los dias de la semana a la descripcion del mismo
FUNCTION busca_dia()
LET nombre_dia[1] = "Domingo"
LET nombre_dia[2] = "Lunes"
LET nombre_dia[3] = "Martes"
LET nombre_dia[4] = "Miercoles"
LET nombre_dia[5] = "Jueves"
LET nombre_dia[6] = "Viernes"
LET nombre_dia[7] = "Sabado"
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
####### Igualando el numero del mes a la descripcion del mismo
FUNCTION busca_mes()
LET nombre_mes[1] = "Enero"
LET nombre_mes[2] = "Febrero"
LET nombre_mes[3] = "Marzo"
LET nombre_mes[4] = "Abril"
LET nombre_mes[5] = "Mayo"
LET nombre_mes[6] = "Junio"
LET nombre_mes[7] = "Julio"
LET nombre_mes[8] = "Agosto"
LET nombre_mes[9] = "Septiembre"
LET nombre_mes[10] = "Octubre"
LET nombre_mes[11] = "Noviembre"
LET nombre_mes[12] = "Diciembre"
RUN "type C:\\archivo > %USPRINT%" END FUNCTION