Files
MBS/PROYECTOS/tests/generaubicacion.4gl
T

378 lines
14 KiB
Plaintext

MAIN
CONNECT TO "smarmotech" USER 'jsoto' USING 'lmmjvsd2014'
CALL actualizaExistencia()
#CALL verificadocumento()
# CALL actualizaFecha()
#CALL genera()
#CALL ACTIVADOC()
# CALL generaServicio()
#CALL actualiza()
END MAIN
FUNCTION genera()
DEFINE xbodega,idx,idx1,idx2,idx3 INT
DECLARE busca CURSOR FOR
SELECT a.cod_bodega FROM intb00009 a WHERE cod_bodega = 4
ORDER BY a.cod_bodega
{
DELETE FROM intb00010 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00045 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00043 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00046 WHERE COD_SECCION NOT IN( 1000,0)
}
FOREACH busca INTO xbodega
FOR idx=1 TO 50 #------------------------------------------>>> SECCION
# INSERT INTO intb00010 (cod_bodega,cod_Seccion,descripcion)
# VALUES (xbodega,idx,idx)
# DISPLAY "INSERTE SECCION ",idx
FOR idx1 = 31 TO 50 #--------------------------------->>> TRAMOS
INSERT INTO intb00043 (cod_bodega,cod_Seccion,cod_tramo,descripcion)
VALUES (xbodega,idx,idx1,idx1)
DISPLAY "INSERTE TRAMO ",idx1
FOR idx2=1 TO 100 #--------------------------------------->>> filas
TRY
INSERT INTO intb00045 (cod_bodega,cod_seccion,cod_tramo,cod_fila,titulo)
VALUES (xbodega,idx,idx1,idx2,idx2)
DISPLAY "INSERTE FILA ",idx2
CATCH
DISPLAY "NO INSERTE FILA: ",idx2
END TRY
FOR idx3=1 TO 100 #-------------------------------------->>> POSICION
TRY
INSERT INTO intb00046 (cod_bodega,cod_seccion,cod_tramo,cod_fila,cod_pos,titulo)
VALUES (xbodega,idx,idx1,idx2,idx3,idx3)
DISPLAY "INSERTE POS ",idx3
CATCH
DISPLAY "NO INSERTE ",idx3
END TRY
END FOR
END FOR
END FOR
END FOR
END FOREACH
END FUNCTION
FUNCTION generaServicio()
DEFINE xbodega,xcodn,xcodgrupo,xcodtipo,xcodsec INT
DECLARE buscar_bd CURSOR FOR
SELECT a.cod_bodega FROM intb00009 a WHERE a.cod_bodega = 12
ORDER BY a.cod_bodega
DECLARE buscar_pt CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec INTO xcodn,xcodgrupo,xcodtipo,xcodsec
FROM iptb00002 a WHERE a.cod_n IN (12,25) AND a.status_t IS NULL
DELETE FROM iptb00062 WHERE cod_mov = 99 AND cod_n IN (12,25) AND bodega = 12
FOREACH buscar_bd INTO xbodega
FOREACH buscar_pt
INSERT INTO iptb00062
(num_doc
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
('3'
, xcodn
,xcodgrupo
,xcodtipo
,xcodsec
,99
,xbodega
,0
,0
,0
,0
,0
,0
,'JSOTO'
,GETDATE())
DISPLAY "INSERTE ",xcodn,"-",xcodgrupo,"-",xcodtipo,"-",xcodsec," ",xbodega
END FOREACH
END FOREACH
END FUNCTION
FUNCTION actualiza()
DEFINE datos RECORD
cod_mov,num_doc,bodega,cod_n,cod_grupo,cod_tipo,cod_Sec INT,
cantidad_1,cantidad_2, cantidad2 DEC(12,5)
END RECORD,
idx int
DECLARE bubicacion CURSOR FOR
select a.cod_mov,a.num_doc,a.bodega,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
a.cantidad_1,a.cantidad_2, b.cantidad2
from iptb00006 a inner join iptb00062 b on a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and
a.cod_tipo = b.cod_tipo
and a.cod_sec = b.cod_sec and a.cod_mov = b.cod_mov and a.bodega = b.bodega and a.num_doc = b.num_doc
where b.fech_crea >= '2024-07-16' and b.cod_mov <> 99 and a.cantidad_2 <> b.cantidad2
order by a.bodega,a.cod_mov,a.num_Doc
LET idx=1
FOREACH bubicacion INTO datos.*
UPDATE iptb00062 SET cantidad = datos.cantidad_1,cantidad2 = datos.cantidad_2
WHERE cod_mov = datos.cod_mov AND num_Doc = datos.num_doc AND
bodega = datos.bodega AND cod_n = datos.cod_n AND
cod_Grupo = datos.cod_grupo AND cod_tipo = datos.cod_tipo AND
cod_sec = datos.cod_Sec
DISPLAY "CUENTA ",idx
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION ACTIVADOC()
DEFINE pcodmov,pnumdoc,pbodega INT
DECLARE buscadoc CURSOR FOR
select distinct a.bodega,a.num_doc,a.cod_mov,a.fecha,a.status_t,b.status_t
from iptb00006 a inner join iptb00062 b
on b.cod_mov = a.cod_mov and b.num_Doc = b.num_Doc and b.bodega = a.bodega
where a.fecha > '07/15/2024' and a.status_t = 'E' and b.status_t is NULL
FOREACH buscadoc INTO pbodega,pnumdoc,pcodmov
UPDATE IPTB00062 SET STATUS_T = 'E' WHERE cod_mov = pcodmov AND num_Doc = pnumdoc AND
bodega = pbodega
DISPLAY "ACTUALIZANDO....",pcodmov," ",pnumdoc," ",pbodega
END FOREACH
END FUNCTION
FUNCTION actualizaExistencia()
DEFINE existencia DEC(12,5),
pcodn,pcodgrupo,pcodtipo,pcodsec,pbodega INT,
xfecha VARCHAR(10)
LET pbodega = 1
LET xfecha = '2025-11-13'
DELETE FROM iptb00062 WHERE bodega = pbodega
DECLARE bexistencia CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega,SUM(a.cantidad_2)
FROM iptb00006 a,intb00009 b
WHERE a.status_t IS NULL AND a.fecha <= xfecha AND
a.bodega = b.cod_bodega AND A.BODEGA =pbodega
GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega
FOREACH bexistencia INTO pcodn,pcodgrupo,pcodtipo,pcodsec,pbodega,existencia
DISPLAY "DATO: ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec," bodega: ",pbodega,existencia
DELETE FROM iptb00062 WHERE COD_MOV = 99 AND cod_n = pcodn AND cod_grupo=pcodgrupo AND
cod_tipo = pcodtipo AND cod_sec = pcodsec AND
bodega = pbodega
INSERT INTO iptb00062 (num_doc,fecha,cod_mov,us_crea,fech_crea,bodega,cod_seccion,cod_tramo,cod_fila,cod_pos,
cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,cantidad2)
VALUES (1,xfecha,99,'JSOTO',getdate(),pbodega,0,0,0,0,pcodn,pcodgrupo,pcodtipo,pcodsec,existencia,existencia)
END FOREACH
END FUNCTION
FUNCTION verificadocumento()
DEFINE pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
pcantidad1,pcantidad2,pcantidad1_62,pcantidad2_62 DEC(12,5),
pfecha DATE
DECLARE verificar CURSOR FOR
SELECT a.bodega,a.num_doc,a.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,SUM(a.cantidad_1),SUM(a.cantidad_2),
a.fecha
FROM iptb00006 a
WHERE a.status_t IS NULL AND a.fecha between '07/16/2024' AND '08/15/2024' AND a.cod_mov <> 99
GROUP BY a.bodega,a.num_doc,a.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha
ORDER BY a.bodega,a.cod_mov,a.num_doc
DELETE FROM tmpdocumentos
FOREACH verificar INTO pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec,pcantidad1,pcantidad2,
pfecha
LET pcantidad2_62=null
SELECT DISTINCT a.cod_sec
FROM iptb00062 a
WHERE a.bodega = pbodega AND
a.num_doc = pnumdoc AND
a.cod_mov = pcodmov AND
a.cod_n = pcodn AND
a.cod_grupo = pcodgrupo AND
a.cod_tipo = pcodtipo AND
a.cod_Sec = pcodsec AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
INSERT INTO dbo.iptb00062
(num_doc
,fecha
,area
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
(pnumdoc
,pfecha
,1
,pcodn
,pcodgrupo
,pcodtipo
,pcodsec
,pcodmov
,pbodega
,0
,0
,0
,0
,pcantidad1,pcantidad2
,'JSOTO'
,GETDATE())
END IF
{
IF STATUS <> NOTFOUND THEN
DELETE FROM iptb00062
WHERE bodega = pbodega AND
num_doc = pnumdoc AND
cod_mov = pcodmov AND
cod_n = pcodn AND
cod_grupo = pcodgrupo AND
cod_tipo = pcodtipo AND
cod_Sec = pcodsec
END IF }
{ IF STATUS <> NOTFOUND THEN
UPDATE iptb00062 SET status_t = 'E',us_mod='jsoto',fech_mod=getdate()
WHERE bodega = pbodega AND
num_doc = pnumdoc AND
cod_mov = pcodmov AND
cod_n = pcodn AND
cod_grupo = pcodgrupo AND
cod_tipo = pcodtipo AND
cod_Sec = pcodsec
END IF
} {IF STATUS = NOTFOUND THEN
INSERT INTO dbo.iptb00062
(num_doc
,fecha
,area
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
(pnumdoc
,pfecha
,1
,pcodn
,pcodgrupo
,pcodtipo
,pcodsec
,pcodmov
,pbodega
,0
,0
,0
,0
,pcantidad1,pcantidad2
,'JSOTO'
,GETDATE())
END IF
} # IF STATUS <> NOTFOUND THEN
# SELECT ISNULL(SUM(a.cantidad),0),ISNULL(SUM(a.cantidad2),0)
# INTO pcantidad1_62,pcantidad2_62
# FROM iptb00062 a
# WHERE a.bodega = pbodega AND
# a.num_doc = pnumdoc AND
# a.cod_mov = pcodmov AND
# a.cod_n = pcodn AND
# a.cod_grupo = pcodgrupo AND
# a.cod_tipo = pcodtipo AND
# a.cod_Sec = pcodsec
# IF pcantidad2 <> pcantidad2_62 THEN
# UPDATE iptb00062 SET cantidad = pcantidad1,
# cantidad2 = pcantidad2,
# us_mod = 'JSOTO',
# fech_mod = getdate()
# WHERE bodega = pbodega AND cod_mov = pcodmov AND num_doc = pnumdoc AND
# cod_n = pcodn AND cod_Grupo = pcodgrupo AND
# cod_tipo = pcodtipo AND cod_sec = pcodsec
# END IF
# ELSE
# END IF
INSERT INTO tmpdocumentos VALUES (pnumdoc,pcodmov,pbodega,pcodn,pcodgrupo,
pcodtipo,
pcodsec,
pcantidad1,
pcantidad2,
pcantidad1_62,
pcantidad2_62)
DISPLAY "dato: ",pbodega," nu ",pnumdoc," cod ",pcodmov," codigo ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec,"-",pcantidad1," ", pcantidad2
END FOREACH
END FUNCTION
FUNCTION actualizaFecha()
DEFINE pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
pfecha DATE
DECLARE buscaFecha CURSOR FOR
SELECT DISTINCT a.fecha,a.bodega,a.cod_mov,a.num_doc,a.cod_n,a.cod_Grupo,a.cod_tipo,
a.cod_sec
FROM iptb00006 a,iptb00062 b
WHERE a.bodega = b.bodega AND
a.cod_mov = b.cod_mov AND a.fecha > '07/14/2024' AND a.cod_mov <> 99 AND
b.cod_mov <> 99 and
a.num_doc = b.num_doc AND
a.cod_n = b.cod_n AND
a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND
a.cod_sec = b.cod_sec AND
a.status_t IS NULL
FOREACH buscaFecha INTO pfecha,pbodega,pcodmov,pnumdoc,pcodn,pcodgrupo,pcodtipo,pcodsec
UPDATE iptb00062 SET fecha = pfecha,us_mod = 'JSOTO',fech_mod=getdate()
WHERE bodega = pbodega AND cod_mov=pcodmov AND num_doc = pnumdoc AND
cod_n = pcodn AND cod_grupo = pcodgrupo AND cod_tipo = pcodtipo AND
cod_sec = pcodsec
DISPLAY "dato: ",pbodega," nu ",pnumdoc," cod ",pcodmov," codigo ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec
END FOREACH
END FUNCTION