otrodir/selectoutput_simple.4gl definia FUNCTION selectOutput(), mismo nombre que otrodir/vesalidaimpresora.4gl (ya usado por Abel en noprcs006, ipprrp002, ipprrp003, ipprrp039, ipprrp044). Al mezclar ambos commits, cualquier programa que dependiera de FUNCIONESREPORT mas la libreria de Abel rompia por simbolo duplicado. Se renombra la funcion (y se actualizan sus 4 unicos llamados: ipprrp005, ipprrp009, ipprrp035, ipprrp036) sin tocar vesalidaimpresora.4gl, para no afectar los programas que Abel ya tiene funcionando con esa version. Recompilados y verificados los 4 programas tras el cambio. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
814 lines
28 KiB
Plaintext
814 lines
28 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : IPPRRP009
|
|
OBJETIVO : REPORTE EXISTENCIAS
|
|
PROGRAMADOR : Juan Fco. Soto.
|
|
FECHA REALIZACION : Febrero 1997
|
|
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ipprgb000.4gl"
|
|
DEFINE noimprime CHAR(1),total_p dec(13,4),
|
|
existencia_v DEC(12,3),
|
|
existencia_negativa CHAR(5),
|
|
costeo CHAR(10),
|
|
grafico CHAR(2),
|
|
fecha_ult_venta DATE,
|
|
ano_ant,ano_act,p_mes INT,
|
|
tipo_reporte VARCHAR(50),
|
|
cierre CHAR(2),
|
|
ejecuta_cierre CHAR(3),
|
|
procedimiento STRING
|
|
|
|
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 ipprrp09()
|
|
END MAIN
|
|
|
|
FUNCTION ipprrp09()
|
|
DEFINE p_ano CHAR(4)
|
|
|
|
DEFINE existe RECORD
|
|
cod_cia LIKE iptb00002.cod_cia,
|
|
descripcion CHAR(50),
|
|
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(45),
|
|
descrip_ing CHAR(15),
|
|
unidad_med CHAR(3),
|
|
existe_ant DEC(12,3),
|
|
costo_ant DEC(22,5),
|
|
total_a DEC(22,2),
|
|
existe_act DECIMAL(12,3),
|
|
costo DECIMAL(22,5),
|
|
total_c DECIMAL(22,2),
|
|
matiral,labor,gastos DECIMAL(12,3),
|
|
es_produccion BOOLEAN
|
|
#fecha DATE
|
|
END RECORD,
|
|
codigo CHAR(25),
|
|
pmaterial,plabor,pgasto DEC(12,4),
|
|
pprecio DEC(12,2)
|
|
|
|
|
|
|
|
DEFINE select_act STRING
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM ipfmrp009 FROM "ipfmrp009"
|
|
DISPLAY FORM ipfmrp009
|
|
|
|
LET tipo_papel = 1
|
|
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,noimprime,historico,servicios,
|
|
existencia_negativa,grafico,costeo,cierre
|
|
|
|
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
|
|
AFTER INPUT
|
|
|
|
LET ejecuta_cierre ="NO"
|
|
IF cierre = 'SI' THEN
|
|
LET ejecuta_cierre = fgl_winquestion("CIERRE","ESTAS SEGURO DE REALIZAR ESTA OPERACION?",
|
|
"NO","YES|NO","QUESTION",0)
|
|
END IF
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET p_ano = year(datos_cons.fech_fi)
|
|
LET p_mes = MONTH(datos_cons.fech_in)
|
|
|
|
CONSTRUCT criterio ON a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.bodega
|
|
FROM cod_cia,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
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
LET ano_ant = YEAR(datos_cons.fech_in)
|
|
LET ano_act = YEAR(datos_cons.fech_fi)
|
|
LET tipo_reporte = NULL
|
|
IF historico = "N" THEN
|
|
IF existencia_negativa = 'TODAS' THEN
|
|
LET tipo_reporte = 'TODAS LAS EXISTENCIAS'
|
|
LET select_act =
|
|
"WITH Productos AS (
|
|
SELECT
|
|
a.cod_cia,
|
|
e.descripcion,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.descrip_esp,
|
|
a.descrip_ing,
|
|
a.unidad_med,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy",
|
|
" ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy",
|
|
"' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2,
|
|
ISNULL(a.es_produccion,0) as es_produccion
|
|
FROM iptb00002 a
|
|
LEFT JOIN iptb00006 d
|
|
ON a.cod_n = d.cod_n
|
|
AND a.cod_grupo = d.cod_grupo
|
|
AND a.cod_tipo = d.cod_tipo
|
|
AND a.cod_sec = d.cod_sec ",
|
|
" AND d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ",
|
|
" AND d.status_t IS NULL
|
|
JOIN iptb00022 e
|
|
ON a.cod_cia = e.cod_cia
|
|
WHERE a.status_t IS NULL
|
|
AND a.control_existencia = 'SI' and ",criterio CLIPPED,
|
|
" GROUP BY
|
|
a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo,
|
|
a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion
|
|
),
|
|
Costos AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL ",
|
|
" GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec
|
|
),
|
|
Costos2 AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2,
|
|
c.material, c.labor, c.gastos
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL ",
|
|
" GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,c.material, c.labor, c.gastos
|
|
)
|
|
|
|
SELECT
|
|
p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec,
|
|
p.descrip_esp, p.descrip_ing, p.unidad_med,
|
|
p.existencia_fecha1,
|
|
ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1,
|
|
(p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1,
|
|
p.existencia_fecha2,
|
|
ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2,
|
|
(p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2,
|
|
ct2.material, ct2.labor, ct2.gastos,p.es_produccion
|
|
FROM Productos p
|
|
LEFT JOIN Costos ct
|
|
ON p.cod_n = ct.cod_n
|
|
AND p.cod_grupo = ct.cod_grupo
|
|
AND p.cod_tipo = ct.cod_tipo
|
|
AND p.cod_sec = ct.cod_sec
|
|
LEFT JOIN Costos2 ct2
|
|
ON p.cod_n = ct2.cod_n
|
|
AND p.cod_grupo = ct2.cod_grupo
|
|
AND p.cod_tipo = ct2.cod_tipo
|
|
AND p.cod_sec = ct2.cod_sec ",
|
|
"ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec
|
|
"
|
|
END IF
|
|
IF existencia_negativa = 'NO' THEN
|
|
LET tipo_reporte = 'EXISTENCIAS POSITIVAS'
|
|
LET select_act =
|
|
"WITH Productos AS (
|
|
SELECT
|
|
a.cod_cia,
|
|
e.descripcion,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.descrip_esp,
|
|
a.descrip_ing,
|
|
a.unidad_med,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy",
|
|
" ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy",
|
|
"' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2,
|
|
ISNULL(a.es_produccion,0) as es_produccion
|
|
FROM iptb00002 a
|
|
LEFT JOIN iptb00006 d
|
|
ON a.cod_n = d.cod_n
|
|
AND a.cod_grupo = d.cod_grupo
|
|
AND a.cod_tipo = d.cod_tipo
|
|
AND a.cod_sec = d.cod_sec ",
|
|
" AND d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ",
|
|
" AND d.status_t IS NULL
|
|
JOIN iptb00022 e
|
|
ON a.cod_cia = e.cod_cia
|
|
WHERE a.status_t IS NULL
|
|
AND a.control_existencia = 'SI' and ",criterio CLIPPED,
|
|
" GROUP BY
|
|
a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo,
|
|
a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion
|
|
HAVING SUM(d.cantidad_2) >0
|
|
),
|
|
Costos AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL
|
|
GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec
|
|
),
|
|
Costos2 AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2,
|
|
c.material, c.labor, c.gastos
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL
|
|
GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,c.material, c.labor, c.gastos
|
|
)
|
|
|
|
SELECT
|
|
p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec,
|
|
p.descrip_esp, p.descrip_ing, p.unidad_med,
|
|
p.existencia_fecha1,
|
|
ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1,
|
|
(p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1,
|
|
p.existencia_fecha2,
|
|
ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2,
|
|
(p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2,
|
|
ct2.material, ct2.labor, ct2.gastos,p.es_produccion
|
|
FROM Productos p
|
|
LEFT JOIN Costos ct
|
|
ON p.cod_n = ct.cod_n
|
|
AND p.cod_grupo = ct.cod_grupo
|
|
AND p.cod_tipo = ct.cod_tipo
|
|
AND p.cod_sec = ct.cod_sec
|
|
LEFT JOIN Costos2 ct2
|
|
ON p.cod_n = ct2.cod_n
|
|
AND p.cod_grupo = ct2.cod_grupo
|
|
AND p.cod_tipo = ct2.cod_tipo
|
|
AND p.cod_sec = ct2.cod_sec ",
|
|
"ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec
|
|
"
|
|
END IF
|
|
IF existencia_negativa ="SI" THEN
|
|
LET tipo_reporte = 'EXISTENCIAS NEGATIVAS'
|
|
LET select_act =
|
|
"WITH Productos AS (
|
|
SELECT
|
|
a.cod_cia,
|
|
e.descripcion,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.descrip_esp,
|
|
a.descrip_ing,
|
|
a.unidad_med,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy",
|
|
" ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1,
|
|
ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy",
|
|
"' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2,
|
|
ISNULL(a.es_produccion,0) as es_produccion
|
|
FROM iptb00002 a
|
|
LEFT JOIN iptb00006 d
|
|
ON a.cod_n = d.cod_n
|
|
AND a.cod_grupo = d.cod_grupo
|
|
AND a.cod_tipo = d.cod_tipo
|
|
AND a.cod_sec = d.cod_sec ",
|
|
" AND d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ",
|
|
" AND d.status_t IS NULL
|
|
JOIN iptb00022 e
|
|
ON a.cod_cia = e.cod_cia
|
|
WHERE a.status_t IS NULL
|
|
AND a.control_existencia = 'SI' and ",criterio CLIPPED,
|
|
" GROUP BY
|
|
a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo,
|
|
a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion
|
|
HAVING SUM(d.cantidad_2) <0
|
|
),
|
|
Costos AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL
|
|
GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec
|
|
),
|
|
Costos2 AS (
|
|
SELECT
|
|
c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,
|
|
SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2,
|
|
c.material, c.labor, c.gastos
|
|
FROM iptb00004 c
|
|
WHERE c.ano = ",p_ano,
|
|
" AND c.mes_ini = '01'
|
|
AND c.mes_fin = '12'
|
|
AND c.status_t IS NULL
|
|
GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, c.material, c.labor, c.gastos
|
|
)
|
|
|
|
SELECT
|
|
p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec,
|
|
p.descrip_esp, p.descrip_ing, p.unidad_med,
|
|
p.existencia_fecha1,
|
|
ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1,
|
|
(p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1,
|
|
p.existencia_fecha2,
|
|
ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2,
|
|
(p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2,
|
|
ct2.material, ct2.labor, ct2.gastos,p.es_produccion
|
|
FROM Productos p
|
|
LEFT JOIN Costos ct
|
|
ON p.cod_n = ct.cod_n
|
|
AND p.cod_grupo = ct.cod_grupo
|
|
AND p.cod_tipo = ct.cod_tipo
|
|
AND p.cod_sec = ct.cod_sec
|
|
LEFT JOIN Costos2 ct2
|
|
ON p.cod_n = ct2.cod_n
|
|
AND p.cod_grupo = ct2.cod_grupo
|
|
AND p.cod_tipo = ct2.cod_tipo
|
|
AND p.cod_sec = ct2.cod_sec ",
|
|
"ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec
|
|
"
|
|
|
|
END IF
|
|
|
|
END IF
|
|
DISPLAY "<< Estoy Buscando Los Balances Actuales >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
|
|
IF ejecuta_cierre = "YES" THEN
|
|
DELETE FROM inventario_cierre_mensual WHERE ano = p_ano AND mes = p_mes
|
|
END IF
|
|
IF grafico = "SI" THEN
|
|
LET r_filename ='ipprrp009.4rp'
|
|
LET preview = 1
|
|
CALL selectOutputSimple() RETURNING r_output
|
|
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_configurexlsxdevice(null,null,1,null,null,null,1)
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
|
|
# IF r_output = 'XLSX' THEN
|
|
# LET r_output="SVG"
|
|
# END IF
|
|
# CALL configureOutput(r_output) RETURNING HANDLER
|
|
START REPORT existencia_grafica TO XML HANDLER HANDLER
|
|
ELSE
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
START REPORT existencia TO archivo
|
|
|
|
END IF
|
|
|
|
PREPARE busca_act FROM select_act
|
|
DECLARE busca_balan_act CURSOR FOR busca_act
|
|
OPEN busca_balan_act #USING datos_cons.fech_in,datos_cons.fech_fi,datos_cons.fech_fi,ano_ant,
|
|
# ano_act
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
|
|
WHILE status != notfound
|
|
FETCH busca_balan_act INTO existe.*
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF costeo <> "TODOS" THEN
|
|
IF costeo = "SIN COSTO" AND existe.costo <> 0 THEN
|
|
CONTINUE WHILE
|
|
END IF
|
|
END IF
|
|
|
|
IF noimprime = 'S' THEN
|
|
|
|
IF existe.existe_act = 0 THEN
|
|
CONTINUE WHILE
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LET codigo = existe.cod_n using "&&&&",existe.cod_grupo using "&&&&",
|
|
existe.cod_tipo using "&&&&",existe.cod_sec using "&&&&&&&"
|
|
# QUERY TEMPORAL
|
|
#LET fecha_ult_venta = NULL
|
|
{ SELECT MAX(b.fecha_factura) INTO fecha_ult_venta FROM vetb00002 b,vetb00003 a
|
|
WHERE (a.cod_n = existe.cod_n AND
|
|
a.cod_grupo = existe.cod_grupo AND
|
|
a.cod_tipo = existe.cod_tipo AND
|
|
a.cod_sec = existe.cod_sec) AND
|
|
b.status_t IS NULL
|
|
}
|
|
# IF fecha_ult_venta IS NULL OR TODAY - fecha_ult_venta > 730 THEN
|
|
# INSERT INTO ipprrp009 VALUES (existe.cod_n,existe.cod_grupo,existe.cod_tipo,existe.cod_sec,
|
|
# existe.descrip_esp,existe.existe_act,
|
|
# existe.matiral,existe.labor,existe.gastos,pprecio,
|
|
# getdate())
|
|
|
|
IF ejecuta_cierre = "YES" THEN
|
|
|
|
-- Insertar el cierre
|
|
INSERT INTO inventario_cierre_mensual (
|
|
ano, mes, cod_n, cod_grupo, cod_tipo, cod_sec, cantidad_existente,
|
|
costo_unitario, es_produccion, fecha_cierre, us_cierre,fech_crea
|
|
)
|
|
VALUES (p_ano,p_mes,existe.cod_n,existe.cod_grupo,existe.cod_tipo,existe.cod_sec,existe.existe_act,
|
|
existE.costo,existe.es_produccion,datos_cons.fech_fi,usuarios,getdate() )
|
|
END IF
|
|
IF grafico = 'SI' THEN
|
|
OUTPUT TO REPORT existencia_grafica(existe.*)
|
|
ELSE
|
|
OUTPUT TO REPORT existencia(existe.*, codigo)
|
|
END IF
|
|
# END if
|
|
END WHILE
|
|
IF ejecuta_cierre = "YES" THEN
|
|
LET procedimiento = "{ call sp_GenerarCierreInventarioMensual_Bodega(?,?,?)}"
|
|
CALL ejecuta(procedimiento,p_ano,p_mes)
|
|
END IF
|
|
IF grafico = 'SI' THEN
|
|
FINISH REPORT existencia_grafica
|
|
ELSE
|
|
FINISH REPORT existencia
|
|
END IF
|
|
|
|
IF grafico <> "SI" THEN
|
|
LET cmd = NULL
|
|
LET cmd ='copy ',archivo CLIPPED,' ', FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt"
|
|
|
|
RUN cmd
|
|
CALL ui.Interface.frontCall("standard","getenv", ["FILEREPORTE"], [dcmd] )
|
|
LET cmd= FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt"
|
|
CALL fgl_putfile(cmd,dcmd)
|
|
|
|
|
|
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
|
|
LET total_p = 0
|
|
END FUNCTION
|
|
|
|
REPORT existencia(x, codigo)
|
|
DEFINE x RECORD
|
|
cod_cia LIKE iptb00002.cod_cia,
|
|
descripcion CHAR(50),
|
|
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(45),
|
|
descrip_ing CHAR(15),
|
|
unidad_med CHAR(3),
|
|
existe_ant DEC(12,3),
|
|
costo_ant DEC(22,5),
|
|
total_a DEC(22,2),
|
|
existe_act DECIMAL(12,3),
|
|
costo DECIMAL(22,5),
|
|
total_c DECIMAL(22,2),
|
|
matiral,labor,gastos DECIMAL(12,3),
|
|
es_produccion BOOLEAN
|
|
#fecha DATE
|
|
END RECORD,
|
|
codigo CHAR(25),
|
|
|
|
total_cia,total_gral,total_cia_ant,total_gral_ant,total_exit_act DEC(12,2)
|
|
|
|
DEFINE tt INTEGER
|
|
|
|
DEFINE doble_on CHAR(2)
|
|
DEFINE doble_off CHAR(2)
|
|
DEFINE negrillas_on CHAR(2)
|
|
DEFINE negrillas_off CHAR(2)
|
|
DEFINE comp_on CHAR(2)
|
|
DEFINE comp_off CHAR(2)
|
|
DEFINE doce CHAR(3)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE l INTEGER
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
RIGHT MARGIN 0
|
|
BOTTOM MARGIN 0
|
|
PAGE LENGTH 130
|
|
|
|
# ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
IF grafico <> "SI" 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 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 030
|
|
END IF
|
|
LET hora = TIME
|
|
|
|
LET l = (130 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
|
|
PRINT COLUMN 1, comp_on
|
|
PRINT COLUMN 1, "ipprrp009",
|
|
COLUMN l, p_companias.nombre CLIPPED,
|
|
COLUMN 123, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 49, "Sistema de Inventario Productos ",
|
|
COLUMN 123, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 49, " Existencia a Diferente Fechas",
|
|
COLUMN 126, hora
|
|
IF historico = 'N' THEN
|
|
PRINT COLUMN 60, 'NO HISTORICO'
|
|
ELSE
|
|
PRINT COLUMN 64, 'HISTORICO'
|
|
END IF
|
|
|
|
PRINT COLUMN 60, tipo_reporte
|
|
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------"
|
|
|
|
|
|
PRINT COLUMN {69,} 79, "Existencia",
|
|
5 spaces, "Existencia",
|
|
5 spaces, "Costo Std",
|
|
5 spaces, "Costo Std",
|
|
10 spaces, "Total",
|
|
10 spaces, "Total"
|
|
|
|
PRINT COLUMN 10, "Codigo", --1, "Codigo",
|
|
COLUMN 35,"Descripcion", --21, "Descripcion",
|
|
COLUMN {69,} 77, "Al ",datos_cons.fech_in using "dd/mm/yyyy",
|
|
2 spaces, "Al ", datos_cons.fech_fi using "dd/mm/yyyy",
|
|
5 spaces ,"Al ",datos_cons.fech_in USING "yyyy",
|
|
7 spaces ,"Al ",datos_cons.fech_fi USING "yyyy",
|
|
11 spaces, "Al ",datos_cons.fech_in using "yyyy",
|
|
13 spaces, "Al ",datos_cons.fech_fi USING "yyyy"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------"
|
|
|
|
LET total_exit_act =0
|
|
BEFORE GROUP OF x.cod_cia
|
|
LET total_cia = 0
|
|
LET total_cia_ant =0
|
|
IF total_gral IS NULL THEN
|
|
LET total_gral =0
|
|
LET total_gral_ant =0
|
|
END IF
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 2," ORIGEN: ",x.descripcion
|
|
SKIP 1 LINE
|
|
ON EVERY ROW
|
|
|
|
IF tt IS NULL THEN
|
|
LET tt = 0
|
|
END IF
|
|
IF total_p is null THEN
|
|
LET total_p = 0
|
|
END IF
|
|
|
|
LET total_p = x.total_c + total_p
|
|
LET total_cia = x.total_c+ total_cia
|
|
LET total_cia_ant = x.total_a + total_cia_ant
|
|
LET descripcion = x.descrip_esp CLIPPED
|
|
IF x.total_c <> 0 THEN
|
|
|
|
LET tt = tt + 1
|
|
PRINT COLUMN 1, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-",
|
|
x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&",
|
|
COLUMN 24, X.descrip_esp,
|
|
2 spaces,x.unidad_med ,
|
|
2 spaces , x.existe_ant USING "---,-&&.###",
|
|
2 spaces, x.existe_act USING "---,-&&.###",
|
|
2 spaces, x.costo_ant USING "#,###,###.####",
|
|
2 SPACES, x.costo USING "#,###,###.####",
|
|
2 spaces, x.total_a USING "-,---,---,-##.##",
|
|
2 spaces, x.total_c USING "-,---,---,-##.##"
|
|
LET total_exit_act = total_exit_act + x.existe_act
|
|
END IF
|
|
AFTER GROUP OF x.cod_cia
|
|
PRINT COLUMN 124, "-------------",
|
|
2 spaces, "--------------"
|
|
|
|
PRINT
|
|
COLUMN 77, total_exit_act USING "#,###,###.####",
|
|
COLUMN 123,total_cia_ant USING "--,---,---,-##.##",
|
|
2 spaces, total_cia USING "--,---,---,-##.##"
|
|
LET total_gral = total_gral + total_cia
|
|
LET total_gral_ant = total_cia_ant + total_gral_ant
|
|
ON LAST ROW
|
|
|
|
PRINT COLUMN 124, "-------------",
|
|
2 spaces, "--------------"
|
|
|
|
PRINT COLUMN 124,total_gral_ant USING "##,###,###,###.##",
|
|
2 spaces, total_gral USING "--,---,---,--#.##"
|
|
|
|
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1, "==================================================",
|
|
"==================================================",
|
|
"==============================================="
|
|
|
|
PRINT COLUMN 4, "Total Registros Impresos =", tt USING "<<<<"
|
|
PRINT comp_off
|
|
END REPORT
|
|
|
|
|
|
REPORT existencia_grafica(x)
|
|
DEFINE x RECORD
|
|
cod_cia LIKE iptb00002.cod_cia,
|
|
descripcion CHAR(50),
|
|
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(45),
|
|
descrip_ing CHAR(15),
|
|
unidad_med CHAR(3),
|
|
existe_ant DEC(12,3),
|
|
costo_ant DEC(22,5),
|
|
total_a DEC(22,2),
|
|
existe_act DECIMAL(12,3),
|
|
costo DECIMAL(22,5),
|
|
total_c DECIMAL(22,2),
|
|
material, labor, gasto DECIMAL (22,2),
|
|
es_produccion BOOLEAN
|
|
#fecha DATE
|
|
END RECORD,
|
|
codigo VARCHAR(100),
|
|
costo DECIMAL(22,2),
|
|
total_cia,total_gral,total_cia_ant,total_gral_ant,total_exit_act DEC(12,2),
|
|
fecha CHAR(15)
|
|
|
|
DEFINE tt INTEGER
|
|
|
|
DEFINE producto VARCHAR(150), tipo VARCHAR(50)
|
|
|
|
|
|
DEFINE hora CHAR(5)
|
|
DEFINE l INTEGER
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
IF historico = 'N' THEN
|
|
LET tipo = 'NO HISTORICO'
|
|
ELSE
|
|
LET tipo = 'HISTORICO'
|
|
END IF
|
|
|
|
LET fecha = TODAY USING "dd/mm/yyyy"
|
|
LET hora = TIME
|
|
|
|
PRINTX p_companias.nombre,fecha, hora, tipo, datos_cons.fech_in,
|
|
datos_cons.fech_fi
|
|
|
|
|
|
LET total_exit_act =0
|
|
|
|
BEFORE GROUP OF x.cod_cia
|
|
LET total_cia = 0
|
|
LET total_cia_ant =0
|
|
IF total_gral IS NULL THEN
|
|
LET total_gral =0
|
|
LET total_gral_ant =0
|
|
END IF
|
|
|
|
PRINTX x.descripcion
|
|
|
|
ON EVERY ROW
|
|
|
|
IF tt IS NULL THEN
|
|
LET tt = 0
|
|
END IF
|
|
IF total_p is null THEN
|
|
LET total_p = 0
|
|
END IF
|
|
|
|
LET total_p = x.total_c + total_p
|
|
LET total_cia = x.total_c+ total_cia
|
|
LET total_cia_ant = x.total_a + total_cia_ant
|
|
LET descripcion = x.descrip_esp CLIPPED
|
|
|
|
# IF x.total_c <> 0 THEN
|
|
LET tt = tt + 1
|
|
LET producto = x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-",
|
|
x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&"
|
|
|
|
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.gasto IS NULL THEN
|
|
LET x.gasto = 0
|
|
END IF
|
|
|
|
LET costo = x.material + x.labor + x.gasto
|
|
|
|
LET total_exit_act = total_exit_act + x.existe_act
|
|
|
|
PRINTX producto, x.existe_act, x.costo,
|
|
x.total_a, x.total_c, x.material, x.labor, x.gasto, costo, x.descrip_esp
|
|
|
|
# END IF
|
|
|
|
AFTER GROUP OF x.cod_cia
|
|
|
|
PRINTX total_exit_act,total_cia_ant, total_cia
|
|
LET total_gral = total_gral + total_cia
|
|
LET total_gral_ant = total_cia_ant + total_gral_ant
|
|
|
|
ON LAST ROW
|
|
|
|
PRINTX total_gral_ant, total_gral, tt
|
|
|
|
END REPORT
|
|
FUNCTION ejecuta(Procedimiento,ano,mes)
|
|
DEFINE Procedimiento VARCHAR(500),
|
|
ano,mes SMALLINT
|
|
|
|
PREPARE smt FROM procedimiento
|
|
EXECUTE smt USING ano IN,mes IN,usuarios IN
|
|
END FUNCTION
|