Package br.com.caelum.stella.boleto.bancos

Source Code of br.com.caelum.stella.boleto.bancos.Caixa

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 if (carteiraDoEmissor.equals("24")) {
      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.geraDigitoMod11AceitandoRestoZero(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();
  }
}
TOP

Related Classes of br.com.caelum.stella.boleto.bancos.Caixa

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.