301 lines
10 KiB
Plaintext
301 lines
10 KiB
Plaintext
{------------------------------------------------------------------------------
|
|
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.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 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,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
|
|
|
|
|
|
|