{------------------------------------------------------------------------------ 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 CALL ui.Window.getCurrent().setText("Transacciones de Inventario por Departamento") 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.bodega, c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec FROM departamento,cod_mov,bodega,cod_n,cod_grupo,cod_tipo,cod_sec BEFORE CONSTRUCT CALL bodegas('1') CALL busca_departamento() CALL cmovimientos() 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 ", "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 selectOutputSimple() 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,descripcion_bodega 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 # LET descripcion_bodega = ui.ComboBox.forName('formonly.bodega').getTextOf() 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,descripcion_bodega 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 FUNCTION busca_departamento() DEFINE pdepartamento ui.combobox, kdepartamento SMALLINT, kdescripcion CHAR(30) LET pdepartamento = ui.combobox.forname("formonly.departamento") CALL pdepartamento.clear() DECLARE pagar CURSOR FOR SELECT departamento, nom_dpto FROM adtb00001 WHERE status_t IS NULL ORDER BY nom_dpto FOREACH pagar INTO kdepartamento, kdescripcion CALL pdepartamento.additem(kdepartamento, kdescripcion) END FOREACH END FUNCTION