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!!!