{ ------------------------------------------------------------------------------- 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) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprrp004() END MAIN FUNCTION ipprrp004() DEFINE select_ac STRING, idx smallint DEFINE acumulado RECORD orden INT, 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), unidad_med LIKE iptb00002.unidad_med, consumo DECIMAL(12,5) END RECORD OPEN WINDOW w1 WITH FORM "ipfmrp004_1" INPUT acumulado.orden FROM num_orden AFTER INPUT IF INT_FLAG THEN CALL msg(2) LET INT_FLAG =FALSE RETURN END IF IF acumulado.orden IS NULL THEN CALL msg(16) NEXT FIELD num_orden END IF END INPUT CONSTRUCT criterio ON c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec LET select_ac = "SELECT c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,b.descrip_esp,b.unidad_med, ", " SUM(c.cantidad_2) ", "FROM iptb00006 c,iptb00002 b ", "WHERE c.cod_mov in (20,70,71,84,81) and c.num_oc =? and ",criterio CLIPPED, " and 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.status_t is NULL ", "GROUP BY c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,b.descrip_esp,b.unidad_med ", "ORDER BY c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec " CALL seleccionarsalida() RETURNING r_output PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING acumulado.orden LET idx=1 FOREACH actual INTO acumulado.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF idx=1 THEN CALL configureoutput(r_output) RETURNING handler START REPORT opera TO XML HANDLER HANDLER END IF # Buscando Los Costos de Los Materiales OUTPUT TO REPORT opera(acumulado.*) LET idx=idx+1 END FOREACH IF idx > 1 THEN FINISH REPORT opera ELSE CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESA CONDICION","INFO") END IF END FUNCTION REPORT opera(x) DEFINE x RECORD orden INT, 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), unidad_med LIKE iptb00002.unidad_med, consumo DECIMAL(12,5) END RECORD DEFINE l SMALLINT DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 PAGE LENGTH 100 ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec FORMAT PAGE HEADER LET hora = TIME LET l = (141 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "ipprrp004_1", 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, "Produccion Ordenes", COLUMN 137, hora PRINT COLUMN 54,"ORDEN: ",x.orden USING "&&&&&&" LET l = (141 - LENGTH(nombre_v)) / 2 SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 1, "Producto", COLUMN 55, "Cantidad" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" ON EVERY ROW 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 "###,###.###" END REPORT