120 lines
4.7 KiB
Plaintext
120 lines
4.7 KiB
Plaintext
DEFINE arr_bultos DYNAMIC ARRAY OF RECORD
|
|
id,num_oc,num_oc_externa INT,
|
|
titulo_bulto STRING,
|
|
fecha VARCHAR(10),
|
|
seleccionar VARCHAR(1)
|
|
|
|
END RECORD,
|
|
gpnum_oc,gpnum_externa,pbulto_id INT,
|
|
pcliente,pdireccion STRING
|
|
|
|
FUNCTION empacar(arr_empaque,encabezadoe,pnum_oc,pnum_externa,cliente,direccion)
|
|
|
|
DEFINE arr_empaque DYNAMIC ARRAY OF RECORD
|
|
producto, unidad STRING,
|
|
cantidad,cantidad_orden FLOAT,
|
|
pcodn,pcodgrupo,pcodtipo,pcodsec INT
|
|
END RECORD,
|
|
encabezadoe,titulo_empaque,cliente,direccion STRING,
|
|
idx,pcodid,pnum_oc,pnum_externa INT
|
|
|
|
CALL revisa_bultos()
|
|
|
|
OPEN WINDOW w3 WITH FORM "prfmmt021b"
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
INPUT BY NAME titulo_empaque
|
|
BEFORE INPUT
|
|
LET gpnum_oc = pnum_oc
|
|
LET gpnum_externa = pnum_externa
|
|
|
|
SELECT a.titulo_bulto INTO titulo_empaque
|
|
from iptb00054 a WHERE a.bulto_id = pbulto_id
|
|
IF titulo_empaque IS NULL THEN
|
|
LET titulo_empaque = "BULTO ORD.",pnum_externa USING "&&&&&&&&"
|
|
END IF
|
|
LET pcliente = cliente
|
|
LET pdireccion = direccion
|
|
DISPLAY BY NAME encabezadoe,titulo_empaque
|
|
|
|
AFTER INPUT
|
|
IF titulo_empaque IS NULL THEN
|
|
NEXT FIELD titulo_empaque
|
|
END IF
|
|
END INPUT
|
|
INPUT ARRAY arr_empaque FROM sempaque.*
|
|
ON ACTION salvar ATTRIBUTE(TEXT="Guardar",IMAGE="save")
|
|
SELECT a.bulto_id INTO pbulto_id FROM iptb00055 a
|
|
IF pbulto_id IS NULL THEN
|
|
LET pbulto_id = 0
|
|
INSERT INTO iptb00055 (pbulto_id,us_crea,fech_crea) VALUES (0,SUSER_SNAME(),GETDADTE())
|
|
END IF
|
|
LET pbulto_id = pbulto_id + 1
|
|
BEGIN WORK
|
|
UPDATE iptb00054 SET bulto_id = pbulto_id,us_crea = SUSER_SNAME(),fech_crea = GETDATE()
|
|
#INFORMACION BULTO GENERAL
|
|
INSERT INTO iptb00054 (bulto_id,num_oc,num_oc_externa,cliente,direccion,estado,us_crea,fech_crea,fecha,
|
|
titulo_bulto)
|
|
VALUES (pbulto_id,gpnum_oc,gpnum_externa,pcliente,pdireccion,'EN PROCESO',SUSER_SNAME(),GETDATE(),GETDATE(),
|
|
titulo_empaque)
|
|
|
|
FOR idx = 1 TO arr_empaque.getLength()
|
|
IF arr_empaque[idx].cantidad IS NOT NULL THEN
|
|
|
|
SELECT a.codid INTO pcodid FROM iptb00002 a WHERE a.cod_n = arr_empaque[idx].pcodn AND
|
|
a.cod_grupo = arr_empaque[idx].pcodgrupo AND
|
|
a.cod_tipo = arr_empaque[idx].pcodtipo AND
|
|
a.cod_sec = arr_empaque[idx].pcodsec
|
|
|
|
|
|
INSERT INTO iptb00053 (codid,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,cantidad,
|
|
cantidad_orden,us_crea,fech_crea,num_oc,num_oc_externa,bulto_id)
|
|
VALUES (pcodid,arr_empaque[idx].pcodn,arr_empaque[idx].pcodgrupo,arr_empaque[idx].pcodtipo,
|
|
arr_empaque[idx].pcodsec,arr_empaque[idx].producto,arr_empaque[idx].cantidad,
|
|
arr_empaque[idx].cantidad_orden,SUSER_SNAME(),GETDATE(),
|
|
gpnum_oc,gpnum_externa,pbulto_id)
|
|
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
CALL msg(1)
|
|
EXIT DIALOG
|
|
END INPUT
|
|
ON ACTION CANCEL
|
|
EXIT DIALOG
|
|
END DIALOG
|
|
CLOSE WINDOW w3
|
|
END FUNCTION
|
|
FUNCTION revisa_bultos()
|
|
DEFINE i,cuenta INT,
|
|
opcion STRING
|
|
SELECT COUNT(*) INTO cuenta FROM iptb00054 WHERE num_oc = gpnum_oc
|
|
|
|
IF cuenta > 0 THEN
|
|
DECLARE busca_bultos CURSOR FOR
|
|
SELECT a.bulto_id,a.num_oc,a.num_oc_externa,a.titulo_bulto,a.fecha,'N'
|
|
FROM iptb00054 a
|
|
WHERE a.num_oc = gpnum_oc
|
|
|
|
LET i = i + 1
|
|
FOREACH busca_bultos INTO arr_bultos[i].*
|
|
LET i = i+1
|
|
END FOREACH
|
|
OPEN WINDOW w5 WITH FORM "prfmmt021c"
|
|
INPUT ARRAY arr_bultos FROM sbultos.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
ON ACTION DELETE
|
|
LET opcion = fgl_winquestion("INFO","DESEA ELIMINAR ESTE BULTO? ","NO","YES|NO","QUESTION",0)
|
|
IF opcion = "YES" THEN
|
|
|
|
DELETE FROM iptb00054 WHERE bulto_id = arr_bultos[arr_curr()].id
|
|
DELETE FROM iptb00053 WHERE bulto_id = arr_bultos[arr_curr()].id
|
|
CALL arr_bultos.deleteElement(arr_curr())
|
|
END IF
|
|
AFTER INPUT
|
|
LET pbulto_id = arr_bultos[arr_curr()].id
|
|
EXIT INPUT
|
|
END INPUT
|
|
CLOSE WINDOW w5
|
|
END IF
|
|
END FUNCTION |