Olá,
estou tendo dificuldade em resolver esse problema na aplicação. Quando debugo o código, aparece esse “erro” no método, e no console dá NullPointException. Já tentei fazer validações e testes, mas o problema ainda persiste. Se alguém puder me ajudar fico grato.
private void setDadosConvenio() {
if (infCliente.getCdConv() != 0) {
if (infCliente.getCliePercRecMinConv().compareTo(BigDecimal.ZERO) > 0) {
percRecConv = infCliente.getCliePercRecMinConv();
tpPercRecConv = 0;
} else if (infCliente.getCliePercRecMaxConv().compareTo(BigDecimal.ZERO) > 0) {
tpPercRecConv = 1;
percRecConv = infCliente.getCliePercRecMaxConv();
} else if (infCliente.getConvenio() != null) {
if (infCliente.getConvenio().getPercRecMinConv().compareTo(BigDecimal.ZERO) > 0) {
tpPercRecConv = 0;
percRecConv = infCliente.getConvenio().getPercRecMinConv();
} else {
tpPercRecConv = 1;
percRecConv = infCliente.getConvenio().getPercRecMaxConv();
}
}
if (percRecConv.compareTo(BigDecimal.ZERO) == 0 && infCliente.isRecebtoVlrSubsidio()) {
JOptionPane.showMessageDialog(this, "Percentual minímo ou máximo do convênio ou conveniado não defindo");
}
isClienteConvenioBloqValido();
if (infCliente.getConvHabilitado() == 1) {
infCliente.setDsConv("DESABILITADO");
infCliente.setCdConv(0);
infCliente.setVlrCred(BigDecimal.ZERO);
infCliente.setVlrSaldo(BigDecimal.ZERO);
jtxtConvenio.setText("DESABILITADO");
jtxtCodFidel.setText(infCliente.getNrCartao());
jtxtCodFidel.setToolTipText(infCliente.getNrCartao());
jtxtCodFidel.setEnabled(false);
jlblTpCliente.setEnabled(false);
if (jcmbFormaPGTO.isEnabled()) {
try {
if (servico.isMoeda(condPagtos.get(ixCondicaoPagamento).getCdFrmPgto(), Moeda.CONVENIO.ordinal())) {
JOptionPane.showMessageDialog(this, "Convênio desabilitado. O recebimento em convênio será barrado no PDV.");
}
} catch (AplicacaoException ex) {
JOptionPane.showMessageDialog(this, "Não foi possível verificar moeda de pagamento : " + ex.getMessage());
}
}
} else if (("1").equals(infCliente.getConvenio().getStsCred()) || "1".equals(infCliente.getStsCred())) {
infCliente.setDsConv("VENDA CONVÊNIO BLOQUEADA");
infCliente.setCdConv(0);
infCliente.setDsConv("");
infCliente.setVlrCred(BigDecimal.ZERO);
infCliente.setVlrSaldo(BigDecimal.ZERO);
jtxtConvenio.setText("VENDA CONVÊNIO BLOQUEADA");
jtxtTotSaldoConvenio.setText("0");
jtxtTotVlrConvenio.setText("0");
jtxtConvenio.setToolTipText(jtxtConvenio.getText());
jtxtCodFidel.setText(infCliente.getNrCartao());
jtxtCodFidel.setToolTipText(infCliente.getNrCartao());
jtxtCodFidel.setEnabled(false);
} else {
if (infCliente.getNrCartao() != null) {
jtxtCodFidel.setText(infCliente.getNrCartao().trim());
jtxtCodFidel.setToolTipText(infCliente.getNrCartao().trim());
}
if (infCliente.getDsConv().length() >= 24) {
jtxtConvenio.setText(infCliente.getDsConv().substring(0, 24));
} else {
jtxtConvenio.setText(infCliente.getDsConv());
}
jtxtConvenio.setText(jtxtConvenio.getText() + " | " + "Dia Fat: " + infCliente.getDiaFechamento());
jtxtConvenio.setToolTipText(infCliente.getDsConv() + " | " + "Dia Fat: " + infCliente.getDiaFechamento());
if (infCliente.getVlrCred().compareTo(BigDecimal.ZERO) > 0) {
jlblSaldoDisponivel.setText(Utils.formatoNR.format(infCliente.getVlrSaldo()));
} else {
jlblSaldoDisponivel.setText("Ilimitado");
}
jtxtCodFidel.setEnabled(false);
}
} else if ((infCliente.getCdConv() == 0) && (infCliente.getNrCartao() != null) && (!infCliente.getNrCartao().equals(""))) {
jtxtCodFidel.setText(infCliente.getNrCartao().trim());
jtxtCodFidel.setToolTipText(infCliente.getNrCartao().trim());
jtxtCodFidel.setEnabled(false);
} else if ((infCliente.getNrCartao() == null) || (infCliente.getNrCartao() != null && infCliente.getNrCartao().equals(""))) {
jtxtCodFidel.setText("");
jtxtCodFidel.setToolTipText("");
}
}
Código de onde dá o erro:
private void PreencheInfCliente(int i) {
if (("").equals(jtxtCodCliente.getText()) && ("").equals(jtxtCodFidel.getText())) {
return;
}
Collection<ClienteOrcamento> clientes = new ArrayList<ClienteOrcamento>();
try {
if (i == 1) {
String codCliente = jtxtCodCliente.getText();//criar uma lista para retornar
clientes = servico.getClienteOrcamento(RegistryOrcamento.getEmpresaAtual().getCdEmp(), codCliente, false);
} else if (i == 2) {
String codFidel = jtxtCodFidel.getText();
clientes = servico.getClienteOrcamento(RegistryOrcamento.getEmpresaAtual().getCdEmp(), codFidel, true);
}
} catch (NumberFormatException ex) {
TelaError.exibirMensagem(this, "erro na conversao numerica", ex.getMessage());
} catch (AplicacaoException e) {
TelaError.exibirMensagem(this, e);
return;
}
if (!clientes.isEmpty()) {
flagMostrouMensagem = false;
if (clientes.size() == 1) {
infCliente = clientes.iterator().next();
} else {
PopUpConvenio popConv = new PopUpConvenio(this, true, (List<ClienteOrcamento>) clientes);
popConv.setVisible(true);
infCliente = popConv.getCliConv();
}
}
if (infCliente != null && (infCliente.getCdCli() != null && !("").equals(infCliente.getCdCli()))) {
String cpf = infCliente.getCgcCpf().trim().replaceAll("\\D", "");
if (parEmpresa.isUtilizaContrPtsExterno() && CNP.isValidCPF(cpf)) {
pesquisaClienteFidelidade(cpf, true);
}
//validaCpfInvalido();
if (infCliente.getStsCli() == 1) {
JOptionPane.showMessageDialog(this, "Cliente " + infCliente.getRzCli() + " está inativo!\nEntre em contato com o Departamento Financeiro.", "Atenção!", JOptionPane.INFORMATION_MESSAGE);
jtxtCodFidel.setText("");
jtxtCodFidel.setToolTipText("");
jtxtCodVend.transferFocus();
return;
}
infCliente.getPessoa();
if (parAplicacao.isFlagNaoPermiteCupomOrcCnpj() && infCliente.getPessoa() == 2) {
JOptionPane.showMessageDialog(this, "Não e permitido venda para pessoa tipo jurídica!", "Atenção", JOptionPane.INFORMATION_MESSAGE);
}
if (infCliente.getTelefones() != null && infCliente.getTelefones().size() > 0) {
addTelefones(infCliente.getTelefones());
}
// valida excesso de compra fidelidade
if (!validaLimiteVendaFidelidade()) {
return;
}
if (infCliente.getRzCli() != null) {
jtxtNomeCli.setText(infCliente.getRzCli().trim());
}
jtxtNomeCli.setToolTipText(infCliente.getRzCli().trim());
String endCli, comp, bairro, dsCid, uf, pontoRef;
endCli = infCliente.getEndCli() == null ? "" : infCliente.getEndCli().trim();
comp = infCliente.getComplemento() == null ? "" : infCliente.getComplemento().trim();
bairro = infCliente.getBairro() == null ? "" : infCliente.getBairro().trim();
dsCid = infCliente.getDsCid() == null ? "" : infCliente.getDsCid().trim();
uf = infCliente.getUf() == null ? "" : infCliente.getUf().trim();
pontoRef = infCliente.getPontoRef() == null ? "" : infCliente.getPontoRef().trim();
jtxtEnderecoEntrega.setText(endCli + ", NR " + infCliente.getNumero() + " - " + comp + " - " + bairro + " - " + dsCid + " - " + uf + " - " + pontoRef);
if (infCliente.getTelefones() == null || infCliente.getTelefones().isEmpty()) {
if (jTblTelefones.getModel() instanceof TableTelefone) {
((TableTelefone) jTblTelefones.getModel()).clear();
} else {
DefaultTableModel modelo = Utils.clearTable(jTblTelefones);
jTblTelefones.setModel(modelo);
}
if (infCliente.getTel() != null && !infCliente.getTel().isEmpty()) {
List<Telefone> telefone = new ArrayList<>();
Telefone fone = new Telefone();
fone.setDddTelefone(infCliente.getDddTel());
fone.setDsTelefone(infCliente.getTel());
telefone.add(fone);
addTelefones(telefone);
}
} else {
addTelefones(infCliente.getTelefones());
}
jtxtEnderecoEntrega.setToolTipText(jtxtEnderecoEntrega.getText());
jtxtCodCliente.setText(infCliente.getCdCli());
jtxtConvenio.setText("");
jtxtConvenio.setToolTipText("");
jlblSaldoDisponivel.setText("0");
// altera senha
if (RegistryOrcamento.getServicoOnline() != null) {
if (alterarSenha()) {
return;
}
}
// setando dados do convenio nos campos
**_setDadosConvenio();_**
if (!infCliente.getCdCli().equals(String.valueOf(cdCliPadrao)) && servicoOnline != null) {
new WaitTaskImpl(null).executeNoShow();
}
atualizaDadosFidelidade();
processaPontuacaoCliente();
pontosExterno();
limparCadItens();
jtxtCodFidel.transferFocus();
if (infCliente.isCrediario() && !infCliente.isStsCreCrediario()) {
String msgBloq = infCliente.getObs() != null && !("").equals(infCliente.getObs()) ? infCliente.getObs() + "\n" : "";
msgBloq += "Cliente com bloqueio de compras pelo Crediário e/ou não compra por Crediário.\nEntre em contato com o Departamento Financeiro.";
msgBloq += "\nMotivo : " + infCliente.getMotivoBloqueioCrediario() + "-" + infCliente.getDescMotivoBloqueioCrediario();
infCliente.setObs(msgBloq);
}
if (infCliente.isConveniado() && ("1").equals(infCliente.getStsCred())) {
JOptionPane.showMessageDialog(this, "Atenção\nCliente Bloqueado no convênio.", "Atenção", JOptionPane.INFORMATION_MESSAGE);
}
if ((((infCliente.getInstrucoes() != null) && (!("").equals(infCliente.getInstrucoes()))) || ((infCliente.getObs() != null) && (!("").equals(infCliente.getObs())))) && orcamento == null || (infCliente.getListMsgCrm() != null && infCliente.getListMsgCrm().size() > 0)) {
if (!flagMostrouMensagem) {
flagMostrouMensagem = true;
mostraMensagem();
}
}
if (("").equals(jtxtCodFidel.getText())) {
jtxtCodFidel.setEnabled(true);
jtxtCodFidel.requestFocus();
}
if (!flagIsQualificado) {
flagIsQualificado = true;
qualificarCli(infCliente);
}
ParametroOrcamento.cleanInstance();
} else {
String cpf = jtxtCodFidel.getText().trim().replaceAll("\\D", "");
if (parEmpresa.isUtilizaContrPtsExterno() && CNP.isValidCPF(cpf)) {
pesquisaClienteFidelidade(cpf); // cadastra cliente gestao
validaFidelidade(); // consulta novamente
} else {
if (!("").equals(jtxtCodFidel.getText()) && cartaoImp.isExisteCartao() && !cartaoImp.isStsCartao()) {
JOptionPane.showMessageDialog(this, "Cartão já utilizado.\nSolite autorização ao gerente para incluir uma nova venda.", "Atenção", JOptionPane.INFORMATION_MESSAGE);
int codVendAut = 0;
if (parEmpresa.isValidarUsuarioPorBiometria()) {
codVendAut = Digital.getInstance().getUsuarioByDigital(RegistryOrcamento.getUsuariosBio());
if (codVendAut == 0) {
jtxtProdQtd.requestFocus(true);
JOptionPane.showMessageDialog(this, "Funcionário não localizado");
return;
}
} else {
TelaLoginUsuario telLoginUsuario = new TelaLoginUsuario(this, 0);
telLoginUsuario.setVisible(true);
this.setFocusable(true);
codVendAut = telLoginUsuario.codVendAut;
}
if (codVendAut != 0) {
try {
if (!servico.getUsuarioAcesso(codVendAut, RegistryOrcamento.getEmpresaAtual().getFilial().getId(), 65)) {
JOptionPane.showMessageDialog(this, "Usuário sem acesso á este procedimento.", "Atenção", JOptionPane.INFORMATION_MESSAGE);
jtxtCodFidel.setText("");
jtxtCodFidel.setToolTipText("");
return;
}
} catch (AplicacaoException e) {
TelaError.exibirMensagem(this, e);
return;
}
} else {
jtxtCodFidel.setText("");
jtxtCodFidel.setToolTipText("");
}
} else {
JOptionPane.showMessageDialog(this, "Cliente ou cartão não localizado ou cartão inválido.", "Atenção", JOptionPane.INFORMATION_MESSAGE);
jtxtCodFidel.grabFocus();
jtxtCodFidel.setText("");
jtxtCodFidel.setToolTipText("");
}
//if()
jtxtConvenio.setText("");
jtxtConvenio.setToolTipText("");
jtxtEnderecoEntrega.setText("");
jtxtEnderecoEntrega.setToolTipText("");
jlblSaldoDisponivel.setText("");
jtxtPtoAtual.setText("");
jtxtPtoVenda.setText("");
jtxtPtoTotal.setText("");
jtxtCodCliente.setText("" + cdCliPadrao);
jtxtNomeCli.setText("CONSUMIDOR FINAL");
jtxtNomeCli.setToolTipText("");
}
}
}
Os códigos são grandes, mas aonde dá o erro está em negrito e itálico.
A stack trace é a seguinte:
Exception in thread “AWT-EventQueue-2” java.lang.NullPointerException
at br.itecbrazil.orcamento.client.apresentacao.TelaOrcamento.setDadosConvenio(TelaOrcamento.java:570)
at br.itecbrazil.orcamento.client.apresentacao.TelaOrcamento.PreencheInfCliente(TelaOrcamento.java:2320)