Files
MBS/PROYECTO/ipdir/ipprrp009.4gl
T
jpegueroandClaude Sonnet 5 c795294090 Renombrar selectOutput() a selectOutputSimple() para evitar choque
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>
2026-09-30 10:48:03 -04:00

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