Erro ao executar o beforeTask

Boa tarde!

Estou tendo um erro no log que informa que é referente ao beforeTask porém não descobri oq fazer para arrumar esse erro, gostaria de ajuda.

Erro:

 INFO  [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-37206) InternalError: Cannot convert entrega to java.lang.Integer (beforeTaskSave#31)

codigo do beforeTask:

function beforeTaskSave(colleagueId,nextSequenceId,userList){
	
     var atv_inicio = 68;

     if(nextSequenceId == atv_inicio /*&& getValue("WKCompletTask").equals("true")*/) {
             
        var assunto = "Processo compras";
        var msgInicial = "";
        var msgFinal = "";

        var destinatarios = userList;

        log.info("##** destinatarios" + destinatarios);

        enviaEmail(assunto, destinatarios, msgInicial, msgFinal, atv_inicio);

     }


	function enviaEmail(assunto, destinatarios, msgInicial, msgFinal, atividade) {
		
		var processo = getValue("WKNumProces").toString();
		
		try{
			
			var parametros = new java.util.HashMap();
			var subject = "[WF" + processo + "] - Requisição de compra"
			
			
			parametros.put("SOLICITACAO_", processo);
			parametros.put("PRAZO_ENTREGA", hAPI.getCardData("entrega"));
            parametros.put("PREVISAO_ORC", hAPI.getCardData("valor"));
            parametros.put("OBSER_VACAO", hAPI.getCardData("observacao"));
			
			var tabelaItens = montarItens();
			
			parametros.put("TABLE_ITENS", tabelaItens);

            var notificacao = notifier.notify("1275", "outroTeste", parametros, destinatarios, "text/html");
			
			
		} catch (error) {
			log.info("##** Erro no envio de email");
            log.info(error);
		}
		
		
	}
	
	function montarItens() {
		
		var html = "";
		html += " <table>";
		html += "    <thead>";
		html += "       <tr>";
		html += "            <th>Quantidade</th>";
		html += "            <th>Descrição</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();
			
			if (id.match(/it_Quantidade___/)) {
				
				var campo = campos.get(id);
				var id = id.split("___")[1];
				
				var quantidades = campos.get("it_Quantidade___" + id);
				var descricoes = campos.get("it_Descricao___" + id);
				
				
				html += "<tr>"
				html += "    <td style= 'text-aling:center'>" + quantidades + "<td>";
				html += "    <td style= 'text-aling:center'>" + descricoes + "<td>";
				html += "</tr>"
					
					log.info("#%$ retorno");
				    log.info(html);
				
			}
		}
		
		html += "</tbody></table>"
			
			return html
		
	}
	
	
	
}

Dois problemas que vi.

O primeiro é que você não passou o subject na lista de parâmetros.

Segundo é que você tá usando o método hAPI.getCardData. Esse método espera um inteiro e então retorna um HashMap com todos os campos do formulário.

Acredito que a sua intenção nessa situação é usar o método hAPI.getCardValue, pois ele sim aguardar uma string (nome do campo) e então retorna o valor do campo.

Arrumei aqui e realmente não está dando aquele erro, porém agora está dando outro kkkk

Novo erro:

TypeError: Cannot find function keyset in object {companyid=1, cardid=6239, documentid=6467, version=1000, tableid=principal, anonymization_date=, anonymization_user_id=, hTemvalidade=, hValidade=, Escolhasss=não, hTemAprov=, hAprovador=, tipos=Compra / Contratação, div_tbObservador=, nomeSolic=Kaue Menezes, dataSolic=31/01/2024, emailSolic=kaue.menezes@turmadamonica.com.br, SETOR=Tecnologia da Informação, CentrodeCustos=Design e Comunicação via Comercial, faturas=RTS, pessoaFisica=, locais=, div_tbRefcomerciais=, entrega=05/01/2024, valor=30,00, observacao=s, fdFoto=, fnFoto=, div_tbRefcomerciais2=, observacoes=, condiFinal=, Fornecedor2=, Produto2=, Valor3=, CondicaoPagamento2=, PrazoEntrega2=, observacao2=, itemnoEstoque=, observacaoEstoque=, forcontCompra=, observacaocontCompra=, processoValidado=, observacaoProcesso=, licitacaoAprovada=, observacaoLicitacao=, compraAprovada=, observacaoCompra=, recebimentoOK=, observacaoRecebimento=, ativoFixo=, observacaoAtivo=, abasteceEstoque=, observacaoAbastece=, contCompra=, observacaoContinuidade=, ATIVIDADE=0, infoCorreta=, observacaoCorreta=, div_tbRefcomerciais3=, companyid___1=1, cardid___1=6239, documentid___1=6467, version___1=1000, tableid___1=tbRefcomerciais, anonymization_date___1=, anonymization_user_id___1=, trRefcomerciais___1=, Quantidade___1=2, Descricao___1=k, masterid___1=428}.

Codigo do beforetask arrumado

function beforeTaskSave(colleagueId,nextSequenceId,userList){
	
     var atv_inicio = 68;

     if(nextSequenceId == atv_inicio && getValue("WKCompletTask").equals("true")) {
             
        var assunto = "Processo compras";
        var msgInicial = "";
        var msgFinal = "";

        var destinatarios = userList;

        log.info("##** destinatarios" + destinatarios);

        enviaEmail(assunto, destinatarios, msgInicial, msgFinal, atv_inicio);

     }


	function enviaEmail(assunto, destinatarios, msgInicial, msgFinal, atividade) {
		
		var processo = getValue("WKNumProces").toString();
		var entrega = hAPI.getCardValue("entrega");
		var valor = hAPI.getCardValue("valor");
		var observacao = hAPI.getCardValue("observacao");
		
		try{
			
			var parametros = new java.util.HashMap();
			var subject = "[WF" + processo + "] - Requisição de compra"
			
			
			parametros.put("SOLICITACAO_", processo);
			parametros.put("PRAZO_ENTREGA", entrega);
            parametros.put("PREVISAO_ORC", valor);
            parametros.put("OBSER_VACAO",observacao);
			
			var tabelaItens = montarItens();
			
			parametros.put("TABLE_ITENS", tabelaItens);

            var notificacao = notifier.notify("1275", "outroTeste", parametros, destinatarios, "text/html");
			
			
		} catch (error) {
			log.info("##** Erro no envio de email");
            log.info(error);
		}
		
		
	}
	
	function montarItens() {
		
		var html = "";
		html += " <table>";
		html += "    <thead>";
		html += "       <tr>";
		html += "            <th>Quantidade</th>";
		html += "            <th>Descrição</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();
			
			if (id.match(/it_Quantidade___/)) {
				
				var campo = campos.get(id);
				var id = id.split("___")[1];
				
				var quantidades = campos.get("it_Quantidade___" + id);
				var descricoes = campos.get("it_Descricao___" + id);
				
				
				html += "<tr>"
				html += "    <td style= 'text-aling:center'>" + quantidades + "<td>";
				html += "    <td style= 'text-aling:center'>" + descricoes + "<td>";
				html += "</tr>"
					
					log.info("#%$ retorno");
				    log.info(html);
				
			}
		}
		
		html += "</tbody></table>"
			
			return html
		
	}
	
	
	
}

Não existe esse método keyset.

O certo é keySet.