Files
MBS/PROYECTO/otrodir/AddDocs.4gl
T

192 lines
5.3 KiB
Plaintext

IMPORT os
DEFINE d_tipos, mensaje, f_tipos, filepath, l_file, tmpdir_file STRING
DEFINE
dir_file CHAR(60),
idx INT,
p_res SMALLINT,
documentos DYNAMIC ARRAY OF RECORD
ruta_fisica VARCHAR(200),
filedestino VARCHAR(200),
nombreFileOriginal VARCHAR(100),
nombreFile VARCHAR(100)
END RECORD
FUNCTION AddDocs(
nombreCliente STRING, num_docc INT, tipo_doc CHAR(10), sucid SMALLINT)
OPEN WINDOW w2 WITH FORM "agregar_docs"
CALL fgl_settitle("Agregar archivos al documento")
CALL buscardocs(num_docc)
DISPLAY nombreCliente.trimLeft() TO nombre_cliente
DISPLAY num_docc TO num_doc
DIALOG ATTRIBUTES(UNBUFFERED)
DISPLAY ARRAY documentos TO Drecord.*
ON ACTION UploadBttn
CALL UploadDoc(num_docc, tipo_doc, sucid)
ON ACTION OpenBttn
CALL OpenDoc(num_docc)
ON ACTION salir ATTRIBUTES(TEXT = "Salir", IMAGE = "fa-power-off")
EXIT DIALOG
CLOSE WINDOW w2
END DISPLAY
END DIALOG
CLOSE WINDOW w2
END FUNCTION
FUNCTION buscardocs(num_docc INT)
INITIALIZE documentos TO NULL
DECLARE buscar CURSOR FOR
SELECT ruta_orig, ruta_fisica, nombreFileOriginal, nombreFile
FROM vetb00113
WHERE num_doc = num_docc
LET idx = 1
FOREACH buscar
INTO documentos[idx].ruta_fisica,
documentos[idx].filedestino,
documentos[idx].nombreFileOriginal,
documentos[idx].nombreFile
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION UploadDoc(num_docc INT, tipo_doc CHAR(10), sucid SMALLINT)
DEFINE answer, OriginalName, DocumentName STRING
DEFINE DocumentNumber INT
DEFINE buf base.StringBuffer
SELECT COUNT(*) INTO DocumentNumber FROM vetb00113 WHERE num_doc = num_docc
IF DocumentNumber IS NULL OR DocumentNumber = 0 THEN
LET DocumentNumber = 1
ELSE
LET DocumentNumber = DocumentNumber + 1
END IF
DISPLAY DocumentNumber
LET d_tipos = "PDF"
LET f_tipos = "*.pdf *.jpg *.png *.dwg *.dkf"
LET mensaje = %"Elige Documento"
CALL ui.Interface.frontCall(
"standard",
"openfile",
[dir_file, d_tipos, f_tipos, mensaje],
[filepath])
LET answer =
fgl_winquestion(
"Adjuntar archivo al documento",
"ESTA SEGURO QUE DESEA ADJUNTAR ESTE ARCHIVO AL DOCUMENTO "
|| num_docc
|| "?",
"YES",
"YES|NO",
"QUESTION",
0)
IF answer = 'YES' THEN
IF filepath IS NOT NULL THEN
IF downshift(os.Path.extension(filepath)) = "pdf"
OR downshift(os.Path.extension(filepath)) = "jpg"
OR downshift(os.Path.extension(filepath)) = "dwg"
OR downshift(os.Path.extension(filepath)) = "dxf"
OR downshift(os.Path.extension(filepath)) = "png" THEN
LET dir_file = os.Path.basename(filepath)
LET originalName = os.Path.baseName(filepath)
DISPLAY filepath TO ruta_orig
CALL documentos.appendElement()
IF idx IS NULL THEN
LET idx = 1
END IF
LET buf = base.StringBuffer.create()
CALL buf.append(DocumentNumber USING "&&&" CLIPPED)
CALL buf.trimRight()
CALL buf.append("-")
CALL buf.trimRight()
CALL buf.append(num_docc)
LET DocumentName =
buf.toString(), ".", os.Path.extension(filepath) CLIPPED
LET dir_file =
"archivos\\ordenes\\",
buf.toString(),
".",
os.Path.extension(filepath) CLIPPED
CALL fgl_getfile(filepath, dir_file)
-- CALL documentos[idx].filedestino.readFile(dir_file)
LET documentos[idx].nombreFileOriginal =
os.Path.basename(filepath)
LET documentos[idx].nombreFile = os.Path.baseName(dir_file)
LET documentos[idx].ruta_fisica = filepath
LET idx = idx + 1
ELSE
CALL fgl_winmessage(
"ERROR", "EL FILE DEBE SER PDF, JPG, PNG, DWG", "INFO")
END IF
END IF
ELSE
CALL msg(2)
END IF
INSERT INTO vetb00113
VALUES(num_docc,
tipo_doc,
sucid,
filepath,
dir_file,
originalName,
DocumentName)
END FUNCTION
FUNCTION OpenDoc(num_docc INT)
TRY
SELECT ruta_fisica INTO tmpdir_file FROM vetb00113 WHERE num_doc = num_docc
AND nombreFile = documentos[arr_curr()].nombreFile
CALL ui.Interface.frontCall("standard", "getenv", ["TEMP"], [l_file])
LET l_file = l_file CLIPPED, "\\", documentos[arr_curr()].nombreFile
CALL fgl_putfile(tmpdir_file, l_file)
CALL ui.Interface.frontCall("standard", "shellexec", [l_file], [p_res])
CATCH
CALL fgl_winmessage("ERROR", err_get(STATUS), "INFO")
END TRY
END FUNCTION