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