Ação Agendada - Dúvida helper 'CompensacaoFinanceiraHelper'

Boa noite a todos!

Encontrei esse tópico ‘Compensação de Financeiro em Ação Agendada - #5 por pedro.rodrigues’, onde os amigos @marcus e @pedro.rodrigues mostram exemplos como utilizar o helper ‘CompensacaoFinanceiraHelper’, e é exatamente o que preciso.

Estou tentando implementar esse método para compensação de dois financeiros, já testei também via Postman e roda via JSON e requisição, porém preferiria utilizar o helper direto no Java.

public boolean compensarFinRecDespService(BigDecimal vlrAcerto, Timestamp dtVenc, BigDecimal nuFinRec, BigDecimal nuFinDesp) throws Exception, MGEModelException {
		boolean simNao = false;
		CompensacaoFinanceiraHelper finHelper = new CompensacaoFinanceiraHelper();			
		Element params = new Element("params");
		XMLUtils.addAttributeElement(params, "chave", "br.com.sankhya.mgefin.mov.CompensacaoFinanceira_prefs");
		XMLUtils.addAttributeElement(params, "tipo", "T");
		XMLUtils.addAttributeElement(params, "vlrAcerto", vlrAcerto);
		XMLUtils.addAttributeElement(params, "valoratualmoeda", BigDecimal.ZERO);
		XMLUtils.addAttributeElement(params, "dtbaixa", dtVenc);
		XMLUtils.addAttributeElement(params, "topDesp", 1500);
		XMLUtils.addAttributeElement(params, "topRec", 1400);								
		Element receitas = new Element("receitas");
		XMLUtils.addContentElement(receitas, "nuFin", nuFinRec);								
		Element despesas = new Element("despesas");
		XMLUtils.addContentElement(despesas, "nuFin", nuFinDesp);		
					
		params.addContent(receitas);
		params.addContent(despesas);
		try {												
			DadosCompensacao dadosCompensacao = finHelper.montaDadosCompensacao(params);			
			dadosCompensacao.setUserID(BigDecimal.ZERO);								
			BigDecimal nuAcerto = finHelper.acertar(dadosCompensacao);
			if(!BigDecimalUtil.isNullOrZero(nuAcerto)) {
				System.out.println(" Compensação "+nuAcerto+" Realizada p/ Despesa "+nuFinDesp+" Receita "+nuFinRec);
				simNao = true;
			}
		} catch (Exception e) {
			StringWriter sw = new StringWriter(); 
			PrintWriter pw = new PrintWriter(sw); 
			StringBuffer mensagem = new StringBuffer(); 
			e.printStackTrace(pw);
    		mensagem.append("Erro! compensarFinRecDespService " + e.getMessage() + sw.toString());
    		notificaErro("compensarFinRecDespService", e.getMessage());
    		MGEModelException.throwMe(new Exception(mensagem.toString()));
		}
		return simNao;
	}

Porém fica dando erro “Erro! compensarFinRecDespService Erro ao processar requisição HTTP. Verifique se o formato de envio é XML.”

Utilizando alguns métodos do próprio helper na minha máquina retorna corretamente os dados, o que pode ser?

public class teste4 {
	@SuppressWarnings("static-access")
	public static void main(String[] args) throws Exception, MGEModelException {		
		CompensacaoFinanceiraHelper finHelper = new CompensacaoFinanceiraHelper();
		Element params = new Element("params");
		XMLUtils.addAttributeElement(params, "chave", "br.com.sankhya.mgefin.mov.CompensacaoFinanceira_prefs");
		XMLUtils.addAttributeElement(params, "tipo", "T");
		XMLUtils.addAttributeElement(params, "vlrAcerto", BigDecimal.ONE);
		XMLUtils.addAttributeElement(params, "valoratualmoeda", BigDecimal.ZERO);
		XMLUtils.addAttributeElement(params, "dtbaixa", TimeUtils.getNow());
		XMLUtils.addAttributeElement(params, "topDesp", 1500);
		XMLUtils.addAttributeElement(params, "topRec", 1400);								
		Element receitas = new Element("receitas");
		XMLUtils.addContentElement(receitas, "nuFin", BigDecimal.ZERO);								
		Element despesas = new Element("despesas");
		XMLUtils.addContentElement(despesas, "nuFin", BigDecimal.ZERO);						
				
		params.addContent(receitas);
		params.addContent(despesas);
		try {
			DadosCompensacao dadosCompensacao = finHelper.montaDadosCompensacao(params);			
			dadosCompensacao.setUserID(BigDecimal.ZERO);				
			
			String chave = dadosCompensacao.getChave();
		    String tipo = dadosCompensacao.getTipo();
		    BigDecimal userID = dadosCompensacao.getUserID();
		    BigDecimal codTipOperBaixaDesp = dadosCompensacao.getTopDesp();
		    BigDecimal codTipOperBaixaRec = dadosCompensacao.getTopRec();
		    Timestamp dtBaixa = dadosCompensacao.getDtBaixa();
		    double saldo = dadosCompensacao.getVlrAcerto().doubleValue();
		    boolean usarDtVencBaixa = dadosCompensacao.isUsarDtVencBaixa();
		    BigDecimal moedaAtual = dadosCompensacao.getValorAtualMoeda();
		    
		    System.out.println(chave);
		    System.out.println(tipo);
		    System.out.println(userID);
		    System.out.println(codTipOperBaixaDesp);
		    System.out.println(codTipOperBaixaRec);
		    System.out.println(dtBaixa);
		    System.out.println(saldo);
		    System.out.println(usarDtVencBaixa);
		    System.out.println(moedaAtual);
		    
		} catch (Exception e) {
			e.printStackTrace();
		}				
	}	

}

Quem puder dar uma força, fico agradecido!!!

2 respostas