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

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

There is a newer version: 2.1.7
Show newest version
package br.com.caelum.stella.boleto.bancos;

import java.net.URL;

import br.com.caelum.stella.boleto.Banco;
import br.com.caelum.stella.boleto.Beneficiario;
import br.com.caelum.stella.boleto.Boleto;
import static br.com.caelum.stella.boleto.utils.StellaStringUtils.leftPadWithZeros;
import static java.lang.String.format;

public class Caixa extends AbstractBanco implements Banco {

	private static final long serialVersionUID = 1L;


	private static final String NUMERO_CAIXA = "104";
	private static final String DIGITO_CAIXA = "0";

	@Override
	public String geraCodigoDeBarrasPara(Boleto boleto) {
		
		Beneficiario beneficiario = boleto.getBeneficiario();
		String carteiraDoEmissor = beneficiario.getCarteira();
		StringBuilder campoLivre = new StringBuilder();
		
		if (carteiraDoEmissor.equals("1")) {
			campoLivre.append(carteiraDoEmissor);
			campoLivre.append(leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 6));
			campoLivre.append(getNossoNumeroFormatado(beneficiario));
		}
		else if (carteiraDoEmissor.equals("2")) {
			String nossoNumeroCompleto = getNossoNumeroFormatado(beneficiario);
			campoLivre.append(leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 6));
			campoLivre.append(beneficiario.getDigitoCodigoBeneficiario());
			campoLivre.append(nossoNumeroCompleto.substring(2, 5));
			campoLivre.append(nossoNumeroCompleto.substring(0, 1));
			campoLivre.append(nossoNumeroCompleto.substring(5 ,8));
			campoLivre.append(nossoNumeroCompleto.substring(1, 2));
			campoLivre.append(nossoNumeroCompleto.substring(8));
			campoLivre.append(geradorDeDigito.geraDigitoMod11(campoLivre.toString()));
		}
		else {
			throw new IllegalArgumentException("A carteira digitada não é suportada: " + carteiraDoEmissor);
		}
		return new CodigoDeBarrasBuilder(boleto).comCampoLivre(campoLivre);
	}

	@Override
	public String getNumeroFormatadoComDigito() {
		StringBuilder builder = new StringBuilder();
		builder.append(getNumeroFormatado()).append("-");
		return builder.append(DIGITO_CAIXA).toString();
	}

	@Override
	public String getCarteiraFormatado(Beneficiario beneficiario) {
		return leftPadWithZeros(beneficiario.getCarteira(), 2);
	}

	@Override
	public String getCodigoBeneficiarioFormatado(Beneficiario beneficiario) {
		return leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 5);
	}

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

	@Override
	public String getNossoNumeroFormatado(Beneficiario beneficiario) {
		return leftPadWithZeros(beneficiario.getNossoNumero(), 17);
	}

	@Override
	public String getNumeroFormatado() {
		return NUMERO_CAIXA;
	}
	
	@Override
	public String getNossoNumeroECodigoDocumento(Boleto boleto) {
		
		Beneficiario beneficiario = boleto.getBeneficiario();
		
		String nn = getNossoNumeroFormatado(beneficiario);
		StringBuilder builder = new StringBuilder(nn);
		
		if(beneficiario.getDigitoNossoNumero() != null 
				&& !beneficiario.getDigitoNossoNumero().isEmpty()){
			builder.append("-").append(beneficiario.getDigitoNossoNumero());
		}
		return builder.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy