{ ------------------------------------------------------------------------------- PROGRAMA : INPRRP011 OBJETIVO : OPERACIONES POR TIPO DE MOVIMIENTO PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Octubre 01, 1992 MODIFICACION : Rompimiento Por Tipo de Movimiento, Con Todos los movimientos, Salir un movimiento por pagina. FECHA MODIFICACION : Octubre 22, 1992. MODIFICADO POR : Juan Fco. Soto. ------------------------------------------------------------------------------- } GLOBALS "inprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL inprrp011() END MAIN FUNCTION inprrp011() DEFINE idx_ac,ano,idx_a,idx_c SMALLINT DEFINE ano_act CHAR(4) DEFINE acumulado_a RECORD cod_mov LIKE intb00005.cod_mov, cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, consumo LIKE intb00006.cantidad_2 END RECORD DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, mes CHAR(2), costo LIKE intb00013.costo_st END RECORD DEFINE acumulado RECORD cod_mov LIKE intb00006.cod_mov, depto_a SMALLINT, 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, descrip_mov LIKE intb00005.descrip_mov, consumo DECIMAL(10,2), costo LIKE intb00013.costo_st, bodega SMALLINT, titulo_bodega VARCHAR(100) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmrp011 FROM "infmrp011" DISPLAY FORM infmrp011 CALL pantalla() DISPLAY "inprrp011" AT 4,3 DISPLAY "Operaciones Por Movimientos" AT 6,26 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi 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 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,c.bodega FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec,bodega BEFORE CONSTRUCT CALL bodegas('1') AFTER CONSTRUCT IF int_flag THEN EXIT PROGRAM END IF EXIT CONSTRUCT END CONSTRUCT LET ano = YEAR(datos_cons.fech_in) LET selec = "SELECT c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ", " a.descrip_esp,a.unidad_med,b.descrip_mov,SUM(c.cantidad_2),AVG(d.costo_st),c.bodega,f.descripcion ", " FROM intb00005 b,intb00006 c inner join intb00009 f on f.cod_bodega = c.bodega,intb00001 a left outer join intb00013 d on ", " a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ", " a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec and d.ano = ? ", " WHERE 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_mov = b.cod_mov AND ", criterio clipped, "and ", " c.fecha between ? and ? and c.status_t is NULL ", " GROUP BY c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ", " a.descrip_esp,a.unidad_med,b.descrip_mov,c.bodega,f.descripcion ORDER BY c.bodega,c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec " DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DISPLAY " " AT 19,14 LET ano_act = year(datos_cons.fech_fi) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING handler START REPORT opera TO XML HANDLER HANDLER PREPARE busca_p FROM selec DECLARE periodo SCROLL CURSOR FOR busca_p OPEN periodo using ano_act,datos_cons.fech_in,datos_cons.fech_fi FOREACH periodo INTO acumulado.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF OUTPUT TO REPORT opera(acumulado.*) END FOREACH FINISH REPORT opera CLEAR SCREEN END FUNCTION REPORT opera(x) DEFINE x RECORD cod_mov LIKE intb00006.cod_mov, depto_a SMALLINT, 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, descrip_mov LIKE intb00005.descrip_mov, consumo DECIMAL(10,2), costo LIKE intb00013.costo_st, bodega SMALLINT, titulo_bodega VARCHAR(100) END RECORD DEFINE c_ano1 char(4), nombre_d CHAR(30) 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(3) DEFINE doce CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE total_p,total_m DECIMAL(12,4) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 100 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 comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27,ASCII 77 LET normal = ASCII 27, ASCII 80} LET hora = time LET lj = (91 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on PRINT COLUMN 1, "inprrp011", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 84, "Pag. ",pageno using "###" PRINT COLUMN 23, " Sistema de Inventario de Materia Prima", COLUMN 84, today using "dd/mm/yyyy" PRINT COLUMN 23, " Operacion por Movimiento", COLUMN 87, 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 66, "Costo" PRINT COLUMN 4, "Movimiento", COLUMN 51, "Cantidad", COLUMN 66, "Standard", COLUMN 87, "Total" PRINT COLUMN 1, "--------------------------------------------------", "-----------------------------------------" BEFORE GROUP OF x.bodega PRINT COLUMN 1,"BODEGA: ",x.titulo_bodega BEFORE GROUP OF x.cod_mov LET x.descrip_mov = NULL SELECT descrip_mov INTO x.descrip_mov FROM intb00005 WHERE cod_mov = x.cod_mov IF status = notfound THEN LET status = 0 END IF PRINT COLUMN 1, x.cod_mov using "##", COLUMN 7, x.descrip_mov SKIP 1 LINE LET total_m = 0 BEFORE GROUP OF x.depto_a SELECT a.nom_dpto INTO nombre_d FROM adtb00001 a WHERE a.departamento = x.depto_a SKIP 1 LINE PRINT negrillas_on,"Departamento: ",nombre_d PRINT negrillas_off ON EVERY ROW # IF x.consumo IS NOT NULL THEN LET total_p = x.costo * x.consumo LET total_m = total_m + total_p PRINT COLUMN 1, x.cod_n USING "&","-", COLUMN 3, x.cod_grupo USING "&","-", COLUMN 5, x.cod_tipo USING "&&","-", COLUMN 8, x.cod_sec USING "&&&", COLUMN 14, x.descrip_esp[1,30], COLUMN 35, x.unidad_med, COLUMN 40, x.consumo USING "##,###,###.##", COLUMN 57, x.costo USING "#,###,###.####", COLUMN 79, total_p USING "##,###,###.##" # END IF AFTER GROUP OF x.bodega PRINT COLUMN 79, "-------------" PRINT COLUMN 79, GROUP SUM(x.consumo*x.costo) USING "###,###,###.##" AFTER GROUP OF x.depto_a PRINT COLUMN 79, "-------------" PRINT COLUMN 79, GROUP SUM(x.consumo*x.costo) USING "###,###,###.##" AFTER GROUP OF x.cod_mov PRINT COLUMN 79, "-------------" PRINT COLUMN 63, "Total ---->", COLUMN 79, GROUP SUM(x.consumo*x.costo) USING "##,###,###.##" SKIP TO TOP OF PAGE ON LAST ROW PRINT COLUMN 27, "Total Consumo", "===============", COLUMN 79, "============" PRINT COLUMN 40, SUM(x.consumo) USING "###,###,###.###", COLUMN 79, SUM(x.consumo*x.costo) USING "##,###,###.##" PRINT normal END REPORT