Você está aqui: Java ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104

Boleto Bancário Java - Como montar o código de barras juntamente com o seu dígito verificador (Módulo 11) - Boleto Caixa Econômica

Quantidade de visualizações: 2388 vezes
Em outras dicas dessa seção eu mostrei, passo-a-passo, como calcular o dígito verificador do código do cedente e também o campo livre, juntamente com o seu dígito verificador, para os boletos da Caixa Econômica Federal (Banco 104). Mostrei também nessa seção como calcular o fator de vencimento do boleto. Todos esses dados são essenciais para a montagem do código de barras e da linha digitável do boleto. Em caso de dúvidas, revise as demais dicas. Prossiga somente se você estiver bem seguro quanto aos conhecimentos anteriores.

Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), o código de barras para a cobrança contém 44 posições dispostas da seguinte forma:

a) Identificação do banco: Será sempre o valor 104, que é o número do banco para a Caixa Econômica;

b) Código da moeda: Será sempre o valor 9 (Real);

c) DV Geral do Código de Barras: Dígito verificador do código de barras que mostro como calcular mais abaixo;

d) Fator de Vencimento: Que já mostrei em dicas anteriores;

e) Valor do Documento: Composto por 10 dígitos, sem pontos nem vírgula;

f) Campo livre e seu dígito verificador: Composto por 25 posições, conforme já calculamos em dicas anteriores.

O cálculo que mostrarei a seguir está de acordo com as instruções do Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código apresentado.

Dito isso, veja o código Java completo para uma função que recebe o código do banco, o código da moeda, o fator de vencimento, o valor do boleto, o campo livre completo e retorna o código de barras, juntamente com o seu dígito verificador, já na posição correta:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
  ATENÇÃO: As função complementares e já vistas em outras
  dicas dessa seção foram omitidas deste código
*/

public class Estudos{
  public static void main(String[] args){
    // ATENÇÃO: Se você ainda não entende os dados abaixo.
    // revise as dicas anteriores antes de continuar
    String banco = "104";
    String moeda = "9";
    String carteira = "1"; //  
    String emissao = "4"; // cedente
    String nossoNumero = "222333777777777";
    double valor = 321.12; // sempre duas casas decimais
    String vencimento = "23/08/2006";
    int fator = fatorVencimento(vencimento);
    String nossoNumeroCompleto = carteira + emissao + nossoNumero;
    String cedente = "005507";
    int dvCedente = dvCodigoCedente(cedente);
    String campoLivre = montarCampoLivre(cedente, dvCedente,
      nossoNumeroCompleto);
    String codigoBarras = montarCodigoBarras(banco, moeda, fator,
      valor, campoLivre);

    // vamos mostrar o resultado
    System.out.println("O código de barras oompleto é: " +
      codigoBarras);
  }
 
  // função que monta o código de barras
  public static String montarCodigoBarras(String banco,
    String moeda, int fator, double valor, String campoLivre){
  
    // precisamos tratar o valor do título
    NumberFormat nf = NumberFormat.getInstance();
    String strValor = nf.format(valor);
    strValor = strValor.replaceAll("\\.", "");
    strValor = strValor.replaceAll(",", "");
    strValor = String.format("%1$10s", strValor).replace(' ', '0');
      System.out.println(strValor);
    
    // código de barras provisório
    String codigoBarras = banco + moeda + fator + 
      strValor + campoLivre;

    System.out.println("O código de barras provisório é: " + 
      codigoBarras);
	
    // vamos calcular o dígito verificador
    int dvCodigoBarras = dvCodigoBarras(codigoBarras);
	
    // código de barras completo
    codigoBarras = banco + moeda + dvCodigoBarras +
      fator + strValor + campoLivre;
	
    return codigoBarras;	
  }
  
  // função que monta o dígito verificador do código
  // de barras
  public static int dvCodigoBarras(String codigoBarras){
    // vamos definir os índices de múltiplicação
    String indices = "4329876543298765432987654329876543298765432";
    int soma = 0;
     
    // fazemos a multiplicação coluna por coluna agora
    // fazemos a multiplicação coluna por coluna agora
    for (int i = 0; i < codigoBarras.length(); i++){
      soma = soma + Integer.parseInt(String.valueOf(codigoBarras.charAt(i))) *
        Integer.parseInt(String.valueOf(indices.charAt(i)));
    }
    
    // obtemos o resto da divisão da soma por onze
    int resto = soma % 11;
     
    // subtraímos onze pelo resto da divisão
    int digito = 11 - resto;  	
	 
    // atenção: Se o resultado da subtração for
    // maior que 9 (nove) ou igual a 0, o dígito será 1 (um)
    if((digito > 9) || (digito == 0)){
      digito = 1;    
    }
    
    System.out.println("O DV Geral do Código de Barras é: "
      + digito); 
	 
    return digito;
  }  
}

