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

461 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IPPRRP004
OBJETIVO : Operacion por Tipo de Movimiento detallado
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Febrero 1997
-------------------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE nombre_v CHAR(20)
DEFINE ventas,salir CHAR(1),
costos VARCHAR(2),
cantidad_linea SMALLINT
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 ipprrp004()
END MAIN
FUNCTION ipprrp004()
DEFINE select_ac STRING
DEFINE ano_act CHAR(4)
DEFINE acumulado_ac RECORD
cod_mov LIKE iptb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo DECIMAL(12,5),
descripcion_bodega VARCHAR(30)
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(100),
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),
material DECIMAL(12,3),
labor DECIMAL(12,3),
gastos DECIMAL(12,3),
descripcion_bodega VARCHAR(30),
descripcion_origen VARCHAR(30)
END RECORD,
sinCosto CHAR(2)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ipfmrp004 FROM "ipfmrp004"
DISPLAY FORM ipfmrp004
DISPLAY "ipprrp004" AT 4,3
DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6,18
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME ventas,datos_cons.fech_in,datos_cons.fech_fi,sinCosto,costos
AFTER FIELD ventas
IF ventas = "1" THEN
LET nombre_v = "LOCAL"
ELSE
LET nombre_v = "EXPORTACION"
END IF
DISPLAY BY NAME nombre_v ATTRIBUTE (BOLD)
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 c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.bodega
FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec,bodega
BEFORE CONSTRUCT
LET k1 = '1'
CALL bodegas(k1)
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 c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ",
" SUM(c.cantidad_2)",
"FROM iptb00006 c ",
"WHERE ",criterio clipped," and c.fecha between ? and ? ",
" AND c.status_t is NULL ",
"GROUP BY c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec ",
"HAVING SUM(c.cantidad_2) <> 0 ",
"ORDER BY c.cod_mov,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)
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
{ LET opt1 = fgl_winquestion("Atencion","Desea Reporte por Pantalla?",
"no","yes|no","question",0)
IF opt1 = "yes" THEN
} LET cantidad_linea= 100
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT opera TO XML HANDLER handler
{ ELSE
LET cantidad_linea = 66
START REPORT opera TO archivo
END IF
}
PREPARE busca_ant FROM select_ac
DECLARE actual SCROLL CURSOR FOR busca_ant
OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi
FOREACH actual INTO acumulado_ac.*
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.cod_mov = acumulado_ac.cod_mov
# Buscando Los Costos de Los Materiales
LET acumulado.material = 0
LET acumulado.labor = 0
LET acumulado.gastos = 0
IF costos ="SI" THEN
LET acumulado.descripcion_bodega = acumulado_ac.descripcion_bodega
SELECT ISNULL(c.material,0),ISNULL(c.labor,0),ISNULL(c.gastos,0)
INTO acumulado.material,acumulado.labor,acumulado.gastos
FROM iptb00004 c
WHERE c.ventas = ventas and c.ano = ano_act and
c.mes_ini = "01" and c.mes_fin = "12" and
c.cod_n = acumulado_ac.cod_n AND
c.cod_grupo = acumulado_ac.cod_grupo AND
c.cod_tipo = acumulado_ac.cod_tipo AND
c.cod_Sec = acumulado_ac.cod_sec AND c.status_t is NULL
END IF
IF sinCosto = "SI" THEN
IF acumulado.material+acumulado.labor+acumulado.gastos <> 0 THEN
CONTINUE FOREACH
END IF
END IF
# 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
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
OUTPUT TO REPORT opera(acumulado.*)
END FOREACH
FINISH REPORT opera
LET cmd = null
LET cmd ='copy ',archivo CLIPPED,' ', FGL_GETENV("FGLSPOOL")||"\\IPRP04.txt"
RUN cmd
CALL ui.Interface.frontCall("standard","getenv", ["FILEREPORTE"], [dcmd] )
LET cmd= FGL_GETENV("FGLSPOOL")||"\\IPRP04.txt"
CALL fgl_putfile(cmd,dcmd)
IF opt1 <> "yes" then
LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?",
"yes","yes|no","question",0)
LET opt = UPSHIFT(opt)
IF opt = "YES" THEN
RUN imprime
END IF
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(100),
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),
material DECIMAL(12,3),
labor DECIMAL(12,3),
gastos DECIMAL(12,3),
descripcion_bodega VARCHAR(30),
descripcion_origen VARCHAR(30)
END RECORD
DEFINE l SMALLINT
DEFINE c_ano1 char(4)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(3)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE total_p,total_m DECIMAL(12,2)
DEFINE total_costo_st,t_t_total,t_t_t_total,
tt_total_costo_st,t_total_costo_st,t_cantidad
DECIMAL (12,2), descrip_nivel CHAR(15)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 0
RIGHT MARGIN 0
PAGE LENGTH cantidad_linea
ORDER BY x.cod_mov,x.cod_cia,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec
FORMAT
PAGE HEADER
{ IF opt1 <> "yes" THEN
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 27,ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
END IF}
LET hora = time
PRINT doce,comp_on
LET l = (141 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, "ipprrp004",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 134, "Pag. ",pageno using "###"
PRINT COLUMN 54, "Sistema de Inventario de Productos",
COLUMN 134, today using "dd/mm/yyyy"
PRINT COLUMN 47, "Operacion por Movimiento Detallado y Valorizado",
COLUMN 137, hora
LET l = (141 - LENGTH(nombre_v)) / 2
IF ventas = "1" THEN
PRINT COLUMN l, nombre_v
ELSE
PRINT COLUMN l, nombre_v
END IF
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-------------------------------------------"
PRINT COLUMN 80, "Valor",
COLUMN 109, "Valor",
COLUMN 131, "Valor",
COLUMN 147, "Valor"
PRINT COLUMN 1, "Producto",
COLUMN 55, "Cantidad",
COLUMN 69, "Material",
COLUMN 80, "Material",
COLUMN 94, "Labor",
COLUMN 109, "Labor",
COLUMN 119, "Gasto",
COLUMN 131, "Gasto",
COLUMN 147, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-------------------------------------------",
"----------"
BEFORE GROUP OF x.cod_mov
LET t_cantidad = 0
LET t_t_t_total = 0
LET total_costo_st = 0
LET tt_total_costo_st = 0
LET t_t_total = 0
SELECT descrip_mov INTO x.descrip_mov FROM iptb00005
WHERE cod_mov = x.cod_mov
PRINT COLUMN 1, negrillas_on,"Movimiento: ",x.cod_mov using "&&",
" ",x.descrip_mov CLIPPED,negrillas_off
SKIP 1 LINE
LET total_m = 0
BEFORE GROUP OF x.cod_cia
PRINT x.descripcion_origen
BEFORE GROUP OF x.cod_n
LET t_total_costo_st = 0
ON EVERY ROW
IF x.consumo IS NOT NULL THEN
IF x.material IS NULL THEN
LET x.material = 0
END IF
IF x.labor IS NULL THEN
LET x.labor = 0
END IF
IF x.gastos IS NULL THEN
LET x.gastos = 0
END IF
LET t_cantidad = t_cantidad + x.consumo
LET total_costo_st = 0
LET total_costo_st = (x.material+x.labor+x.gastos) * x.consumo
LET t_total_costo_st = t_total_costo_st + total_costo_st
PRINT COLUMN 1, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-",
x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&"," ",
x.descrip_esp WORDWRAP RIGHT MARGIN 70,
COLUMN 56, x.consumo USING "##,###.###",
COLUMN 67, x.material using "##,###.###",
COLUMN 81, x.consumo*x.material USING "#,###,###.###",
COLUMN 94, x.labor using "#,###.###",
COLUMN 105, x.consumo*x.labor USING "#,###,###.###",
COLUMN 119, x.gastos using "#,###.###",
COLUMN 130, x.consumo * x.gastos using "#,###,###.###",
COLUMN 144, total_costo_st using "##,###,###.##"
END IF
AFTER GROUP OF x.cod_n
LET descrip_nivel = NULL
SELECT a.producto INTO descrip_nivel FROM iptb00020 a WHERE a.cod_n = x.cod_n
PRINT negrillas_on
PRINT COLUMN 56, "-------------",
COLUMN 81, "-------------",
COLUMN 106, "-------------",
COLUMN 131, "-------------",
COLUMN 145, "-------------"
PRINT COLUMN 3, "Total ",descrip_nivel CLIPPED,"--->",
COLUMN 56, GROUP SUM(x.consumo) USING "##,###,###.###",
COLUMN 81, GROUP SUM(x.consumo*x.material) USING "##,###,###.###",
COLUMN 105, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###",
COLUMN 130, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###",
COLUMN 144, t_total_costo_st USING "###,###,###.##"
SKIP 1 LINE
LET tt_total_costo_st = t_total_costo_st + tt_total_costo_st
PRINT negrillas_off
AFTER GROUP OF x.cod_mov
PRINT negrillas_on
PRINT COLUMN 56, "-------------",
COLUMN 81, "-------------",
COLUMN 106, "-------------",
COLUMN 131, "-------------",
COLUMN 145, "-------------"
PRINT COLUMN 3, "Total ",x.descrip_mov,"---->",
COLUMN 56, GROUP SUM(x.consumo) USING "##,###,###.###",
COLUMN 81, GROUP SUM(x.consumo*x.material) USING "###,###,###.###",
COLUMN 105, GROUP SUM(x.consumo*x.labor) USING "##,###,###.###",
COLUMN 130, GROUP SUM(x.consumo * x.gastos) using "##,###,###.###",
COLUMN 144, tt_total_costo_st USING "##,###,###.##"
PRINT COLUMN 144, "============="
PRINT negrillas_off
SKIP TO TOP OF PAGE
END REPORT