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