Files
jpegueroandClaude Sonnet 5 b6085d4140 Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
Instruccion de Johnny: todos los directorios de fuentes de inventario
deben migrarse de la carpeta temporal PROYECTOS a la carpeta real
PROYECTO, ya que PROYECTOS sera eliminada.

Se elimino tambien un archivo suelto sin relacion llamado "ipdir"
que existia en PROYECTO (del commit inicial) y bloqueaba el nombre
de la carpeta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:29:01 -04:00

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