Botão de formulário para download de anexo de processo

Prezado(a), como fazer o botão do formulário efetuar o download de documento que fica no anexo de processo sem que usuário precise baixar pela aba do anexo de processo. é o seguinte, em uma atividade o usuário anexar o documento no processo através de botão com sucesso e em outra atividade verificar se possui anexo para habilitar o botão download, e ao efetuar clique no botão, o documento é baixado.

Boa tarde, Arthur!

Cara, não sei se a nível do formulário sem utilizar eventos de formulário/processo você conseguirá realizar essa customização.

Imaginei que você possa utilizar listAttachments() da API (http://tdn.totvs.com/display/public/fluig/hAPI) para listar e alguma outra função para realizar o download, vou ver se encontro alguma coisa pois não precisei fazer nada parecido ainda.

Referências: http://tdn.totvs.com/display/public/fluig/Guia+de+Propriedades+dos+Objetos#GuiadePropriedadesdosObjetos-DocumentDto

Abraços

é porque eu consegui executar via javascript para fazer upload de anexo do processo, e surgiu esta nesta de baixar o documento do anexo.

Para baixar todos os anexos, você pode utilizar a própria API do Fluig e criar uma função para capturar o retorno. Como você também vai precisar do ID do processo, vai precisar obter essa informação. Uma forma é no evento de formulário. Eu utilizo o displayFields dessa forma:

displayFields.js


function displayFields(form,customHTML){

   var instanceId = getValue('WKNumProces');

   customHTML.append("<script>");
   customHTML.append("var INSTANCEID = " + instanceId + ";");
   customHTML.append("</script>");
}

E no script do formulário


function baixarAnexos() {

   let endpoint = 'bpm/api/v1/requests/{processInstanceId}/attachments/download';
   const serverURL = parent.WCMAPI.serverURL;

   endpoint = endpoint.replace('{processInstanceId}', INSTANCEID);

   const URL = serverURL + endpoint;

    fetch(URL)
      .then(resp => resp.blob())
      .then(blob => {
        const url = window.URL.createObjectURL(blob);
        const e = document.createElement('e');
        e.style.display = 'none';
        e.href = url;
        e.download = 'Anexos.zip';
        document.body.appendChild(e);
        e.click();
        window.URL.revokeObjectURL(url);
      })
      .catch(() => alert('Erro :('));

}

Depois é só definir o evento onClick do componente para a função baixarAnexos().

Obs: Não funciona no Mobile