266 lines
8.3 KiB
Plaintext
266 lines
8.3 KiB
Plaintext
DEFINE usuarios, clave STRING
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
CALL Ajustar_Cantidad2()
|
|
END MAIN
|
|
|
|
FUNCTION Ajustar_Cantidad()
|
|
|
|
DEFINE
|
|
Data DYNAMIC ARRAY OF RECORD
|
|
bodega TINYINT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62, cantidad_2_06 DECIMAL(12, 5)
|
|
END RECORD,
|
|
Data2 DYNAMIC ARRAY OF RECORD
|
|
idrow INT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62 DECIMAL(12, 5),
|
|
cod_mov INT
|
|
END RECORD,
|
|
Data3 DYNAMIC ARRAY OF RECORD
|
|
idrow INT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62 DECIMAL(12, 5),
|
|
cod_mov INT
|
|
END RECORD,
|
|
i, j, x INT,
|
|
query, query2, query3 STRING
|
|
|
|
DEFINE checking INT
|
|
|
|
PREPARE query
|
|
FROM "SELECT t1.bodega,
|
|
t1.cod_n,
|
|
t1.cod_grupo,
|
|
t1.cod_tipo,
|
|
t1.cod_sec,
|
|
t1.cantidad_iptb00062,
|
|
t2.cantidad_iptb00006
|
|
FROM(SELECT bodega,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
SUM(cantidad2) AS cantidad_iptb00062
|
|
FROM iptb00062
|
|
WHERE status_t IS NULL
|
|
GROUP BY bodega, cod_n, cod_grupo, cod_tipo, cod_sec)
|
|
t1
|
|
INNER
|
|
JOIN(SELECT bodega,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
SUM(cantidad_2) AS cantidad_iptb00006
|
|
FROM iptb00006
|
|
WHERE status_t IS NULL
|
|
GROUP BY bodega, cod_n, cod_grupo, cod_tipo, cod_sec)
|
|
t2
|
|
ON t1.cod_n = t2.cod_n
|
|
AND t1.cod_grupo = t2.cod_grupo
|
|
AND t1.cod_tipo = t2.cod_tipo
|
|
AND t1.cod_sec = t2.cod_sec
|
|
AND t1.bodega = t2.bodega
|
|
WHERE t1.cantidad_iptb00062 <> t2.cantidad_iptb00006
|
|
AND t2.bodega = 5
|
|
AND t1.bodega = 5
|
|
AND t1.cod_n NOT IN (12, 5, 25)"
|
|
|
|
DECLARE buscar CURSOR FOR query
|
|
|
|
LET i = 1
|
|
|
|
FOREACH buscar INTO Data[i].*
|
|
|
|
INITIALIZE data2 TO NULL
|
|
LET j = 1
|
|
|
|
PREPARE query2
|
|
FROM 'SELECT idrow, cod_n,cod_grupo,cod_tipo,cod_sec, cantidad2, cod_mov
|
|
FROM iptb00062
|
|
WHERE cod_n = '
|
|
|| data[i].cod_n
|
|
|| '
|
|
AND cod_grupo = '
|
|
|| data[i].cod_grupo
|
|
|| '
|
|
AND cod_tipo ='
|
|
|| data[i].cod_tipo
|
|
|| '
|
|
AND cod_sec ='
|
|
|| data[i].cod_sec
|
|
|| '
|
|
AND bodega ='
|
|
|| data[i].bodega
|
|
|| '
|
|
AND status_t IS NULL '
|
|
|
|
DECLARE buscar2 CURSOR FOR query2
|
|
|
|
FOREACH buscar2 INTO data2[j].*
|
|
|
|
IF data[i].cantidad_2_06 = data2[j].cantidad_2_62
|
|
AND data2[j].cod_mov = 99 THEN
|
|
|
|
DISPLAY "Encontró registro con igualdad de existencia en mov 99"
|
|
|
|
LET x = 1
|
|
|
|
WHILE x <= data2.getLength()
|
|
|
|
IF data2[x].cod_mov <> 99 THEN
|
|
|
|
DELETE FROM iptb00062 WHERE idrow = data2[x].idrow
|
|
DISPLAY "ejecutó query (?"
|
|
|
|
END IF
|
|
|
|
LET x = x + 1
|
|
|
|
END WHILE
|
|
|
|
END IF
|
|
|
|
LET j = j + 1
|
|
|
|
END FOREACH
|
|
|
|
LET i = i + 1
|
|
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION Ajustar_Cantidad2()
|
|
|
|
DEFINE
|
|
Data DYNAMIC ARRAY OF RECORD
|
|
bodega TINYINT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62, cantidad_2_06 DECIMAL(12, 5)
|
|
END RECORD,
|
|
Data2 DYNAMIC ARRAY OF RECORD
|
|
idrow INT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62 DECIMAL(12, 5),
|
|
cod_mov INT
|
|
END RECORD,
|
|
Data3 DYNAMIC ARRAY OF RECORD
|
|
idrow INT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
cantidad_2_62 DECIMAL(12, 5),
|
|
cod_mov INT
|
|
END RECORD,
|
|
i, j, x INT,
|
|
query, query2, query3 STRING
|
|
|
|
DEFINE checking INT, container DECIMAL(12,2)
|
|
|
|
PREPARE query
|
|
FROM "SELECT t1.bodega,
|
|
t1.cod_n,
|
|
t1.cod_grupo,
|
|
t1.cod_tipo,
|
|
t1.cod_sec,
|
|
t1.cantidad_iptb00062,
|
|
t2.cantidad_iptb00006
|
|
FROM(SELECT bodega,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
SUM(cantidad2) AS cantidad_iptb00062
|
|
FROM iptb00062
|
|
WHERE status_t IS NULL
|
|
GROUP BY bodega, cod_n, cod_grupo, cod_tipo, cod_sec)
|
|
t1
|
|
INNER
|
|
JOIN(SELECT bodega,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
SUM(cantidad_2) AS cantidad_iptb00006
|
|
FROM iptb00006
|
|
WHERE status_t IS NULL
|
|
GROUP BY bodega, cod_n, cod_grupo, cod_tipo, cod_sec)
|
|
t2
|
|
ON t1.cod_n = t2.cod_n
|
|
AND t1.cod_grupo = t2.cod_grupo
|
|
AND t1.cod_tipo = t2.cod_tipo
|
|
AND t1.cod_sec = t2.cod_sec
|
|
AND t1.bodega = t2.bodega
|
|
WHERE t1.cantidad_iptb00062 <> t2.cantidad_iptb00006
|
|
AND t1.cantidad_iptb00062 < t2.cantidad_iptb00006
|
|
AND t2.bodega = 5
|
|
AND t1.bodega = 5
|
|
AND t1.cod_n NOT IN (12, 5, 25)"
|
|
|
|
DECLARE buscar3 CURSOR FOR query
|
|
|
|
LET i = 1
|
|
|
|
FOREACH buscar3 INTO Data[i].*
|
|
|
|
INITIALIZE data2 TO NULL
|
|
LET j = 1
|
|
|
|
PREPARE query2
|
|
FROM 'SELECT idrow, cod_n,cod_grupo,cod_tipo,cod_sec, cantidad2, cod_mov
|
|
FROM iptb00062
|
|
WHERE cod_n = '
|
|
|| data[i].cod_n
|
|
|| '
|
|
AND cod_grupo = '
|
|
|| data[i].cod_grupo
|
|
|| '
|
|
AND cod_tipo ='
|
|
|| data[i].cod_tipo
|
|
|| '
|
|
AND cod_sec ='
|
|
|| data[i].cod_sec
|
|
|| '
|
|
AND bodega ='
|
|
|| data[i].bodega
|
|
|| '
|
|
AND status_t IS NULL '
|
|
|
|
DECLARE buscar4 CURSOR FOR query2
|
|
|
|
FOREACH buscar4 INTO data2[j].*
|
|
|
|
IF data2[j].cod_mov = 99 THEN
|
|
LET container = data[i].cantidad_2_06 - data[i].cantidad_2_62
|
|
|
|
UPDATE iptb00062 SET cantidad2 = data2[j].cantidad_2_62 + container
|
|
EXIT FOREACH
|
|
|
|
END IF
|
|
|
|
LET j = j + 1
|
|
|
|
END FOREACH
|
|
|
|
LET i = i + 1
|
|
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
{ Query para buscar el area en la 06
|
|
|
|
select b.idrow, a.area, 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, b.fech_crea,
|
|
a.status_t as estadoiptb06, b.status_t as estado62
|
|
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 a.cantidad_2 = b.cantidad2 and a.cantidad_1 = b.cantidad and a.area is not null and b.cod_mov <> 99
|
|
order by a.area, a.bodega,a.cod_mov,a.num_Doc }
|