Files
MBS/PROYECTOS/ipdir - 21102021/ipprrp016.4gl
T

347 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IPPRRP016
OBJETIVO : REPORTE EXISTENCIA SHOWROOM
Con Entradas y Salidas.
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Agosto 27, 1997.
-------------------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE usuario CHAR(9)
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL ipprrp016()
END MAIN
FUNCTION ipprrp016()
DEFINE mes CHAR(2)
DEFINE idx_ant,idx_cos,idx_act SMALLINT
DEFINE ano_act CHAR(4)
DEFINE salir,primera CHAR(1)
DEFINE balance_in DECIMAL(12,2)
DEFINE existe RECORD
cod_mov SMALLINT,
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 LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
fecha DATE,
existe_act DECIMAL(12,5),
cantidad DECIMAL(12,5),
codigo CHAR(7)
END RECORD
DEFINE costos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
fecha CHAR(2),
costo_st DECIMAL(12,5)
END RECORD
DEFINE actual RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE iptb00006.cantidad_2
END RECORD
DEFINE anterior RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE iptb00006.cantidad_2
END RECORD
DEFINE select_cost,select_act,select_ant CHAR(1000)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ipfmrp018 FROM "ipfmrp018"
DISPLAY FORM ipfmrp018
CALL pantalla()
DISPLAY "ipprrp016" AT 4,3
DISPLAY "Existencia En Show-Room" AT 6,28
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
LABEL vuelve:
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
AFTER FIELD fech_in
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
GOTO vuelve
END IF
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
GOTO vuelve
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 a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo, cod_tipo,cod_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
SELECT UNIQUE a.usuario INTO usuario FROM seg0001 a WHERE a.usuario = USER
LET select_cost =
"SELECT c.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" a.unidad_med,c.fecha,c.cantidad_2 ",
"FROM iptb00002 a,OUTER iptb00006 c ",
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and c.cod_mov ",
" in (7,3) and ",
criterio CLIPPED,") AND a.status_t is null and (c.fecha <= ?) and ",
" c.status_t IS NULL ",
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.fecha "
DISPLAY "<< Buscando Informacion... Espere Por Favor" AT 19,14
PREPARE comando FROM select_cost
DECLARE busca CURSOR FOR comando
OPEN busca USING datos_cons.fech_fi
LET select_cost =
"SELECT COUNT(*) FROM iptb00002 a,OUTER iptb00006 c ",
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and c.cod_mov ",
" in (7, 3) and ",criterio CLIPPED,") AND a.status_t is null and ",
" (c.fecha <= ?) and c.status_t IS NULL "
PREPARE comando2 FROM select_cost
DECLARE busca1 CURSOR FOR comando2
OPEN busca1 USING datos_cons.fech_fi
DISPLAY "<< Contando Informacion... Espere Por Favor" AT 19,14
FETCH busca1 INTO regi
START REPORT prt_showr TO "C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET p_param = "S"
WHILE status != notfound
FETCH busca 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
CALL termometro(regi,p_param)
LET p_param = "N"
IF existe.existe_act IS NULL THEN
LET existe.existe_act = 0
END IF
LET existe.codigo = existe.cod_n using "&",existe.cod_grupo using
"&",existe.cod_tipo using "&&",existe.cod_sec
using "&&&"
IF existe.cod_mov = 3 THEN
LET existe.existe_act = existe.existe_act * -1
END IF
IF existe.cod_mov = 7 THEN
LET existe.existe_act = existe.existe_act * -1
END IF
OUTPUT TO REPORT prt_showr(existe.*)
END WHILE
FINISH REPORT prt_showr
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT prt_showr(x)
DEFINE x RECORD
cod_mov SMALLINT,
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 LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
fecha DATE,
existe_act DECIMAL(12,5),
cantidad DECIMAL(12,5),
codigo CHAR(7)
END RECORD
DEFINE l,tt INTEGER
DEFINE descrip_esp CHAR(70)
DEFINE unidad_med LIKE iptb00002.unidad_med,
referencia CHAR(15)
DEFINE t_valor,costo,cantidad,entradas,salidas,total_c,
total_p DECIMAL (12,2)
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(3)
DEFINE normal CHAR(3)
DEFINE doce CHAR(3)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
#ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha
FORMAT
PAGE HEADER
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 27, ASCII 77
LET normal= ASCII 27,ASCII 80
LET l = (127 - LENGTH(p_companias.nombre CLIPPED))/2
LET hora = time
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "ipprrp016",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 120, "Pag. ",pageno using "###"
PRINT COLUMN 42, " Sistema de Inventario de Productos",
COLUMN 120, today using "dd/mm/yyyy"
PRINT COLUMN 42, " Existencia En El ShowRoom",
COLUMN 120, hora
SKIP 1 LINE
PRINT COLUMN 1,"Movimientos Del: ",
datos_cons.fech_in using "dd/mm/yyyy",
" AL ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"-------------------------------------------------" ,
"-----------------------------------"
PRINT COLUMN 63, "EXISTENCIA",
COLUMN 98, "COSTO",
COLUMN 105, "EXISTENCIA"
PRINT COLUMN 1, "CODIGO",
COLUMN 12, "DESCRIPCION",
COLUMN 60, "AL ",datos_cons.fech_in - 1 using "dd/mm/yyyy",
COLUMN 74, "ENTRADAS",
COLUMN 87, "SALIDAS",
COLUMN 103, "STD",
COLUMN 107, "AL ", datos_cons.fech_fi using "dd/mm/yyyy",
COLUMN 127, "VALOR"
PRINT COLUMN 1, "--------------------------------------------------",
"-------------------------------------------------",
"-----------------------------------"
SKIP 1 LINE
BEFORE GROUP OF x.codigo
LET entradas = 0
LET salidas = 0
AFTER GROUP OF x.codigo
LET descrip_esp = NULL
LET unidad_med = NULL
LET cantidad = 1
LET x.existe_act = 0
LET costo = 0
SELECT MAX(a.material+a.labor+a.gastos) INTO costo FROM iptb00004 a
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND
a.status_t IS NULL AND a.ventas = "1" AND mes_fin = 12 AND
a.ano = YEAR(datos_cons.fech_fi)
SELECT a.descrip_esp,a.descrip_ing,a.unidad_med
INTO descrip_esp,referencia,unidad_med
FROM iptb00002 a
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET STATUS = 0
LET descrip_esp = "NO TIENE DESCRIPCION"
LET unidad_med = " "
END IF
LET descrip_esp = descrip_esp CLIPPED
LET entradas= (GROUP SUM(x.existe_act) WHERE x.fecha >= datos_cons.fech_in
AND x.existe_act > 0)
LET salidas =(GROUP SUM(x.existe_act) WHERE x.fecha >= datos_cons.fech_in
AND x.existe_act < 0)
IF salidas IS NULL THEN
LET salidas = 0
END IF
IF t_valor IS NULL THEN
LET t_valor = 0
END IF
IF entradas IS NULL THEN
LET entradas = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",descrip_esp[1,45] CLIPPED,
COLUMN 60, GROUP SUM(x.existe_act)
WHERE x.fecha <= datos_cons.fech_in - 1
USING "---,---.###",
COLUMN 72, entradas using "###,###.###",
COLUMN 84, salidas using "###,###.###",
COLUMN 96, costo USING "###,###.###",
COLUMN 108, GROUP SUM(x.existe_act) USING "---,---.###",
COLUMN 120, costo*GROUP SUM(x.existe_act) USING "--,---,---.##"
LET t_valor = t_valor + (costo * GROUP SUM(x.existe_act))
IF tt IS NULL THEN
LET tt = 0
END IF
LET tt = tt + 1
ON LAST ROW
SKIP 1 LINES
PRINT COLUMN 1, "==================================================",
"==================================================",
"==================================="
PRINT COLUMN 4, "Total Registros Impresos = ", tt USING "<<<<",
COLUMN 120, t_valor USING "--,---,---.##"
PRINT COLUMN 4, comp_off
END REPORT