Files
MBS/PROYECTOS/isdir/isprrp011.4gl
T

252 lines
8.1 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ISPRRP011
OBJETIVO : Acumulado por Tipo de Movimiento
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Octubre 21, 1993
-------------------------------------------------------------------------------
}
GLOBALS "isprgb000.4gl"
FUNCTION isprrp011()
DEFINE salir CHAR(1)
DEFINE select_ac,select_ant,select_p CHAR(1000)
DEFINE idx_ac,ano,idx_a,idx_c SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE fecha_ini_per CHAR(8)
DEFINE acumulado_a RECORD
cod_mov LIKE istb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE istb00006.cantidad_2
END RECORD
DEFINE acumulado_ac RECORD
cod_mov LIKE istb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE istb00006.cantidad_2
END RECORD
DEFINE costos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
mes CHAR(2),
costo LIKE istb00013.costo_st
END RECORD
DEFINE acumulado 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,
fecha DATE,
cod_mov LIKE istb00006.cod_mov,
base LIKE istb00002.base,
costo LIKE istb00013.costo_st,
consumo DECIMAL(10,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM isfmrp011 FROM "isfmrp011"
DISPLAY FORM isfmrp011
CALL pantalla()
DISPLAY "isprrp011" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Operaciones Por Movimientos" AT 6,26 ATTRIBUTE(BLACK)
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
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
LET c_ano = YEAR(datos_cons.fech_fi) USING "&&&&"
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET select_ac =
"SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,b.descrip_esp, ",
" b.unidad_med,c.fecha,c.cod_mov,a.base,d.costo_st,c.cantidad_2 ",
"FROM istb00006 c,istb00002 a,intb00001 b,OUTER istb00013 d ",
"WHERE c.cod_n=b.cod_n AND c.cod_grupo=b.cod_grupo AND c.cod_tipo=b.cod_tipo ",
" AND c.cod_sec=b.cod_sec AND c.cod_n=a.cod_n AND c.cod_grupo=a.cod_grupo ",
" AND c.cod_tipo=a.cod_tipo AND c.cod_sec=a.cod_sec AND c.cod_n=d.cod_n AND ",
" c.cod_grupo = d.cod_grupo AND c.cod_tipo = d.cod_tipo AND ",
" c.cod_sec=d.cod_sec AND d.mes_fin=12 AND d.ano=? AND ",criterio clipped,
" and c.fecha BETWEEN ? AND ? and c.status_t is NULL and c.cod_mov < 99"
DISPLAY "<< Estoy Buscando Informacion... Espere Por Favor "
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_ant FROM select_ac
DECLARE actual SCROLL CURSOR FOR busca_ant
OPEN actual USING c_ano,datos_cons.fech_in,datos_cons.fech_fi
DISPLAY " "
AT 19,14
LET ano_act = year(datos_cons.fech_fi)
START REPORT opera TO archivo
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH actual INTO acumulado.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF acumulado.base IS NULL THEN
LET acumulado.base = 1
END IF
IF acumulado.costo IS NULL THEN
LET acumulado.costo = 0
END IF
OUTPUT TO REPORT opera(acumulado.*)
END FOREACH
FINISH REPORT opera
RUN imprime
CLEAR SCREEN
END FUNCTION
REPORT opera(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,
fecha DATE,
cod_mov LIKE istb00006.cod_mov,
base LIKE istb00002.base,
costo LIKE istb00013.costo_st,
consumo DECIMAL(10,2)
END RECORD
DEFINE descrip_mov CHAR(30)
DEFINE c_ano1 char(4)
DEFINE hora CHAR(5)
DEFINE total_p,total_m DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.cod_mov,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha
FORMAT
PAGE HEADER
LET hora = time
PRINT letras.doce
PRINT COLUMN 1, "isprrp011",
COLUMN 28, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 93, "Pag. ",
COLUMN 98, pageno using "###"
PRINT COLUMN 31, "Sistema de Inventario de Suministros",
COLUMN 93, today using "dd/mm/yyyy"
PRINT COLUMN 33, "Operacion por Tipo de Movimiento",
COLUMN 96, hora
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 63, "Costo"
PRINT COLUMN 1, "Suministro",
COLUMN 50, "Cantidad",
COLUMN 63, "Standard",
COLUMN 86, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
BEFORE GROUP OF x.cod_mov
SELECT a.descrip_mov INTO descrip_mov FROM istb00005 a
WHERE a.cod_mov = x.cod_mov
PRINT COLUMN 1, x.cod_mov using "##"," ",descrip_mov
SKIP 1 LINE
PRINT COLUMN 4, "Suministro Oficina"
LET total_m = 0
AFTER GROUP OF x.cod_sec
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 CLIPPED," ",
COLUMN 46, GROUP SUM(x.consumo/x.base) USING "##,###,###.##",
COLUMN 60, GROUP AVG(x.costo) USING "#,###,###.####",
COLUMN 79, GROUP SUM(x.consumo/x.base)* GROUP AVG(x.costo)
USING "##,###,###.##"
AFTER GROUP OF x.cod_mov
PRINT COLUMN 79, "-------------"
PRINT COLUMN 63, "Total ---->",
COLUMN 79, GROUP SUM(x.consumo/x.base)* GROUP AVG(x.costo)
USING "##,###,###.##"
SKIP TO TOP OF PAGE
END REPORT