Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
761 lines
22 KiB
Plaintext
761 lines
22 KiB
Plaintext
GLOBALS "ipprgb000.4gl"
|
|
|
|
DEFINE record1 DYNAMIC ARRAY OF RECORD
|
|
id_seccion INT,
|
|
Desc_seccion STRING,
|
|
id_tramo INT,
|
|
Desc_tramo STRING,
|
|
id_fila INT,
|
|
Desc_fila STRING,
|
|
id_posicion INT,
|
|
Desc_posicion STRING,
|
|
unidades DECIMAL(12, 5),
|
|
cantidad DECIMAL(12, 5),
|
|
INDEX INT
|
|
END RECORD
|
|
|
|
DEFINE record2 DYNAMIC ARRAY OF RECORD
|
|
seccion INT,
|
|
tramo INT,
|
|
fila INT,
|
|
posicion INT,
|
|
unidades DECIMAL(12, 5),
|
|
cantidad DECIMAL(12, 5),
|
|
INDEX INT
|
|
END RECORD
|
|
|
|
DEFINE Disponible RECORD
|
|
ExOnTable DECIMAL(12, 5), --Existencia en la iptb00062
|
|
ExOnDisplay DECIMAL(12, 5), --Existencia dinamica en el programa
|
|
UNITS DECIMAL(12, 5),
|
|
existence DECIMAL(12, 5)
|
|
END RECORD
|
|
|
|
DEFINE
|
|
exitFlag BOOLEAN,
|
|
numero_msg, TABULAR INT
|
|
|
|
DEFINE detalle VARCHAR(255)
|
|
|
|
FUNCTION InsertaUbicacionDH(prod1, ubicacion)
|
|
|
|
DEFINE bodegaCont, i INT --BodegaContainer--
|
|
DEFINE producto, ubicacion STRING
|
|
DEFINE factor, container DECIMAL(12, 5)
|
|
|
|
DEFINE prod1 RECORD
|
|
estado VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(180),
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
bodega CHAR(50),
|
|
existencia DECIMAL(12, 5),
|
|
cantidad_ordenes DEC(12, 5),
|
|
disponible DEC(12, 5),
|
|
reservado DEC(12, 5),
|
|
transito DEC(12, 5),
|
|
valorOrden DEC(12, 5),
|
|
parent_id, child_id VARCHAR(20)
|
|
END RECORD
|
|
|
|
LET INT_FLAG = TRUE
|
|
LET exitFlag = FALSE
|
|
LET TABULAR = 0
|
|
|
|
CALL record1.clear()
|
|
CALL record2.clear()
|
|
|
|
CALL BuscarData(prod1.*, ubicacion) RETURNING factor, bodegaCont, producto
|
|
|
|
OPEN WINDOW w1 WITH FORM "ipfmmt006"
|
|
|
|
DISPLAY BY NAME producto
|
|
|
|
CALL init_seccion(bodegaCont)
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
DISPLAY ARRAY record1 TO record_left.*
|
|
END DISPLAY
|
|
|
|
INPUT BY NAME detalle
|
|
END INPUT
|
|
|
|
INPUT ARRAY record2 FROM record_right.* ATTRIBUTES(WITHOUT DEFAULTS,AUTO APPEND = FALSE)
|
|
|
|
ON CHANGE seccion
|
|
CALL init_tramo(bodegaCont, record2[arr_curr()].seccion)
|
|
|
|
ON CHANGE tramo
|
|
CALL init_fila(
|
|
bodegaCont,
|
|
record2[arr_curr()].seccion,
|
|
record2[arr_curr()].tramo)
|
|
|
|
ON CHANGE fila
|
|
CALL init_posicion(
|
|
bodegaCont,
|
|
record2[arr_curr()].seccion,
|
|
record2[arr_curr()].tramo,
|
|
record2[arr_curr()].fila)
|
|
|
|
ON CHANGE unidades1
|
|
LET record2[arr_curr()].cantidad =
|
|
record2[arr_curr()].unidades * factor
|
|
LET INT_FLAG = FALSE
|
|
|
|
END INPUT
|
|
|
|
ON ACTION right1
|
|
CALL right1(DIALOG)
|
|
|
|
ON ACTION ACCEPT ATTRIBUTES(TEXT = "Guardar")
|
|
LET container = record2[arr_curr()].unidades * factor
|
|
|
|
DISPLAY factor
|
|
DISPLAY container
|
|
DISPLAY record2[arr_curr()].cantidad
|
|
|
|
IF record2[arr_curr()].cantidad = container THEN
|
|
|
|
CALL InsertFunction(prod1.*, bodegaCont) RETURNING INT_FLAG
|
|
|
|
ELSE
|
|
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"DEBES TABULAR LAS UNIDADES ANTES DE GUARDAR",
|
|
"INFO")
|
|
|
|
LET INT_FLAG = FALSE
|
|
|
|
END IF
|
|
|
|
IF INT_FLAG THEN
|
|
CALL record1.clear()
|
|
CALL record2.clear()
|
|
CALL BuscarData(
|
|
prod1.*, ubicacion)
|
|
RETURNING factor, bodegaCont, producto
|
|
{ CALL DefaultLocations(
|
|
prod1.existencia,
|
|
factor,
|
|
prod1.cod_n,
|
|
prod1.cod_grupo,
|
|
prod1.cod_tipo,
|
|
prod1.cod_sec,
|
|
bodegaCont)}
|
|
|
|
END IF
|
|
|
|
ON ACTION Salir ATTRIBUTES(TEXT = "Salir")
|
|
EXIT DIALOG
|
|
|
|
END DIALOG
|
|
CLOSE WINDOW w1
|
|
RETURN exitFlag
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION BuscarData(prod1, ubicacion) --Buscar las informaciones necesarias
|
|
|
|
DEFINE prod1 RECORD
|
|
estado VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(180),
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
bodega CHAR(50),
|
|
existencia DECIMAL(12, 5),
|
|
cantidad_ordenes DEC(12, 5),
|
|
disponible DEC(12, 5),
|
|
reservado DEC(12, 5),
|
|
transito DEC(12, 5),
|
|
valorOrden DEC(12, 5),
|
|
parent_id, child_id VARCHAR(20)
|
|
END RECORD
|
|
|
|
DEFINE
|
|
producto, ubicacion, query STRING,
|
|
factor DECIMAL(12, 5),
|
|
bodegaCont, i INT
|
|
|
|
DEFINE
|
|
tok base.StringTokenizer,
|
|
SplittedLocation DYNAMIC ARRAY OF STRING
|
|
|
|
SELECT factor_conv
|
|
INTO factor
|
|
FROM iptb00001
|
|
WHERE cod_n = prod1.cod_n
|
|
AND cod_grupo = prod1.cod_grupo
|
|
AND cod_tipo = prod1.cod_tipo
|
|
AND cod_sec = prod1.cod_sec
|
|
AND status_t IS NULL
|
|
|
|
LET producto =
|
|
prod1.descrip_esp CLIPPED,
|
|
" | " CLIPPED,
|
|
prod1.cod_n CLIPPED,
|
|
prod1.cod_grupo CLIPPED,
|
|
prod1.cod_tipo CLIPPED,
|
|
prod1.cod_sec CLIPPED
|
|
|
|
SELECT DISTINCT a.cod_bodega
|
|
INTO bodegaCont
|
|
FROM intb00009 a INNER JOIN iptb00006 b ON a.cod_bodega = b.bodega
|
|
WHERE b.cod_n = prod1.cod_n
|
|
AND b.cod_grupo = prod1.cod_grupo
|
|
AND b.cod_tipo = prod1.cod_tipo
|
|
AND b.cod_sec = prod1.cod_sec
|
|
AND a.descripcion = prod1.bodega
|
|
|
|
LET idx = 1
|
|
--LET disponible.ExOnTable = 0
|
|
LET i = 1
|
|
|
|
IF ubicacion IS NOT NULL THEN
|
|
LET tok = base.StringTokenizer.create(ubicacion, "|")
|
|
|
|
WHILE tok.hasMoreTokens()
|
|
|
|
LET SplittedLocation[i] = tok.nextToken().trim() CLIPPED
|
|
LET i = i + 1
|
|
|
|
END WHILE
|
|
|
|
END IF
|
|
|
|
LET query =
|
|
"SELECT cod_seccion,
|
|
cod_tramo,
|
|
cod_fila,
|
|
cod_pos,
|
|
SUM(cantidad),
|
|
SUM(cantidad2)
|
|
FROM iptb00062
|
|
WHERE cod_n = "
|
|
|| prod1.cod_n
|
|
|| "
|
|
AND cod_grupo = "
|
|
|| prod1.cod_grupo
|
|
|| "
|
|
AND cod_tipo = "
|
|
|| prod1.cod_tipo
|
|
|| "
|
|
AND cod_sec = "
|
|
|| prod1.cod_sec
|
|
|| "
|
|
AND bodega = "
|
|
|| bodegaCont
|
|
|| "
|
|
AND status_t is null"
|
|
|
|
IF splittedLocation.getLength() > 0 THEN
|
|
CASE splittedLocation.getLength()
|
|
|
|
WHEN 2
|
|
LET query = query, " AND cod_seccion = ", SplittedLocation[2]
|
|
--DISPLAY query
|
|
EXIT CASE
|
|
|
|
WHEN 3
|
|
LET query =
|
|
query,
|
|
" AND cod_seccion = ",
|
|
SplittedLocation[2],
|
|
" and cod_tramo = ",
|
|
SplittedLocation[3]
|
|
--DISPLAY query
|
|
EXIT CASE
|
|
|
|
WHEN 4
|
|
LET query =
|
|
query,
|
|
" AND cod_seccion = "
|
|
|| SplittedLocation[2]
|
|
|| " and cod_tramo = "
|
|
|| SplittedLocation[3]
|
|
|| " and cod_fila = "
|
|
|| SplittedLocation[4]
|
|
--DISPLAY query
|
|
EXIT CASE
|
|
|
|
WHEN 5
|
|
LET query =
|
|
query,
|
|
" AND cod_seccion = "
|
|
|| SplittedLocation[2]
|
|
|| " and cod_tramo = "
|
|
|| SplittedLocation[3]
|
|
|| " and cod_fila = "
|
|
|| SplittedLocation[4]
|
|
|| " and cod_pos = "
|
|
|| SplittedLocation[5]
|
|
--DISPLAY query
|
|
EXIT CASE
|
|
|
|
OTHERWISE
|
|
DISPLAY "ERROR QUERY UBICACIÓN"
|
|
EXIT CASE
|
|
|
|
END CASE
|
|
END IF
|
|
|
|
LET query =
|
|
query || " GROUP BY cod_seccion, cod_tramo, cod_fila, cod_pos
|
|
HAVING SUM(cantidad2) <> 0"
|
|
|
|
PREPARE result FROM query
|
|
DECLARE buscar CURSOR FOR result
|
|
|
|
FOREACH buscar
|
|
INTO record1[idx].id_seccion,
|
|
record1[idx].id_tramo,
|
|
record1[idx].id_fila,
|
|
record1[idx].id_posicion,
|
|
record1[idx].unidades,
|
|
record1[idx].cantidad
|
|
|
|
-- LET Disponible.ExOnTable = Disponible.ExOnTable + record1[idx].cantidad
|
|
|
|
LET record1[idx].INDEX = idx
|
|
|
|
SELECT a.descripcion, b.descripcion, c.titulo, d.titulo
|
|
INTO record1[idx].Desc_seccion,
|
|
record1[idx].Desc_tramo,
|
|
record1[idx].Desc_fila,
|
|
record1[idx].Desc_posicion
|
|
FROM intb00010 a
|
|
INNER
|
|
JOIN intb00043 b
|
|
ON a.cod_seccion = b.cod_seccion
|
|
AND a.cod_bodega = b.cod_bodega
|
|
INNER
|
|
JOIN intb00045 c
|
|
ON c.cod_seccion = b.cod_seccion
|
|
AND c.cod_tramo = b.cod_tramo
|
|
AND c.cod_bodega = b.cod_bodega
|
|
INNER
|
|
JOIN intb00046 d
|
|
ON d.cod_seccion = c.cod_seccion
|
|
AND d.cod_tramo = c.cod_tramo
|
|
AND d.cod_fila = c.cod_fila
|
|
AND d.cod_bodega = c.cod_bodega
|
|
WHERE a.cod_bodega = bodegaCont
|
|
AND a.cod_seccion = record1[idx].id_seccion
|
|
AND b.cod_tramo = record1[idx].id_tramo
|
|
AND c.cod_fila = record1[idx].id_fila
|
|
AND d.cod_pos = record1[idx].id_posicion
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
RETURN factor, bodegaCont, producto
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION right1(d) --funcion para pasar los datos de izquierda a derecha
|
|
|
|
DEFINE d, myd ui.Dialog
|
|
DEFINE idx, lastRight INT
|
|
LET myd = d
|
|
LET idx = d.getCurrentRow("record_left")
|
|
IF idx < 1 THEN
|
|
RETURN
|
|
END IF
|
|
IF record1[idx].cantidad > 0 THEN
|
|
LET lastRight = record2.getLength() + 1
|
|
CALL myd.appendRow("record_right")
|
|
LET record2[lastRight].unidades = record1[idx].unidades
|
|
LET record2[lastRight].cantidad = record1[idx].cantidad
|
|
LET record2[lastRight].index = record1[idx].index
|
|
--d.getCurrentRow("record_left")
|
|
--CALL record1.deleteElement(idx)
|
|
CALL d.setCurrentRow("record_right", lastRight)
|
|
ELSE
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"EXISTENCIA NEGATIVA EN ESTA UBICACION, NO PUEDE REALIZAR TRANSACCION",
|
|
"INFO")
|
|
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION InsertFunction(prod1, bodegaCont)
|
|
|
|
DEFINE prod1 RECORD
|
|
estado VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(180),
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
bodega CHAR(50),
|
|
existencia DECIMAL(12, 5),
|
|
cantidad_ordenes DEC(12, 5),
|
|
disponible DEC(12, 5),
|
|
reservado DEC(12, 5),
|
|
transito DEC(12, 5),
|
|
valorOrden DEC(12, 5),
|
|
parent_id, child_id VARCHAR(20)
|
|
END RECORD
|
|
|
|
DEFINE
|
|
i, j, bodegaCont, numDoc_Entrada, numDoc_Salida INT,
|
|
flag BOOLEAN,
|
|
inspector, All_Units, All_Existence DECIMAL(12, 5)
|
|
|
|
LET flag = TRUE
|
|
LET inspector = 0.0
|
|
LET all_units = 0
|
|
LET all_existence = 0
|
|
LET numero_msg = 1
|
|
|
|
IF record2.getLength() = 0 THEN
|
|
|
|
LET flag = FALSE
|
|
CALL msg(16)
|
|
RETURN flag
|
|
|
|
ELSE
|
|
|
|
FOR i = 1 TO record2.getLength()
|
|
|
|
IF record2[i].seccion IS NULL
|
|
OR record2[i].tramo IS NULL
|
|
OR record2[i].fila IS NULL
|
|
OR record2[i].posicion IS NULL
|
|
OR record2[i].unidades IS NULL
|
|
OR record2[i].cantidad IS NULL THEN
|
|
|
|
CALL msg(16)
|
|
|
|
LET flag = FALSE
|
|
|
|
RETURN flag
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
END IF
|
|
|
|
|
|
FOR i = 1 TO record1.getLength()
|
|
|
|
FOR j = 1 TO record2.getLength()
|
|
|
|
IF record1[i].INDEX = record2[j].INDEX THEN
|
|
|
|
LET inspector = inspector + record2[j].cantidad
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
IF inspector > record1[i].cantidad THEN
|
|
|
|
CALL fgl_winmessage(
|
|
'EXISTENCIA DE SALIDA EXCEDE EXISTENCIA ORIGINAL',
|
|
'Existe una transferencia de salida que excede la existencia de origen',
|
|
NULL)
|
|
|
|
LET flag = FALSE
|
|
|
|
RETURN flag
|
|
|
|
ELSE
|
|
|
|
LET inspector = 0.0
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
|
|
IF flag THEN
|
|
|
|
LET exitFlag = TRUE
|
|
|
|
SELECT num_doc
|
|
INTO numDoc_Salida
|
|
FROM iptb00007
|
|
WHERE cod_mov = 101 AND bodega = bodegaCont
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
INSERT INTO iptb00007 VALUES(0, 101, NULL, usuarios, CURRENT YEAR TO FRACTION,
|
|
NULL, NULL, bodegaCont)
|
|
|
|
LET NumDoc_Salida = 1
|
|
ELSE
|
|
LET numDoc_Salida = numDoc_Salida + 1
|
|
END IF
|
|
|
|
SELECT num_doc
|
|
INTO numDoc_Entrada
|
|
FROM iptb00007
|
|
WHERE cod_mov = 100 AND bodega = bodegaCont
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
INSERT INTO iptb00007 VALUES(0, 100, NULL, usuarios, CURRENT YEAR TO FRACTION,
|
|
NULL, NULL, bodegaCont)
|
|
|
|
LET numDoc_Entrada = 1
|
|
ELSE
|
|
LET numDoc_Entrada = numDoc_Entrada + 1
|
|
END IF
|
|
|
|
FOR i = 1 TO record2.getLength()
|
|
|
|
LET ALL_units = ALL_units + record2[i].unidades
|
|
LET ALL_existence = ALL_existence + record2[i].cantidad
|
|
|
|
BEGIN WORK
|
|
|
|
DISPLAY "CICLO ", i
|
|
|
|
TRY
|
|
|
|
INSERT INTO iptb00062(
|
|
num_doc,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cod_mov,
|
|
bodega,
|
|
cod_seccion,
|
|
cod_tramo,
|
|
cod_fila,
|
|
cod_pos,
|
|
cantidad,
|
|
cantidad2,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(numDoc_Salida,
|
|
1,
|
|
prod1.cod_n,
|
|
prod1.cod_grupo,
|
|
prod1.cod_tipo,
|
|
prod1.cod_sec,
|
|
101,
|
|
bodegaCont,
|
|
record1[record2[i].index].id_seccion,
|
|
record1[record2[i].index].id_tramo,
|
|
record1[record2[i].index].id_fila,
|
|
record1[record2[i].index].id_posicion,
|
|
record2[i].unidades * (-1),
|
|
record2[i].cantidad * (-1),
|
|
NULL,
|
|
usuarios,
|
|
CURRENT YEAR TO FRACTION)
|
|
|
|
DISPLAY "primer insert a la 62"
|
|
|
|
UPDATE iptb00007
|
|
SET num_doc = numDoc_Salida, us_mod = usuarios, fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE cod_mov = 101 AND bodega = bodegaCont
|
|
|
|
DISPLAY "update al 07"
|
|
|
|
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,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(numDoc_Entrada,
|
|
prod1.cod_n,
|
|
prod1.cod_grupo,
|
|
prod1.cod_tipo,
|
|
prod1.cod_sec,
|
|
100,
|
|
bodegaCont,
|
|
record2[i].seccion,
|
|
record2[i].tramo,
|
|
record2[i].fila,
|
|
record2[i].posicion,
|
|
record2[i].unidades,
|
|
record2[i].cantidad,
|
|
NULL,
|
|
usuarios,
|
|
CURRENT YEAR TO FRACTION)
|
|
|
|
DISPLAY "segundo insert a la 62"
|
|
|
|
UPDATE iptb00007
|
|
SET num_doc = numDoc_Entrada, us_mod = usuarios, fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE cod_mov = 100 AND bodega = bodegaCont
|
|
|
|
DISPLAY "segundo update a la 07"
|
|
|
|
IF i = record2.getLength() THEN
|
|
|
|
INSERT INTO iptb00006(
|
|
cod_cia,
|
|
num_doc,
|
|
fecha,
|
|
cod_mov,
|
|
detalle,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_1,
|
|
cantidad_2,
|
|
bodega,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(1,
|
|
numDoc_Salida,
|
|
CURRENT YEAR TO FRACTION,
|
|
101,
|
|
detalle, --detalle
|
|
1, --area
|
|
prod1.cod_n,
|
|
prod1.cod_grupo,
|
|
prod1.cod_tipo,
|
|
prod1.cod_sec,
|
|
all_units,
|
|
all_existence * (-1),
|
|
bodegaCont,
|
|
NULL,
|
|
usuarios,
|
|
CURRENT YEAR TO FRACTION)
|
|
|
|
DISPLAY "insert a la 06"
|
|
|
|
INSERT INTO iptb00006(
|
|
cod_cia,
|
|
num_doc,
|
|
fecha,
|
|
cod_mov,
|
|
detalle,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_1,
|
|
cantidad_2,
|
|
bodega,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea,
|
|
num_Doc_transferencia,
|
|
cod_mov_transferencia)
|
|
VALUES(1,
|
|
numDoc_Entrada,
|
|
CURRENT YEAR TO FRACTION,
|
|
100,
|
|
detalle, --detalle
|
|
1, --area
|
|
prod1.cod_n,
|
|
prod1.cod_grupo,
|
|
prod1.cod_tipo,
|
|
prod1.cod_sec,
|
|
all_units,
|
|
all_existence,
|
|
bodegaCont,
|
|
NULL,
|
|
usuarios,
|
|
CURRENT YEAR TO FRACTION,
|
|
numDoc_Salida,
|
|
101)
|
|
|
|
DISPLAY "otro insert a la 06"
|
|
END IF
|
|
|
|
COMMIT WORK
|
|
|
|
CATCH
|
|
ROLLBACK WORK
|
|
LET numero_msg = 1663
|
|
|
|
END TRY
|
|
|
|
END FOR
|
|
|
|
CALL msg(numero_msg)
|
|
|
|
END IF
|
|
-- END IF
|
|
|
|
RETURN flag
|
|
|
|
END FUNCTION
|
|
|
|
{FUNCTION DefaultLocations(
|
|
existencia DECIMAL(12, 5),
|
|
factor DECIMAL(12, 5),
|
|
cod_n1 INT,
|
|
cod_grupo1 INT,
|
|
cod_tipo1 INT,
|
|
cod_sec1 INT,
|
|
bodegaCont INT)
|
|
|
|
DEFINE unidad_actual, existencia_actual DECIMAL(12, 5)
|
|
INITIALIZE unidad_actual, existencia_actual TO NULL
|
|
|
|
SELECT SUM(cantidad), SUM(cantidad2)
|
|
INTO unidad_actual, existencia_actual
|
|
FROM iptb00062
|
|
WHERE cod_mov = 101
|
|
AND cod_n = cod_n1
|
|
AND cod_grupo = cod_grupo1
|
|
AND cod_tipo = cod_tipo1
|
|
AND cod_sec = cod_sec1
|
|
AND cod_seccion = 0
|
|
AND cod_tramo = 0
|
|
AND cod_fila = 0
|
|
AND cod_pos = 0
|
|
AND bodega = bodegaCont
|
|
|
|
LET record1[1].id_seccion = 0
|
|
LET record1[1].Desc_seccion = "SECCION 0"
|
|
LET record1[1].id_tramo = 0
|
|
LET record1[1].Desc_tramo = "FILA 0"
|
|
LET record1[1].id_fila = 0
|
|
LET record1[1].Desc_fila = "FILA #"
|
|
LET record1[1].id_posicion = 0
|
|
LET record1[1].Desc_posicion = "POSICION 0"
|
|
LET record1[1].INDEX = 1
|
|
|
|
IF unidad_actual IS NOT NULL AND existencia_actual IS NOT NULL THEN
|
|
|
|
LET record1[1].cantidad = existencia + existencia_actual
|
|
LET record1[1].unidades = (existencia / factor) + unidad_actual
|
|
|
|
ELSE
|
|
|
|
LET record1[1].cantidad = existencia
|
|
LET record1[1].unidades = existencia / factor
|
|
|
|
END IF
|
|
|
|
END FUNCTION}
|