FUNCTION files_ordenes(xnum_oc,xusuario,xclave) DEFINE xnum_oc INT, files_ordenes DYNAMIC ARRAY OF RECORD ruta_file VARCHAR(100), descrip_file VARCHAR(60), tipo_Doc VARCHAR(10), num_doc INT, nombre_file VARCHAR(100), documento BYTE END RECORD, idx SMALLINT,p_res INT, file_orden VARCHAR(100), xusuario,xclave VARCHAR(50), tmpdir_file,l_file STRING, documentos BYTE CONNECT to "smarmotech" USER xusuario USING xclave OPEN WINDOW w1 WITH FORM "ccfmwd007" DECLARE busca CURSOR FOR SELECT a.url_file_destino,' ',a.tipo_file,a.num_doc,a.nombre_file,a.documento FROM prtb00029 a WHERE a.num_oc = xnum_oc LET idx = 1 LOCATE files_ordenes[idx].documento IN MEMORY FOREACH busca INTO files_ordenes[idx].* IF files_ordenes[idx].tipo_Doc = 'CO' THEN LET files_ordenes[idx].descrip_file = 'CONDUCES' END IF IF files_ordenes[idx].tipo_Doc = 'OT' THEN LET files_ordenes[idx].descrip_file = 'OTROS' END IF IF files_ordenes[idx].tipo_Doc = 'DI' THEN LET files_ordenes[idx].descrip_file = 'DIBUJOS' END IF IF files_ordenes[idx].tipo_Doc IS NULL THEN LET files_ordenes[idx].descrip_file = 'NO IDENTIFICADO' END IF IF files_ordenes[idx].tipo_Doc = 'DE' THEN LET files_ordenes[idx].descrip_file = 'DEVOLUCIONES' END IF LET idx = idx + 1 LOCATE files_ordenes[idx].documento IN MEMORY END FOREACH IF idx = 1 THEN CALL fgl_Winmessage("INFO","ORDEN SELECCIONADA NO TIENE DOCUMENTOS ASIGNADOS","INFO") ELSE DISPLAY ARRAY files_ordenes TO sfiles.* ON ACTION abrir LET idx = arr_curr() { TRY LET file_orden=files_ordenes[idx].ruta_file CLIPPED CALL ui.Interface.frontCall("standard","launchurl", [file_orden],[p_res]) CATCH CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO") END TRY } TRY LET tmpdir_file = "tmp\\",files_ordenes[arr_curr()].nombre_file CALL files_ordenes[arr_curr()].documento.writeFile(tmpdir_file) CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] ) LET l_file = l_file CLIPPED,"\\",files_ordenes[arr_curr()].nombre_file 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 AFTER DISPLAY LET idx = arr_curr() LET file_orden = files_ordenes[idx].ruta_file EXIT DISPLAY END DISPLAY IF INT_FLAG THEN CALL fgl_winmessage("INFO","OPERACION CANCELADA","INFO") LET INT_FLAG = FALSE LET file_orden = NULL END IF END IF CLOSE WINDOW w1 RETURN END FUNCTION