473 lines
16 KiB
Plaintext
473 lines
16 KiB
Plaintext
{------------------------------------------------------------------------------
|
|
PROGRAMA : ipprrp047
|
|
OBJETIVO : Operacion por Tipo de Movimiento detallado
|
|
PROGRAMADOR : Ing. Juan Fco. Soto
|
|
FECHA REALIZACION : Febrero 1997
|
|
MODIFICADO POR : VALENTI RODRIGUEZ
|
|
FECHA MODIFICACION : ABRIL 2019
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ipprgb000.4gl"
|
|
DEFINE nombre_v CHAR(20)
|
|
DEFINE ventas,salir CHAR(1),
|
|
costos VARCHAR(50),
|
|
cantidad_linea SMALLINT
|
|
|
|
DEFINE total_costo_st FLOAT
|
|
|
|
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 ipprrp047()
|
|
END MAIN
|
|
|
|
FUNCTION ipprrp047()
|
|
|
|
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,
|
|
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),
|
|
material DECIMAL(12,5),
|
|
labor DECIMAL(12,5),
|
|
gastos DECIMAL(12,5),
|
|
descripcion_origen VARCHAR(30),
|
|
departamento VARCHAR(40)
|
|
END RECORD
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM ipfmrp047 FROM "ipfmrp047"
|
|
DISPLAY FORM ipfmrp047
|
|
|
|
DISPLAY "ipprrp047" 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,costos
|
|
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 f.cod_cia,c.cod_mov, c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, c.bodega
|
|
FROM cod_cia,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 isnull(e.nom_dpto, 'NO DEPARTAMENTO'), c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ",
|
|
"SUM(c.cantidad_2),f.descrip_esp,f.unidad_med,g.descripcion,g.cod_cia ",
|
|
"FROM iptb00006 c JOIN iptb00002 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 ",
|
|
" INNER JOIN iptb00022 g ON f.cod_cia = g.cod_cia ",
|
|
|
|
"left join adtb00001 e on e.departamento = c.departamento ",
|
|
"WHERE ",criterio clipped," and c.fecha between '",datos_cons.fech_in USING 'mm/dd/yyyy',"' and '",
|
|
datos_cons.fech_fi USING 'mm/dd/yyyy',"' ",
|
|
" AND c.status_t is NULL ",
|
|
"GROUP BY g.descripcion,e.nom_dpto, c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,f.descrip_esp, ",
|
|
" g.cod_cia,f.unidad_med ",
|
|
"HAVING SUM(c.cantidad_2) <> 0 ",
|
|
"ORDER BY g.cod_cia, e.nom_dpto, 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)
|
|
|
|
PREPARE busca_ant FROM select_ac
|
|
DECLARE actual SCROLL CURSOR FOR busca_ant
|
|
|
|
|
|
|
|
LET r_filename ="ipprrp047.4rp"
|
|
LET idx = 1
|
|
|
|
FOREACH actual INTO acumulado_ac.*,
|
|
acumulado.descrip_esp,acumulado.unidad_med,acumulado.descripcion_origen,
|
|
acumulado.cod_cia
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
SELECT c.material,c.labor,c.gastos
|
|
INTO acumulado.material,acumulado.labor,acumulado.gastos
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ano_act 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
|
|
|
|
# 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
|
|
|
|
IF acumulado.labor IS NULL THEN
|
|
LET acumulado.labor = 0
|
|
END IF
|
|
IF acumulado.gastos IS NULL THEN
|
|
LET acumulado.gastos = 0
|
|
END IF
|
|
IF acumulado.material IS NULL THEN
|
|
LET acumulado.material = 0
|
|
END IF
|
|
|
|
IF acumulado.consumo IS NOT NULL THEN
|
|
|
|
LET total_costo_st = 0
|
|
LET total_costo_st = (acumulado.material+acumulado.labor+acumulado.gastos) * acumulado.consumo
|
|
END IF
|
|
--LET t_total_costo_st = t_total_costo_st + total_costo_st
|
|
|
|
IF costos = "TODOS" THEN
|
|
LET idx = 3
|
|
OUTPUT TO REPORT opera(acumulado.*, total_costo_st)
|
|
ELSE
|
|
IF costos = 'COSTOS' THEN
|
|
|
|
IF acumulado.material+acumulado.labor+acumulado.gastos = 0 THEN
|
|
LET idx = 3
|
|
OUTPUT TO REPORT opera(acumulado.*, total_costo_st)
|
|
END IF
|
|
END IF
|
|
{ IF costos = 'NEGATIVOS' THEN
|
|
IF acumulado.consumo < 0 THEN
|
|
OUTPUT TO REPORT opera(acumulado.*, total_costo_st)
|
|
END IF
|
|
END IF}
|
|
END IF
|
|
END FOREACH
|
|
|
|
IF idx =3 THEN
|
|
FINISH REPORT opera
|
|
ELSE
|
|
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
|
|
--NEXT FIELD fecha_final
|
|
END IF
|
|
|
|
|
|
END FUNCTION
|
|
|
|
REPORT opera(x, total_costo_st)
|
|
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),
|
|
material DECIMAL(12,3),
|
|
labor DECIMAL(12,3),
|
|
gastos DECIMAL(12,3),
|
|
descripcion_origen VARCHAR(30),
|
|
departamento VARCHAR(40)
|
|
END RECORD,
|
|
titulo_mov,titulo_cia VARCHAR(50),
|
|
rango_fecha CHAR(50),
|
|
fecha_reporte CHAR(15),
|
|
producto VARCHAR(150),
|
|
|
|
|
|
--TOTALES POR CIA
|
|
t_material_cia,
|
|
t_labor_cia,
|
|
t_gasto_cia,
|
|
t_consumo_cia,
|
|
t_general_cia,
|
|
|
|
--TOTALES POR DEPARTAMENTOS
|
|
t_material,
|
|
t_labor,
|
|
t_gasto,
|
|
t_consumo,
|
|
|
|
--TOTALES POR MOVIMIENTOS
|
|
t_m_consumo,
|
|
t_m_material,
|
|
t_m_labor,
|
|
t_m_gasto,
|
|
|
|
--VALORES POR CADA REGISTRO(ON EVERY ROW)
|
|
v_material,
|
|
v_labor,
|
|
v_gasto,
|
|
|
|
--TOTALES VALORES POR DEPARTAMENTOS
|
|
total_material,
|
|
total_labor,
|
|
total_gastos,
|
|
total_consumo,
|
|
total_valor_departamento,
|
|
|
|
--TOTALES VALORES POR MOVIMIENTOS
|
|
total_material_movimiento,
|
|
total_consumo_movimiento,
|
|
total_labor_movimiento,
|
|
total_gastos_movimiento,
|
|
total_valor_movimiento
|
|
FLOAT,
|
|
--TOTALES GENERALES
|
|
total_material_gral,
|
|
total_consumo_gral,
|
|
total_labor_gral,
|
|
total_gastos_gral,
|
|
total_valor_gral
|
|
FLOAT
|
|
|
|
DEFINE total_costo_st, t_total_costo_st, t_cantidad
|
|
DECIMAL (12,2)
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET total_material_gral = 0
|
|
LET total_consumo_gral = 0
|
|
LET total_labor_gral = 0
|
|
LET total_gastos_gral = 0
|
|
LET total_valor_gral = 0
|
|
|
|
BEFORE GROUP OF x.cod_cia
|
|
LET t_material_cia =0
|
|
LET t_labor_cia =0
|
|
LET t_gasto_cia =0
|
|
LET t_consumo_cia =0
|
|
|
|
LET titulo_cia = "(",x.cod_cia USING "&&",")", x.descripcion_origen
|
|
PRINTX titulo_cia
|
|
BEFORE GROUP OF x.cod_mov
|
|
|
|
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
|
|
LET t_cantidad = 0
|
|
--LET total_costo_st = 0
|
|
LET total_valor_movimiento = 0
|
|
|
|
PRINTX titulo_mov
|
|
|
|
BEFORE GROUP OF x.departamento
|
|
|
|
LET total_valor_departamento = 0
|
|
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
|
|
|
|
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 v_material = x.consumo*x.material
|
|
LET v_labor = x.consumo*x.labor
|
|
LET v_gasto = x.consumo * x.gastos
|
|
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}
|
|
END IF
|
|
|
|
PRINTX producto, x.consumo, x.material, v_material,
|
|
x.labor, v_labor, x.gastos, v_gasto,
|
|
total_costo_st, p_companias.nombre, rango_fecha, fecha_reporte
|
|
|
|
AFTER GROUP OF x.departamento
|
|
LET t_consumo = GROUP SUM(x.consumo)
|
|
LET t_material = GROUP SUM(x.material)
|
|
LET t_labor = GROUP SUM(x.labor)
|
|
LET t_gasto = GROUP SUM(x.gastos)
|
|
|
|
LET total_consumo = GROUP SUM(x.consumo * x.consumo)
|
|
LET total_material = GROUP SUM(x.consumo * x.material)
|
|
LET total_labor = GROUP SUM(x.consumo * x.labor)
|
|
LET total_gastos = GROUP SUM(x.consumo * x.gastos)
|
|
LET total_valor_departamento = GROUP SUM(total_costo_st)
|
|
|
|
PRINTX t_consumo,t_labor, t_gasto,t_material, total_material,
|
|
total_gastos, total_labor, total_valor_departamento
|
|
|
|
AFTER GROUP OF x.cod_mov
|
|
LET t_m_consumo = GROUP SUM(x.consumo)
|
|
LET t_m_material = GROUP SUM(x.material)
|
|
LET t_m_labor = GROUP SUM(x.labor)
|
|
LET t_m_gasto = GROUP SUM(x.gastos)
|
|
|
|
LET total_consumo_movimiento = GROUP SUM(x.consumo)
|
|
LET total_material_movimiento = GROUP SUM(x.consumo * x.material)
|
|
LET total_labor_movimiento = GROUP SUM(x.consumo * x.labor)
|
|
LET total_gastos_movimiento = GROUP SUM(x.consumo * x.gastos)
|
|
LET total_valor_movimiento = GROUP SUM(total_costo_st)
|
|
|
|
PRINTX total_consumo_movimiento, total_material_movimiento,
|
|
total_labor_movimiento, total_gastos_movimiento, t_m_consumo,
|
|
t_m_material, t_m_labor, t_m_gasto, total_valor_movimiento
|
|
AFTER GROUP OF x.cod_cia
|
|
LET t_consumo_cia = GROUP SUM(x.consumo)
|
|
LET t_material_cia = GROUP SUM(x.material)
|
|
LET t_labor_cia = GROUP SUM(x.labor)
|
|
LET t_gasto_cia = GROUP SUM(x.gastos)
|
|
LET t_general_cia = t_material_cia + t_labor_cia + t_gasto_cia
|
|
PRINTX t_consumo_cia,t_material_cia,t_labor_cia,t_gasto_cia,t_general_cia
|
|
ON LAST ROW
|
|
|
|
|
|
LET total_material_gral = SUM(x.material)
|
|
LET total_consumo_gral = SUM(x.consumo)
|
|
LET total_labor_gral = SUM(x.labor)
|
|
LET total_gastos_gral = SUM(x.gastos)
|
|
LET total_valor_gral = SUM(total_costo_st)
|
|
|
|
PRINTX total_material_gral,total_consumo_gral,total_labor_gral,total_gastos_gral,total_valor_gral
|
|
|
|
END REPORT
|
|
|
|
|
|
|