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

185 lines
4.9 KiB
Plaintext

--recordLEFT == arr_left
--recordRIGHT == arr_right
DEFINE Arrastrar ui.DragDrop
DEFINE drag_source STRING
GLOBALS "ipprgb000.4gl"
DEFINE descripcion STRING
DEFINE record1 DYNAMIC ARRAY OF RECORD
id_seccion INT,
Desc_seccion STRING,
id_tramo INT,
Desc_tramo STRING,
unidades DECIMAL(18, 2),
cantidad DECIMAL(18, 2)
END RECORD
DEFINE record2 DYNAMIC ARRAY OF RECORD
id_seccion INT,
Desc_seccion STRING,
id_tramo INT,
Desc_tramo STRING,
unidades DECIMAL(18, 2),
cantidad DECIMAL(18, 2),
Desc_seccionAnterior STRING,
Desc_tramoAnterior STRING
END RECORD
FUNCTION InsertaUbicacionDH(prod1)
CONSTANT S_LEFT = "recordLEFT"
CONSTANT S_RIGHT = "recordRIGHT"
DEFINE bodegaCont, i INT --BodegaContainer--
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)
END RECORD
LET descripcion = prod1.descrip_esp
SELECT bodega
INTO bodegaCont
FROM iptb00002
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 idx = 2
DECLARE buscar CURSOR FOR
SELECT cod_seccion, cod_tramo, cantidad, 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
FOREACH buscar
INTO record1[idx].id_seccion,
record1[idx].id_tramo,
record1[idx].unidades,
record1[idx].cantidad
LET idx = idx + 1
END FOREACH
FOR i = 2 TO i = record1.getLength()
SELECT a.descripcion, b.descripcion
INTO record1[i].Desc_seccion, record1[i].Desc_tramo
FROM intb00010 a
INNER
JOIN intb00043 b
ON a.cod_seccion = b.cod_seccion AND a.cod_bodega = b.cod_bodega
WHERE a.cod_bodega = bodegaCont
AND a.cod_seccion = record1[i].id_seccion
AND b.cod_tramo = record1[i].id_tramo
END FOR
OPEN WINDOW w1 WITH FORM "ipfmmt006"
DISPLAY BY NAME descripcion
CALL DefaultLocations()
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY record1 TO recordLEFT.*
ON DRAG_START(Arrastrar)
LET drag_source = S_RIGHT
ON DRAG_FINISHED(Arrastrar)
INITIALIZE drag_source TO NULL
ON DRAG_ENTER(Arrastrar)
IF drag_source IS NULL THEN
CALL Arrastrar.setOperation(NULL)
END IF
ON DROP(Arrastrar)
IF drag_source == S_RIGHT THEN
CALL Arrastrar.dropInternal()
ELSE
CALL Arrastrar_local(
DIALOG, Arrastrar, S_LEFT, S_RIGHT, record1, record2)
END IF
END DISPLAY
INPUT ARRAY record2 FROM recordRIGHT.*
END INPUT
END DIALOG
END FUNCTION
FUNCTION Arrastrar_local(d, Arrastrar, sr0, sr1, arr0, arr1)
DEFINE d ui.Dialog
DEFINE Arrastrar ui.DragDrop
DEFINE sr0, sr1 STRING
DEFINE arr0 DYNAMIC ARRAY OF RECORD
id_seccion INT,
Desc_seccion STRING,
id_tramo INT,
Desc_tramo STRING,
unidades DECIMAL(18, 2),
cantidad DECIMAL(18, 2)
END RECORD
DEFINE arr1 DYNAMIC ARRAY OF RECORD
id_seccion INT,
Desc_seccion STRING,
id_tramo INT,
Desc_tramo STRING,
unidades DECIMAL(18, 2),
cantidad DECIMAL(18, 2),
Desc_seccionAnterior STRING,
Desc_tramoAnterior STRING
END RECORD
--
DEFINE i, j INT
LET j = Arrastrar.getLocationRow()
FOR i = arr0.getLength() TO 1 STEP -1
IF d.isRowSelected(sr0, i) THEN
CALL d.insertRow(sr1, j)
LET arr1[j].Desc_seccionAnterior = arr0[i].Desc_seccion
LET arr1[j].Desc_tramoAnterior = arr0[i].Desc_tramo
LET arr1[j].unidades = arr0[i].unidades
LET arr1[j].cantidad = arr0[i].cantidad
CALL d.setSelectionRange(sr1, j, j, 1)
END IF
END FOR
END FUNCTION
FUNCTION DefaultLocations()
LET record1[1].id_seccion = 0
LET record1[1].Desc_seccion = "Seccion 0"
LET record1[1].id_tramo = 0
LET record1[1].Desc_tramo = "Tramo 0"
LET record1[1].cantidad = 20
LET record1[1].unidades = 10
END FUNCTION