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>
185 lines
4.9 KiB
Plaintext
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
|