Ao executar este código Java nós teremos o seguinte resultado:

O código de barras provisório é: 1049324200000321120055077222133347777777771
O DV Geral do Código de Barras é: 4
O código de barras completo é: 10494324200000321120055077222133347777777771

Para não deixar o código desta dica muito longo, eu omiti algumas funções, que podem ser facilmente encontradas nas dicas anteriores.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Java Swing - JTable e classes relacionadas ::: JTable

Como aplicar uma borda colorida a uma célula da JTable do Java Swing ao passar o mouse

Quantidade de visualizações: 46 vezes
Nesta dica mostrarei como podemos exibir uma borda colorida às células de uma tabela JTable do Java Swing ao passar o mouse sobre ela. Para isso nós vamos criar uma classe personalizada que herda da classe TableCellRenderer.

Em seguida nós usamos o evento mouseMoved da classe MouseMotionAdapter para aplicar a borda colorida às células.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
 
public class Estudos extends JFrame{
  int linha, coluna;
  Border vermelho = 
     BorderFactory.createLineBorder(Color.red);
  Border vazia = BorderFactory.createEmptyBorder();
   
  public Estudos(){
    super("JTable");
         
    // colunas da tabela
    String[] colunas = {"Cidade", "Estado", "Habitantes"};
         
    // conteúdo da tabela   
    Object[][] conteudo = {
        {"Goiânia", "GO", "43.023.432"},
        {"São Paulo", "SP", "5.343.234"},
        {"Rio de Janeiro", "RJ", "6.434.212"},
        {"Jussara", "GO", "87.454"},
        {"Barra do Garças", "MT", "64.344"}
    };
         
    // constrói a tabela
    final JTable tabela = new JTable(conteudo, colunas);
    tabela.setPreferredScrollableViewportSize(new 
        Dimension(350, 50));
     
    class CellListener extends MouseMotionAdapter{
      public void mouseMoved(MouseEvent e){
        JTable tb = (JTable)e.getSource();
        linha = tb.rowAtPoint(e.getPoint());
        coluna = tb.columnAtPoint(e.getPoint());
        tb.repaint();
      }
    }
     
    class BordaCelula extends JLabel implements
         TableCellRenderer{
      public BordaCelula(){
        setOpaque(true);
      }
 
      public Component getTableCellRendererComponent (
                 JTable table, Object value,
                 boolean isSelected, boolean hasFocus, 
                 int row, int column){
        if(row == linha && column == coluna){
          this.setBorder(vermelho);
        }
        else{
          this.setBorder(vazia);
        }
         
        this.setText(value.toString());
        return this;
      }
    }
     
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
     
    tabela.addMouseMotionListener(new CellListener());
     
    tabela.setDefaultRenderer(Object.class, new 
        BordaCelula());
 
             
    JScrollPane scrollPane = new JScrollPane(tabela);
    c.add(scrollPane);
         
    setSize(400, 300);
    setVisible(true);
  }
     
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}



Java ::: Dicas & Truques ::: Mouse e Teclado

Como ligar ou desligar a tecla Caps Lock do seu teclado usando Java

Quantidade de visualizações: 17916 vezes
Nesta dica mostrarei como ligar ou desligar a tecla Caps Lock (tudo maiúsculo) do seu teclado usando o método setLockingKeyState() da classe Toolkit, do pacote java.awt. Note que passei o valor true para ligar o Caps Lock e false para desligar.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
 
import java.awt.Toolkit;
import java.awt.event.*;
 
public class Estudos{
  public static void main(String[] args){
    Toolkit tk = Toolkit.getDefaultToolkit();    
     
    // Liga a tecla Caps Lock
    tk.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, true);
     
    // Para desligar basta usar:
    // tk.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, false);    
 
    System.exit(0);
  }
}

Esta dica foi testada no Java 8 e Windows 10.


