Files
MBS/PROYECTO/ipdir/ipprrp051.4gl
T
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

384 lines
12 KiB
Plaintext

{------------------------------------------------------------------------------
PROGRAMA : ipprrp051 (copia del 48)
OBJETIVO : Operacion por Tipo de Movimiento detallado (SIN COSTOS)
con su ubicacion
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"
DEFINE location DYNAMIC ARRAY OF RECORD
seccion INT,
tramo INT,
fila INT,
posicion INT
END RECORD
DEFINE bodega, i INT
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 ipprrp051()
END MAIN
FUNCTION ipprrp051()
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 ipfmrp051 FROM "ipfmrp051"
DISPLAY FORM ipfmrp051
DISPLAY "ipprrp051" 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), c.bodega ",
"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, c.bodega ",
# "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 = "ipprrp051.4rp"
LET idx = 1
FOREACH actual INTO acumulado_ac.*, bodega
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
DISPLAY acumulado.departamento
INITIALIZE location TO NULL
IF bodega IS NOT NULL THEN
DECLARE buscar CURSOR FOR
SELECT cod_seccion, cod_tramo, cod_fila, cod_pos FROM iptb00062
WHERE cod_n = acumulado.cod_n AND cod_grupo = acumulado.cod_grupo AND
cod_tipo = acumulado.cod_tipo AND cod_sec = acumulado.cod_sec AND bodega = bodega
AND cod_mov = acumulado.cod_mov AND status_t IS NULL group by cod_seccion, cod_tramo, cod_fila, cod_pos
LET i = 1
FOREACH buscar INTO location[i].seccion, location[i].tramo, location[i].fila,
location[i].posicion
LET i = i + 1
END FOREACH
END IF
OUTPUT TO REPORT opera(acumulado.*, location)
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, y)
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)
DEFINE y DYNAMIC ARRAY OF RECORD
seccion INT,
tramo INT,
fila INT,
posicion INT
END RECORD
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
FOR i = 1 TO i <= y.getLength()
IF y[i].seccion IS NOT NULL THEN
PRINTX y[i].seccion, y[i].tramo, y[i].fila, y[i].posicion
END IF
END FOR
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