Files
MBS/PROYECTOS/ipdir/ipprrp009.4gl
T

816 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 selectOutput() 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
DISPLAY select_act
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
DISPLAY "imprime"
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