{------------------------------------------------------------------------------ PROGRAMA : ipprrp048 OBJETIVO : Operacion por Tipo de Movimiento detallado (SIN COSTOS) PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Febrero 1997 MODIFICADO POR : VALENTIN RODRIGUEZ FECHA MODIFICACION : ABRIL 2019 ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" --DEFINE departamento RECORD LIKE adtb00001.* --GLOBALS "coprgb000.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 ipprrp048() END MAIN FUNCTION ipprrp048() DEFINE select_ac STRING DEFINE ano_act CHAR(4) DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER, -- TRUE/FALSE, to set preview option criterio STRING DEFINE acumulado_ac RECORD departamento VARCHAR(40), cod_mov LIKE iptb00005.cod_mov, cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, factor_conv DECIMAL(12,5), factor_ad DECIMAL(12,5), consumo FLOAT 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), factor_conv DECIMAL(12,5), factor_ad DECIMAL(12,5), --material DECIMAL(12,5), --labor DECIMAL(12,5), --gastos DECIMAL(12,5), descripcion_origen VARCHAR(30), departamento VARCHAR(40), mtsAdicionales DECIMAL(12,5) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp048 FROM "ipfmrp048" DISPLAY FORM ipfmrp048 DISPLAY "ipprrp048" AT 4,3 DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6,18 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 e.departamento, c.cod_mov, c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec FROM departamento,cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec BEFORE CONSTRUCT CALL busca_departamento() 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 isnull('('+cast(c.departamento as char(10))+')'+e.nom_dpto, 'NO DEPARTAMENTO'), c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, f.factor_conv,ISNULL(f.factor_ad,0), ", "SUM(c.cantidad_2) ", "FROM iptb00006 c ", "left join adtb00001 e on c.departamento = e.departamento ", "inner join iptb00001 f on c.cod_n = f.cod_n and c.cod_grupo = f.cod_grupo and c.cod_tipo = f.cod_tipo and c.cod_sec = f.cod_sec", " WHERE ",criterio clipped," and c.fecha between ? and ? ", " AND c.status_t is NULL and c.cod_n not in (25,15,5) ", "GROUP BY c.departamento,e.nom_dpto, c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,f.factor_conv,f.factor_ad ", # "HAVING SUM(c.cantidad_2) <> 0 ", "ORDER BY c.cod_mov, e.nom_dpto,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) PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi LET r_filename ="ipprrp048.4rp" LET idx = 1 FOREACH actual INTO acumulado_ac.* IF idx = 1 THEN IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview=1 CALL seleccionarsalida() RETURNING r_output -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF LET idx = 2 START REPORT opera TO XML HANDLER HANDLER END IF 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.factor_conv = acumulado_ac.factor_conv LET acumulado.factor_ad = acumulado_ac.factor_ad LET acumulado.cod_mov = acumulado_ac.cod_mov LET acumulado.mtsAdicionales = acumulado.factor_ad * acumulado.consumo # 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 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF 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 LET acumulado.departamento = acumulado_ac.departamento OUTPUT TO REPORT opera(acumulado.*) END FOREACH IF idx > 1 THEN FINISH REPORT opera ELSE CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO") 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(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), factor_conv DECIMAL(12,5), factor_ad DECIMAL(12,5), descripcion_origen VARCHAR(30), departamento VARCHAR(40), mtsAdicionales DECIMAL(12,5) END RECORD, titulo_mov VARCHAR(50), rango_fecha CHAR(50), fecha_reporte CHAR(15), producto VARCHAR(150), t_consumo, t_m_consumo, t_t_consumo,t_mtsAdicionales, t_t_mtsAdicionales, t_m_mtsAdicionales DECIMAL (12,5) FORMAT BEFORE GROUP OF x.cod_mov SELECT descrip_mov INTO x.descrip_mov FROM iptb00005 WHERE cod_mov = x.cod_mov LET titulo_mov = "Movimiento: ",x.cod_mov," ",x.descrip_mov CLIPPED PRINTX titulo_mov BEFORE GROUP OF x.departamento PRINTX x.departamento ON EVERY ROW LET rango_fecha = "Desde ",datos_cons.fech_in using "dd/mm/yyyy", "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy" LET fecha_reporte = TODAY LET producto = x.cod_n USING "&&&&&","-",x.cod_grupo USING "&&&&&","-", x.cod_tipo USING "&&&&&","-",x.cod_sec USING "&&&&&"," ", x.descrip_esp PRINTX producto, x.consumo, p_companias.nombre, rango_fecha, fecha_reporte, x.unidad_med, x.factor_conv, x.factor_ad, x.mtsAdicionales AFTER GROUP OF x.departamento LET t_consumo = GROUP SUM(x.consumo) LET t_mtsAdicionales = GROUP SUM(x.mtsAdicionales) PRINTX t_consumo,t_mtsAdicionales AFTER GROUP OF x.cod_mov LET t_m_consumo = GROUP SUM(x.consumo) LET t_m_mtsAdicionales =GROUP SUM(x.mtsAdicionales) PRINTX t_m_consumo,t_m_mtsAdicionales ON LAST ROW LET t_t_consumo = SUM(x.consumo) LET t_t_mtsAdicionales = SUM(x.mtsAdicionales) PRINTX t_t_consumo,t_t_mtsAdicionales END REPORT