Versão atual:

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.

Versão (1):

Ver a versão formatada

Montar Email com Dataset no beforeTakSave para Envio

Comentário

new question