{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP004 OBJETIVO : Operacion por Tipo de Movimiento detallado PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Febrero 1997 ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE nombre_v CHAR(20) DEFINE ventas,salir CHAR(1), costos VARCHAR(2), cantidad_linea SMALLINT 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 ipprrp004() END MAIN FUNCTION ipprrp004() DEFINE select_ac STRING DEFINE ano_act CHAR(4) DEFINE acumulado_ac RECORD cod_mov LIKE iptb00005.cod_mov, cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, consumo DECIMAL(12,5), descripcion_bodega VARCHAR(30) END RECORD DEFINE acumulado RECORD cod_cia LIKE iptb00002.cod_cia, cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(100), descrip_ing LIKE iptb00002.descrip_ing, unidad_med LIKE iptb00002.unidad_med, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, consumo DECIMAL(12,5), material DECIMAL(12,3), labor DECIMAL(12,3), gastos DECIMAL(12,3), descripcion_bodega VARCHAR(30), descripcion_origen VARCHAR(30) END RECORD, sinCosto CHAR(2) # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp004 FROM "ipfmrp004" DISPLAY FORM ipfmrp004 DISPLAY "ipprrp004" AT 4,3 DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6,18 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME ventas,datos_cons.fech_in,datos_cons.fech_fi,sinCosto,costos AFTER FIELD ventas IF ventas = "1" THEN LET nombre_v = "LOCAL" ELSE LET nombre_v = "EXPORTACION" END IF DISPLAY BY NAME nombre_v ATTRIBUTE (BOLD) 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 LET k1 = '1' CALL bodegas(k1) AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF END CONSTRUCT LET select_ac = "SELECT c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ", " SUM(c.cantidad_2)", "FROM iptb00006 c ", "WHERE ",criterio clipped," and c.fecha between ? and ? ", " AND c.status_t is NULL ", "GROUP BY c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec ", "HAVING SUM(c.cantidad_2) <> 0 ", "ORDER BY c.cod_mov,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) 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 { LET opt1 = fgl_winquestion("Atencion","Desea Reporte por Pantalla?", "no","yes|no","question",0) IF opt1 = "yes" THEN } LET cantidad_linea= 100 CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT opera TO XML HANDLER handler { ELSE LET cantidad_linea = 66 START REPORT opera TO archivo END IF } PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi FOREACH actual INTO acumulado_ac.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET acumulado.consumo = acumulado_ac.consumo LET acumulado.cod_mov = acumulado_ac.cod_mov # Buscando Los Costos de Los Materiales LET acumulado.material = 0 LET acumulado.labor = 0 LET acumulado.gastos = 0 IF costos ="SI" THEN LET acumulado.descripcion_bodega = acumulado_ac.descripcion_bodega SELECT ISNULL(c.material,0),ISNULL(c.labor,0),ISNULL(c.gastos,0) INTO acumulado.material,acumulado.labor,acumulado.gastos FROM iptb00004 c WHERE c.ventas = ventas and c.ano = ano_act and c.mes_ini = "01" and c.mes_fin = "12" and c.cod_n = acumulado_ac.cod_n AND c.cod_grupo = acumulado_ac.cod_grupo AND c.cod_tipo = acumulado_ac.cod_tipo AND c.cod_Sec = acumulado_ac.cod_sec AND c.status_t is NULL END IF IF sinCosto = "SI" THEN IF acumulado.material+acumulado.labor+acumulado.gastos <> 0 THEN CONTINUE FOREACH END IF END IF # Busqueda del Material Con su descripcion y unidad de medida LET acumulado.descrip_esp = null LET acumulado.unidad_med = null LET acumulado.cod_cia = null SELECT a.cod_cia,a.descrip_esp,a.unidad_med,b.descripcion INTO acumulado.cod_cia,acumulado.descrip_esp,acumulado.unidad_med,acumulado.descripcion_origen FROM iptb00002 a,iptb00022 b WHERE a.cod_n = acumulado_ac.cod_n AND a.cod_grupo = acumulado_ac.cod_grupo AND a.cod_tipo = acumulado_ac.cod_tipo AND a.cod_Sec = acumulado_ac.cod_sec AND a.cod_cia = b.cod_cia LET acumulado.cod_n = acumulado_ac.cod_n LET acumulado.cod_grupo = acumulado_ac.cod_grupo LET acumulado.cod_tipo = acumulado_ac.cod_tipo LET acumulado.cod_sec = acumulado_ac.cod_sec OUTPUT TO REPORT opera(acumulado.*) END FOREACH FINISH REPORT opera LET cmd = null LET cmd ='copy ',archivo CLIPPED,' ', FGL_GETENV("FGLSPOOL")||"\\IPRP04.txt" RUN cmd CALL ui.Interface.frontCall("standard","getenv", ["FILEREPORTE"], [dcmd] ) LET cmd= FGL_GETENV("FGLSPOOL")||"\\IPRP04.txt" CALL fgl_putfile(cmd,dcmd) IF opt1 <> "yes" then LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?", "yes","yes|no","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" THEN RUN imprime END IF END IF END FUNCTION REPORT opera(x) DEFINE x RECORD cod_cia LIKE iptb00002.cod_cia, cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(100), descrip_ing LIKE iptb00002.descrip_ing, unidad_med LIKE iptb00002.unidad_med, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, consumo DECIMAL(12,5), material DECIMAL(12,3), labor DECIMAL(12,3), gastos DECIMAL(12,3), descripcion_bodega VARCHAR(30), descripcion_origen VARCHAR(30) END RECORD DEFINE l SMALLINT DEFINE c_ano1 char(4) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(2) DEFINE doce CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE total_p,total_m DECIMAL(12,2) DEFINE total_costo_st,t_t_total,t_t_t_total, tt_total_costo_st,t_total_costo_st,t_cantidad DECIMAL (12,2), descrip_nivel CHAR(15) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 RIGHT MARGIN 0 PAGE LENGTH cantidad_linea ORDER BY x.cod_mov,x.cod_cia,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec FORMAT PAGE HEADER { IF opt1 <> "yes" THEN 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 27,ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 END IF} LET hora = time PRINT doce,comp_on LET l = (141 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "ipprrp004", COLUMN l, p_companias.nombre CLIPPED, COLUMN 134, "Pag. ",pageno using "###" PRINT COLUMN 54, "Sistema de Inventario de Productos", COLUMN 134, today using "dd/mm/yyyy" PRINT COLUMN 47, "Operacion por Movimiento Detallado y Valorizado", COLUMN 137, hora LET l = (141 - LENGTH(nombre_v)) / 2 IF ventas = "1" THEN PRINT COLUMN l, nombre_v ELSE PRINT COLUMN l, nombre_v END IF 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 80, "Valor", COLUMN 109, "Valor", COLUMN 131, "Valor", COLUMN 147, "Valor" PRINT COLUMN 1, "Producto", COLUMN 55, "Cantidad", COLUMN 69, "Material", COLUMN 80, "Material", COLUMN 94, "Labor", COLUMN 109, "Labor", COLUMN 119, "Gasto", COLUMN 131, "Gasto", COLUMN 147, "Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------------------------------------------", "----------" BEFORE GROUP OF x.cod_mov LET t_cantidad = 0 LET t_t_t_total = 0 LET total_costo_st = 0 LET tt_total_costo_st = 0 LET t_t_total = 0 SELECT descrip_mov INTO x.descrip_mov FROM iptb00005 WHERE cod_mov = x.cod_mov PRINT COLUMN 1, negrillas_on,"Movimiento: ",x.cod_mov using "&&", " ",x.descrip_mov CLIPPED,negrillas_off SKIP 1 LINE LET total_m = 0 BEFORE GROUP OF x.cod_cia PRINT x.descripcion_origen BEFORE GROUP OF x.cod_n LET t_total_costo_st = 0 ON EVERY ROW IF x.consumo IS NOT NULL THEN IF x.material IS NULL THEN LET x.material = 0 END IF IF x.labor IS NULL THEN LET x.labor = 0 END IF IF x.gastos IS NULL THEN LET x.gastos = 0 END IF LET t_cantidad = t_cantidad + x.consumo LET total_costo_st = 0 LET total_costo_st = (x.material+x.labor+x.gastos) * x.consumo LET t_total_costo_st = t_total_costo_st + total_costo_st PRINT COLUMN 1, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-", x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&"," ", x.descrip_esp WORDWRAP RIGHT MARGIN 70, COLUMN 56, x.consumo USING "##,###.###", COLUMN 67, x.material using "##,###.###", COLUMN 81, x.consumo*x.material USING "#,###,###.###", COLUMN 94, x.labor using "#,###.###", COLUMN 105, x.consumo*x.labor USING "#,###,###.###", COLUMN 119, x.gastos using "#,###.###", COLUMN 130, x.consumo * x.gastos using "#,###,###.###", COLUMN 144, total_costo_st using "##,###,###.##" END IF AFTER GROUP OF x.cod_n LET descrip_nivel = NULL SELECT a.producto INTO descrip_nivel FROM iptb00020 a WHERE a.cod_n = x.cod_n PRINT negrillas_on PRINT COLUMN 56, "-------------", COLUMN 81, "-------------", COLUMN 106, "-------------", COLUMN 131, "-------------", COLUMN 145, "-------------" PRINT COLUMN 3, "Total ",descrip_nivel CLIPPED,"--->", COLUMN 56, GROUP SUM(x.consumo) USING "##,###,###.###", COLUMN 81, GROUP SUM(x.consumo*x.material) USING "##,###,###.###", COLUMN 105, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###", COLUMN 130, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###", COLUMN 144, t_total_costo_st USING "###,###,###.##" SKIP 1 LINE LET tt_total_costo_st = t_total_costo_st + tt_total_costo_st PRINT negrillas_off AFTER GROUP OF x.cod_mov PRINT negrillas_on PRINT COLUMN 56, "-------------", COLUMN 81, "-------------", COLUMN 106, "-------------", COLUMN 131, "-------------", COLUMN 145, "-------------" PRINT COLUMN 3, "Total ",x.descrip_mov,"---->", COLUMN 56, GROUP SUM(x.consumo) USING "##,###,###.###", COLUMN 81, GROUP SUM(x.consumo*x.material) USING "###,###,###.###", COLUMN 105, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###", COLUMN 130, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###", COLUMN 144, tt_total_costo_st USING "##,###,###.##" PRINT COLUMN 144, "=============" PRINT negrillas_off SKIP TO TOP OF PAGE END REPORT