All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.caelum.stella.boleto.bancos.BancoDoBrasil Maven / Gradle / Ivy

package br.com.caelum.stella.boleto.bancos;

import br.com.caelum.stella.boleto.Banco;
import br.com.caelum.stella.boleto.Boleto;
import br.com.caelum.stella.boleto.Emissor;
import br.com.caelum.stella.boleto.exception.CriacaoBoletoException;

/**
 * Gera dados de um boleto relativos ao Banco do Brasil.
 * 
 * @author Cauê Guerra
 * @author Paulo Silveira
 */
public class BancoDoBrasil extends AbstractBanco implements Banco {

	private static final String NUMERO_BB = "001";
	private static final String DIGITO_NUMERO_BB = "9";

	@Override
	public String geraCodigoDeBarrasPara(Boleto boleto) {
		StringBuilder campoLivre = new StringBuilder();
		Emissor emissor = boleto.getEmissor();
		if (emissor.getNumeroConvenio() < 1000000) {
			if (emissor.getCarteira() == 16 || emissor.getCarteira() == 18) {
				campoLivre.append(getNumeroConvenioDoEmissorFormatado(emissor));
				campoLivre.append(getNossoNumeroDoEmissorFormatado(emissor));
				campoLivre.append("21");
			} else {
				campoLivre.append(getNossoNumeroDoEmissorFormatado(emissor));
				campoLivre.append(emissor.getAgenciaFormatado());
				campoLivre.append(emissor.getCedente());
				campoLivre.append(boleto.getBanco().getCarteiraDoEmissorFormatado(emissor));
			}
		} else if (emissor.getCarteira() == 17 || emissor.getCarteira() == 18) {
			campoLivre.append("000000");
			campoLivre.append(getNumeroConvenioDoEmissorFormatado(emissor));
			campoLivre.append(getNossoNumeroDoEmissorFormatado(emissor).substring(7));
			campoLivre.append(boleto.getBanco().getCarteiraDoEmissorFormatado(emissor));
		} else {
			throw new CriacaoBoletoException(
					"Erro na geração do código de barras. Nenhuma regra se aplica. " +
					"Verifique carteira e demais dados.");
		}
		return new CodigoDeBarrasBuilder(boleto).comCampoLivre(campoLivre);
	}

	@Override
	public String getNumeroFormatado() {
		return NUMERO_BB;
	}

	@Override
	public java.net.URL getImage() {
		String arquivo = "/br/com/caelum/stella/boleto/img/%s.png";
		String imagem = String.format(arquivo, getNumeroFormatado());
		return getClass().getResource(imagem);
	}

	public String getNumeroConvenioDoEmissorFormatado(Emissor emissor) {
		if (emissor.getNumeroConvenio() < 1000000) {
			return String.format("%06d", emissor.getNumeroConvenio());
		} else {
			return String.format("%07d", emissor.getNumeroConvenio());
		}
	}

	@Override
	public String getContaCorrenteDoEmissorFormatado(Emissor emissor) {
		return String.format("%08d", emissor.getContaCorrente());
	}

	@Override
	public String getCarteiraDoEmissorFormatado(Emissor emissor) {
		return String.format("%02d", emissor.getCarteira());
	}

	@Override
	public String getNossoNumeroDoEmissorFormatado(Emissor emissor) {
		if (emissor.getCarteira() == 18) {
			return String.format("%017d", emissor.getNossoNumero());
		} else {
			return String.format("%011d", emissor.getNossoNumero());
		}
	}

	@Override
	public String getNumeroFormatadoComDigito() {
		return NUMERO_BB + "-" + DIGITO_NUMERO_BB;
	}

	@Override
	public String getNossoNumeroECodDocumento(Emissor emissor) {
		return getNossoNumeroDoEmissorFormatado(emissor);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy