Montar Email com Dataset no beforeTakSave para Envio

Prezados, tudo bem?

Estou criando um processo em que vou tentar automatizar o envio de alguns relatórios que são tirados do banco de dados para ser enviado via FLUIG.

Vou utilizar um DATASET que contenha a VIEW ou SELECT do relatório.

Mediante isso tenho alguns problemas e já consegui desenvolver algumas partes do projeto.

1) No FLUIG consigo chamar o DATASET e mostrar na tela com todas as informações;

2) No beforeTaskSave.js consegui montar o HTML e a função para enviar por e-mail pelo menos o cabeçalho da tabela.

3) Agora vem o problema: Não estou conseguindo gerar o DATASET dentro do beforeTaskSave.js, vi alguns vídeos que poderiam ajudar porem nenhum deles usa DATASET e sim uma lista gerada por IDs. Vou copiar abaixo o código que tentei utilizar para gerar o DATASET:

function montarItensSolicitacao() {

    var html = "";
    html += "<thead class='table table-striped'>";
    html += "<tr>";
    html += "   <th style='flex: 1 0 0%;'>INSTANCIA</th>";
    html += "   <th style='flex: 1 0 0%;'>SAFRA</th>";
    html += "   <th style='flex: 1 0 0%;'>FAZENDA</th>";
    html += "   <th style='flex: 1 0 0%;'>FORNECEDOR</th>";
    html += "   <th style='flex: 1 0 0%;'>TONELADAS</th>";
    html += "</tr>";
    html += "</thead>";
    html += "<tbody>";

    var processo = getValue("WKNumProces");
    var campos = hAPI.getCardData(processo);

    var contador = campos.keySet().iterator();

    while (contador.hasNext()) {

        var id = contador.next();
        log.info("##** LOG DO ID ");
        log.info(id);

        if (id.match(/NO_LIBERACAO/)) {

            var campo = campos.get(id);

            var id = id.split("___")[1];

            var liberacao = campos.get("NO_LIBERACAO");
            var instancia = campos.get("INSTANCIA");
            var movimento = campos.get("DE_MOVIMENTO");
            var upnivel = campos.get("CD_UPNIVEL1");
            var fornec = campos.get("CD_FORNEC");
            var liquido = campos.get("QT_LIQUIDO");

            log.info("##** LOG DO PROCESSO ");
            log.info(liberacao);

            html += "<tr>";
            html += "   <td>" + liberacao + "</td>";
            html += "   <td>" + instancia + "</td>";
            html += "   <td>" + movimento + "</td>";
            html += "   <td>" + upnivel + "</td>";
            html += "   <td>" + fornec + "</td>";
            html += "   <td>" + liquido + "</td>";
            html += "</tr>";

            log.info("##** CRIADO EMAIL ");
            log.info(html);

        } //FIM IF
    } // FIM WHILE

    html += "</tbody></table>";

    return html;
}

Abaixo vou anexar a função que estou utilizando no HTML mesmo para gerar o DATASET dentro do processo:

<script type="text/javascript">
    function showNewDatasetFull() {
        var div = document.getElementById("datasetDiv");

        //Busca o dataset
        try {
            var dataset = DatasetFactory.getDataset("TESTE_TALHAO");
            div.innerHTML = showDataset(dataset);
        } catch (erro) {
            div.innerHTML = erro;
        }
    }

    function showDataset(dataset) {
        var tabela = "<table class='table table-striped'>";

        //Monta o cabeçalho
        tabela += "<thead class='table-dark'><tr>";
        for (var i = 0; i < dataset.columns.length; i++) {
            tabela += "<th>" + dataset.columns[i] + "</th>";
        }
        tabela += "</tr></thead>";

        //Monta os registros   
        for (var x = 0; x < dataset.values.length; x++) {
            tabela += "<tr>";
            var row = dataset.values[x];
            for (var y = 0; y < dataset.columns.length; y++) {
                tabela += "<td>" + row[dataset.columns[y]] + "</td>";
            }
            tabela += "</tr>";
        }

        tabela += "</table>";
        return tabela;
    }
</script>

Tentei utilizar a mesma função tanto no HTML quanto no beforeTaskSave.js porem como ele possui elementos de FRONT ele não gera no BACKEND e retorna um erro no LOG do servidor.

Caso alguém tiver alguma função que possa estar me ajudando ou me ajudar melhorando as minhas ficarei bem feliz.

Obrigado pela ajuda.

Att.

David Jr.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags processo datasets email beforetasksave ou faça a sua própria pergunta.