Java ::: Coleções (Collections) ::: ArrayList

Como retornar o índice da última ocorrência de um elemento em uma ArrayList do Java usando a função lastIndexOf()

Quantidade de visualizações: 9096 vezes
Em algumas situações nós gostaríamos de pesquisar um valor em um ArrayList e retornar o índice de sua última aparição, para o caso desse elemento estar contido mais de uma vez na coleção. Para isso nós podemos usar o método lastIndexOf().

Se o elemento pesquisado não estiver na ArrayList, o valor -1 será retornado.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.ArrayList;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<String>();
    
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
    nomes.add("Osmar");
    nomes.add("Maria");    
	
    // obtém o índice da última ocorrência do
    // nome "Maria"
    int indice = nomes.lastIndexOf("Maria");

    System.out.println("O último índice do nome pesquisado é: " 
      + indice); 

    System.exit(0);
  }
}

Ao executarmos este código Java nós teremos o seguinte resultado:

O último índice do nome pesquisado é: 4


Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Fenômeno de Transportes

De uma grande barragem, parte uma canalização de 250mm de diâmetro, de onde a água passa para a atmosfera sob a forma de jato. A vazão deste jato é 360L/s. Calcular a velocidade Vj do jato e a altura (H) na barragem. Considere que não há perda de energia no processo e que a velocidade de decaimento do nível da barragem é nula.



A) Vj = 7,33m/s e H = 2,74m.

B) Vj = 1,83m/s e H = 0,17m.

C) Vj = 2,46m/s e H = 0,31m.

D) Vj = 7,33m/s e H = 0,37m,

E) Vj =7,33 X 10-3m/s e H = 2,74 X 10-6m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Processos e técnicas construtivas de instalações elétricas e hidráulicas

As instalações prediais de água fria têm a função de distribuir água potável em temperatura ambiente, enquanto as instalações prediais de água quente distribuem água aquecida, sempre observando a segurança dos usuários. Analise as afirmativas a seguir, referentes às instalações prediais de água fria e água quente.

I. As colunas de distribuição têm a função de conduzir a água a partir dos barriletes com destino aos ramais, tanto na instalação de água fria quanto na instalação de água quente.

II. Os aquecedores de acumulação se caracterizam pela capacidade de armazenamento de água, que é aquecida em um reservatório componente do equipamento.

III. O sistema de aquecimento individual, em uma edificação, consiste naquele que alimenta todos os pontos de utilização de um único apartamento.

IV. As bitolas das tubulações empregadas em uma rede de distribuição de água devem diminuir a partir do barrilete em direção ao sub-ramal.

Assinale a alternativa que apresenta somente a(s) afirmativa(s) correta(s).

A) Apenas a afirmativa I está correta.

B) Apenas a afirmativa III está correta.

C) Apenas as afirmativas II e III estão corretas.

D) Apenas as afirmativas I, II e IV estão corretas.

E) As afirmativas I, II, III e IV estão corretas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Analise o seguinte código Python

a = 1
while True:
  if a % 3 == 0:
    break
  print(a) 
  a += 1

Qual é o resultado de sua execução?

A) Um erro de execução

B) 1 2

C) 1 2 3

D) Um laço while infinito
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações diretas ou rasas

A viga de fundação é também chamada de viga baldrame. É utilizada para conectar sapatas isoladas e distribuir melhor o peso da estrutura para as camadas do solo. A partir disso, projete uma viga de fundação para os pilares P1 e P2, indicados na figura, sendo a taxa no solo σs = 0,4.

Considere: P1 = P2 = 1.800KN.

Dimensões P1 e P2 = 25cmX100cm.



A) a = 400cm e b = 280cm.

B) a = 365cm e b = 250cm.

C) a = 250cm e b = 365cm.

D) a = 345cm e b = 230cm.

E) a = 405cm e b = 315cm.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações profundas

A grande vantagem das estacas moldadas in solo em relação às pré-moldadas é permitir que o comprimento estritamente necessário seja concretado.

O tipo de fundação profunda constituída por concreto, moldada in loco e executada por meio de trado contínuo e injeção de concreto pela própria haste do trado, é a:

A) estaca escavada mecanicamente.

B) estaca injetada.

C) estaca hélice contínua.

D) estaca Franki.

E) estaca-raiz.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 43 usuários muito felizes estudando em nosso site.