Files
MBS/PROYECTO/ipdir/ipprrp053.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

219 lines
6.7 KiB
Plaintext

{
===============================================================
PROGRAMA : IPPRRP053
OBJETIVO : INFORME TRANSACCIONES INVENTARIOS
DESARROLLADOR : Ing. Elvis Garcia
===============================================================
}
GLOBALS "ipprgb000.4gl"
DEFINE
fecha1 DATE,
fecha2 DATE,
inv DYNAMIC ARRAY OF RECORD
fecha DATE,
numero_doc STRING,
almacen STRING,
producto STRING,
cantidad DECIMAL(18, 5),
costo_standard DECIMAL(18, 5),
codigo_mov INT,
descripcion_mov STRING
END RECORD,
idx INT,
query STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
CALL ipprrp053()
END MAIN
FUNCTION ipprrp053()
OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21
CLEAR SCREEN
OPEN FORM ipfmrp053 FROM "ipfmrp053"
DISPLAY FORM ipfmrp053
INPUT BY NAME fecha1, fecha2
BEFORE INPUT
INITIALIZE fecha1, fecha2 TO NULL
AFTER FIELD fecha1
IF fecha1 IS NULL OR fecha1 > TODAY THEN
CALL msg(16)
NEXT FIELD fecha1
END IF
LET fecha2 = TODAY
DISPLAY BY NAME fecha2
AFTER FIELD fecha2
IF fecha2 IS NULL OR fecha2 < fecha1 THEN
CALL msg(16)
NEXT FIELD fecha1
END IF
AFTER INPUT
LET idx = 1
LET query =
"SELECT",
" DATEFROMPARTS(a.ano, a.mes_orden, 1),",
" a.numero_doc,",
" ISNULL(a.origen, ''),",
" CAST(a.cod_n AS VARCHAR(10)) + '-' +",
" CAST(a.cod_grupo AS VARCHAR(10)) + '-' +",
" CAST(a.cod_tipo AS VARCHAR(10)) + '-' +",
" CAST(a.cod_sec AS VARCHAR(10)) + ' ' +",
" RTRIM(ISNULL(a.descripcion, '')) + ' ' +",
" RTRIM(ISNULL(a.unidad_med, '')),",
" ISNULL(a.cantidad2, 0),",
" ISNULL(a.costo_standard, 0),",
" CASE",
" WHEN a.codigo_mov IN (30,31,55,56) THEN 30",
" ELSE a.codigo_mov",
" END AS grupo_mov,",
" CASE",
" WHEN a.codigo_mov IN (30,31,55,56) THEN 'MOVIMIENTOS VARIOS (30,31,55,56)'",
" ELSE ISNULL(a.descripcion_mov, '')",
" END AS desc_grupo_mov",
" FROM vwipprodterm a",
" WHERE a.codigo_mov IN (44,12,13,30,31,55,56)",
" AND a.ano BETWEEN YEAR('",
fecha1 USING 'yyyy-mm-dd',
"') AND YEAR('",
fecha2 USING 'yyyy-mm-dd',
"')",
" AND a.mes_orden BETWEEN MONTH('",
fecha1 USING 'yyyy-mm-dd',
"') AND MONTH('",
fecha2 USING 'yyyy-mm-dd',
"')",
" ORDER BY grupo_mov, a.ano, a.mes_orden, a.numero_doc"
DECLARE buscar CURSOR FROM query
FOREACH buscar INTO inv[idx].*
LET idx = idx + 1
END FOREACH
IF idx > 1 THEN
LET r_filename = "ipprrp053.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL selectoutput() RETURNING r_output
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
LET handler = fgl_report_commitCurrentSettings()
END IF
START REPORT rpt_ipprrp053 TO XML HANDLER handler
FOR idx = 1 TO inv.getlength()
OUTPUT TO REPORT rpt_ipprrp053(inv[idx].*, fecha1, fecha2)
END FOR
FINISH REPORT rpt_ipprrp053
ELSE
CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS", "INFO")
END IF
END INPUT
END FUNCTION
REPORT rpt_ipprrp053(x, fecha1, fecha2)
DEFINE x RECORD
fecha DATE,
numero_doc STRING,
almacen STRING,
producto STRING,
cantidad DECIMAL(18, 5),
costo_standard DECIMAL(18, 5),
codigo_mov INT,
descripcion_mov STRING
END RECORD
DEFINE fecha1, fecha2, fecha_actual DATE,
total_registros INT,
total_cantidad DECIMAL(18, 5),
total_costos DECIMAL(18, 5),
grupo_registros INT,
grupo_cantidad DECIMAL(18, 5),
grupo_costos DECIMAL(18, 5),
prev_fecha DATE,
prev_doc STRING,
prev_almacen STRING,
print_fecha DATE,
print_doc STRING,
print_almacen STRING
ORDER EXTERNAL BY x.codigo_mov
FORMAT
FIRST PAGE HEADER
LET fecha_actual = CURRENT
LET prev_fecha = NULL
LET prev_doc = ""
LET prev_almacen = ""
PRINTX fecha1, fecha2, fecha_actual
ON EVERY ROW
IF x.fecha = prev_fecha THEN
LET print_fecha = NULL
ELSE
LET print_fecha = x.fecha
LET prev_fecha = x.fecha
END IF
IF x.numero_doc = prev_doc THEN
LET print_doc = ""
ELSE
LET print_doc = x.numero_doc
LET prev_doc = x.numero_doc
END IF
IF x.almacen = prev_almacen THEN
LET print_almacen = ""
ELSE
LET print_almacen = x.almacen
LET prev_almacen = x.almacen
END IF
PRINTX print_fecha, print_doc, print_almacen, x.producto,
x.cantidad, x.costo_standard
AFTER GROUP OF x.codigo_mov
LET prev_fecha = NULL
LET prev_doc = ""
LET prev_almacen = ""
LET grupo_cantidad = GROUP SUM(x.cantidad)
LET grupo_costos = GROUP SUM(x.costo_standard)
LET grupo_registros = GROUP COUNT(*)
PRINTX grupo_cantidad,
grupo_costos,
grupo_registros,
x.codigo_mov,
x.descripcion_mov
ON LAST ROW
LET total_cantidad = SUM(x.cantidad)
LET total_costos = SUM(x.costo_standard)
LET total_registros = COUNT(*)
PRINTX total_cantidad,total_costos, total_registros
END REPORT