CNPJ Mask Problem in print in database (solved)

Asked

Viewed 90 times

-2

This is the class that validates the CNPJ:

package br.com.Sistema.meuProjeto;

import java.util.InputMismatchException;

public class ValidaCNPJ {

  public static boolean isCNPJ(String cnpjFornec) {
// considera-se erro CNPJ's formados por uma sequencia de numeros iguais
    if (cnpjFornec.equals("00000000000000") || cnpjFornec.equals("11111111111111") ||
        cnpjFornec.equals("22222222222222") || cnpjFornec.equals("33333333333333") ||
        cnpjFornec.equals("44444444444444") || cnpjFornec.equals("55555555555555") ||
        cnpjFornec.equals("66666666666666") || cnpjFornec.equals("77777777777777") ||
        cnpjFornec.equals("88888888888888") || cnpjFornec.equals("99999999999999") ||
       (cnpjFornec.length() != 14))
       return(false);

    char dig13, dig14;
    int sm, i, r, num, peso;

// "try" - protege o código para eventuais erros de conversao de tipo (int)
    try {
// Calculo do 1o. Digito Verificador
      sm = 0;
      peso = 2;
      for (i=11; i>=0; i--) {
// converte o i-ésimo caractere do CNPJ em um número:
// por exemplo, transforma o caractere '0' no inteiro 0
// (48 eh a posição de '0' na tabela ASCII)
        num = (int)(cnpjFornec.charAt(i) - 48);
        sm = sm + (num * peso);
        peso = peso + 1;
        if (peso == 10)
           peso = 2;
      }

      r = sm % 11;
      if ((r == 0) || (r == 1))
         dig13 = '0';
      else dig13 = (char)((11-r) + 48);

// Calculo do 2o. Digito Verificador
      sm = 0;
      peso = 2;
      for (i=12; i>=0; i--) {
        num = (int)(cnpjFornec.charAt(i)- 48);
        sm = sm + (num * peso);
        peso = peso + 1;
        if (peso == 10)
           peso = 2;
      }

      r = sm % 11;
      if ((r == 0) || (r == 1))
         dig14 = '0';
      else dig14 = (char)((11-r) + 48);

// Verifica se os dígitos calculados conferem com os dígitos informados.
      if ((dig13 == cnpjFornec.charAt(12)) && (dig14 == cnpjFornec.charAt(13)))
         return(true);
      else return(false);
    } catch (InputMismatchException erro) {
        return(false);
    }
  }

  public static String imprimeCNPJ(String cnpjFornec) {
// máscara do CNPJ: 99.999.999.9999-99
    return(cnpjFornec.substring(0, 2) + "." + cnpjFornec.substring(2, 5) + "." +
            cnpjFornec.substring(5, 8) + "." + cnpjFornec.substring(8, 12) + "-" +
            cnpjFornec.substring(12, 14));
  }


}

THIS CLASS HERE IS WHERE I AM MAKING THE RECORD

package br.com.Sistema.telas;


import meuProjetoDuvida.ValidaCNPJ;

public class CADASTRO extends JInternalFrame {

    private JTextField cnpjFornec;

    public CADASTRO() {
        setMaximizable(true);
        setIconifiable(true);
        setClosable(true);
        setBounds(0, 0, 600, 440);
        getContentPane().setLayout(null);

        JLabel lblCnpjCpf = new JLabel("CNPJ / CPF");
        lblCnpjCpf.setBounds(60, 146, 81, 14);
        getContentPane().add(lblCnpjCpf);

        JButton btnCadastrar = new JButton("");
        btnCadastrar.setBounds(139, 214, 50, 50);
        btnCadastrar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                cadastroFornec();
            }
        });
        btnCadastrar.setIcon(new ImageIcon("C:\\ambiente_de_trabalho\\teste\\Nova_Sao_Paulo\\icones\\adiciona.png"));
        getContentPane().add(btnCadastrar);

        cnpjFornec = new JTextField();
        cnpjFornec.setColumns(10);
        cnpjFornec.setBounds(195, 143, 163, 20);
        getContentPane().add(cnpjFornec);

        JScrollBar scrollBar = new JScrollBar();
        scrollBar.setBounds(567, 42, 17, 105);
    }

    private void cadastroFornec() {
        String sql = "insert into fornecedores( cnpj_fornec) values(?)";
        try {
            // valida o cpf

            if (ValidaCNPJ.isCNPJ(cnpjFornec.getText()) == true) {
                System.out.printf("%s\n", ValidaCNPJ.imprimeCNPJ(cnpjFornec.getText()));

                // VALIDAÇAO DOS CAMPOS OBRIGATORIOS
                if ((cnpjFornec.getText().isEmpty())) {
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatório");
                } else {
                    if (ValidaCNPJ.isCNPJ(cnpjFornec.getText()) == true) {
                        // A ESTRUTA ABAIXO SERVE PARA CONFIRMA PARA INSERÇÃO NA TABELA DE DADOS
                        int adicionado = pst.executeUpdate();
                        // A LINHA ABAIXO SERVE DE APOIO AO ENTENDIMENTO DA LOGICA
                        if (adicionado > 0) {
                            JOptionPane.showMessageDialog(null, "Fornecedor adicioinado com sucesso");
                            cnpjFornec.setText(null);
                        }
                    } else { // System.out.printf("Erro, CNPJ inválido !!!\n");
                        JOptionPane.showMessageDialog(null, "Erro, CNPJ inválido !!!\n");
                        cnpjFornec.setText(null);
                    }
                }

            } else {
                System.out.printf("Erro, CNPJ inválido !!!\n");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);

        }

    }

}

The only problem is that when I register it does not print in the database this way 45.841.637/0001-49. and if I type so 45.841.637/0001-49 of the error I need to type so 45841637000149 but it is thus tb in the database...

  • Provide a [mcve] of your code so that it is possible to execute the code and help you.

  • 1

    AND YOU DON’T NEED TO WRITE EVERYTHING IN CAPS OR IN BOLD, IT WON’T DRAW ATTENTION TO YOUR QUESTION

  • OK I’ll edit it

  • 1

    Before editing, I recommend that you read: [Ask]

  • you need to save in the database without mask, and need to create a function to by mask is this?

1 answer

0

I guess that settles it,

String temp = cnpjFornec.getText();
// segundo sua função ele espera apenas os números sem a máscara
// então vc precisa remover tudo que não seja número
temp.replace(['.','/','-'], ''); // melhor com expressão regular \d    
if ( ValidaCNPJ.isCNPJ(temp) == true))

and you save in the database without mask and create a genomic function that puts the mask (correct shape), here is an example of a java function to create a generic mask

  • try this way also did not work String temp = cnpjFornec.gettext(); temp = temp.replaceAll("['. ','/','-']", ""); if (Validacnpj.isCNPJ(temp) == true) {

Browser other questions tagged

You are not signed in. Login or sign up in order to post.