{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP004 OBJETIVO : Operacion por Tipo de Movimiento detallado para enviar por correo PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Septiembre 2015 ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE nombre_v CHAR(20) DEFINE ventas,salir CHAR(1) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "decomarmol" 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(50), 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 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 c.cod_mov in (12,13,44) and c.fecha = ? ", " 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 " LET ano_act = year(datos_cons.fech_fi) CALL configureoutput("PDF") RETURNING handler START REPORT opera TO XML HANDLER HANDLER LET datos_cons.fech_fi=TODAY PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING 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 LET acumulado.descripcion_bodega = acumulado_ac.descripcion_bodega SELECT c.material,c.labor,c.gastos 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 # 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 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(50), 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 2 ORDER BY x.cod_mov,x.cod_cia,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec FORMAT PAGE HEADER 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[1,50], COLUMN 56, x.consumo USING "###,###.###", COLUMN 68, x.material using "##,###.###", COLUMN 81, x.consumo*x.material USING "#,###,###.###", COLUMN 95, x.labor using "##,###.###", COLUMN 106, x.consumo*x.labor USING "#,###,###.###", COLUMN 120, x.gastos using "##,###.###", COLUMN 131, x.consumo * x.gastos using "#,###,###.###", COLUMN 145, 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 106, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###", COLUMN 131, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###", COLUMN 145, 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 106, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###", COLUMN 131, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###", COLUMN 145, tt_total_costo_st USING "##,###,###.##" PRINT COLUMN 145, "=============" PRINT negrillas_off SKIP TO TOP OF PAGE END REPORT