{ ------------------------------------------------------------------------------- PROGRAMA : ISPRRP010 OBJETIVO : Acumulado por Tipo de Movimiento PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Octubre 21, 1993 ------------------------------------------------------------------------------- } GLOBALS "isprgb000.4gl" FUNCTION isprrp010() 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 acumulado_m 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 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, base LIKE intb00002.base, cod_mov LIKE istb00006.cod_mov, fecha DATE, consumo DECIMAL(10,2) END RECORD WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM isfmrp010 FROM "isfmrp010" DISPLAY FORM isfmrp010 CALL pantalla() DISPLAY "isprrp010" AT 4,3 ATTRIBUTE(RED) DISPLAY "Acumulado por Tipo de Movimiento" AT 6,24 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 ano_act = 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 ano = year(datos_cons.fech_fi) LET ano = ano - 1 LET c_ano = ano USING "&&&&" LET select_ac = "SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,b.descrip_esp, ", " b.unidad_med,a.base,c.cod_mov,c.fecha,c.cantidad_2 ", "FROM istb00006 c,istb00002 a,intb00001 b ", "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 = b.cod_tipo AND c.cod_sec = a.cod_sec AND ", criterio clipped," AND c.fecha <= ? AND c.cod_mov != 99 AND ", " c.status_t is null " DISPLAY "<< Buscando Informacion ... Espere Por Favor " AT 19,14 PREPARE busca_act FROM select_ac DECLARE actual CURSOR FOR busca_act OPEN actual USING datos_cons.fech_fi DISPLAY " " AT 19,14 START REPORT clase TO archivo DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 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.consumo IS NULL THEN LET acumulado.consumo = 0 END IF IF acumulado.base IS NULL THEN LET acumulado.base = 1 END IF OUTPUT TO REPORT clase(acumulado.*,c_ano) END FOREACH FINISH REPORT clase RUN imprime CLEAR SCREEN END FUNCTION REPORT clase(x,c_ano1) 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, base LIKE intb00002.base, cod_mov LIKE istb00006.cod_mov, fecha DATE, consumo DECIMAL(10,2) END RECORD DEFINE descrip_mov CHAR(30) DEFINE c_ano1 char(4) DEFINE hora CHAR(5) 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 2, "isprrp010", 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 33, "Sistema de Inventario de Suministro", COLUMN 93, today using "dd/mm/yyyy" PRINT COLUMN 35, "Acumulado 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 65, "Acumulado", COLUMN 79, "Acumulado Ano", COLUMN 93, "Porciento de" PRINT COLUMN 1, "Suministros", COLUMN 50, "Periodo", COLUMN 65, "Al ",datos_cons.fech_fi using "dd/mm/yyyy", COLUMN 79, "Anterior ",c_ano1, COLUMN 93, "Variacion" 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, "Movimiento", COLUMN 13, x.cod_mov using "<<", COLUMN 17, "Descripcion", COLUMN 30, descrip_mov skip 1 line # ON EVERY ROW 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 47, GROUP SUM(x.consumo/x.base) WHERE x.fecha >= datos_cons.fech_in AND x.fecha <= datos_cons.fech_fi USING "##,###,###.##", COLUMN 61, GROUP SUM(x.consumo/x.base) USING "##,###,###.##", COLUMN 75, GROUP SUM(x.consumo/x.base) WHERE YEAR(x.fecha) = (c_ano1) USING "##,###,###.##", COLUMN 89, ((GROUP SUM(x.consumo/x.base) WHERE x.fecha >= datos_cons.fech_in AND x.fecha <= datos_cons.fech_fi)/ (GROUP SUM(x.consumo/x.base) WHERE YEAR(x.fecha) = (c_ano1))-1)*100 USING "#,###.##"," %" AFTER GROUP OF x.cod_mov SKIP TO TOP OF PAGE ON LAST ROW SKIP 2 LINES PRINT COLUMN 1, "==================================================", "==================================================", "===============================" PRINT COLUMN 4, "Total Registros Impresos =", count(*) USING "<<<<" PRINT COLUMN 4, ASCII 27, ASCII 80 END REPORT