Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,7 @@ public interface Banco extends Serializable {
GeradorDeDigito getGeradorDeDigito();

String getNossoNumeroECodigoDocumento(Boleto boleto);

String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario);

}
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,7 @@ public String getCodigoBeneficiarioFormatado(Beneficiario beneficiario) {

@Override
public String getNossoNumeroFormatado(Beneficiario beneficiario) {
String nossoNumero = beneficiario.getNossoNumero();
if (beneficiario.getDigitoNossoNumero() != null) {
return leftPadWithZeros(nossoNumero+beneficiario.getDigitoNossoNumero(), 10);
}
return leftPadWithZeros(nossoNumero+getGeradorDeDigito().calculaDVNossoNumero(nossoNumero), 10);
return leftPadWithZeros(beneficiario.getNossoNumero(), 10);
}

@Override
Expand Down Expand Up @@ -99,4 +95,17 @@ public GeradorDeDigitoSantander getGeradorDeDigito() {
public String getNumeroConvenioFormatado(Beneficiario beneficiario) {
return leftPadWithZeros(beneficiario.getNumeroConvenio(), 7);
}
}

/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package br.com.caelum.stella.boleto.bancos;

import static br.com.caelum.stella.boleto.utils.StellaStringUtils.leftPadWithZeros;

import java.net.URL;

import br.com.caelum.stella.boleto.Beneficiario;
import br.com.caelum.stella.boleto.Boleto;
import br.com.caelum.stella.boleto.bancos.gerador.GeradorDeDigitoBancoAgiplan;

public class BancoAgiplan extends AbstractBanco {


private static final long serialVersionUID = 1L;
private static final String NUMERO_BANCO_AGIPLAN = "121";
private static final String DIGITO_NUMERO_BANCO_AGIPLAN = "1";
private static final String COD_CEDENTE = "000000000001";
private static final String LAYOUT = "4";
private GeradorDeDigitoBancoAgiplan gdivBancoAgiplan = new GeradorDeDigitoBancoAgiplan();

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

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

@Override
public String geraCodigoDeBarrasPara(Boleto boleto) {
Beneficiario beneficiario = boleto.getBeneficiario();
StringBuilder campoLivre = new StringBuilder("");
campoLivre.append(COD_CEDENTE);
campoLivre.append(boleto.getBanco().getNossoNumeroFormatado(beneficiario));
campoLivre.append(boleto.getBanco().getCarteiraFormatado(beneficiario));
campoLivre.append(LAYOUT);
return new CodigoDeBarrasBuilder(boleto).comCampoLivre(campoLivre);
}

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

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

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

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

@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {
return getGeradorDeDigito().calculaDVNossoNumero(getCarteiraFormatado(beneficiario)+beneficiario.getNossoNumero());
}

@Override
public GeradorDeDigitoBancoAgiplan getGeradorDeDigito() {
return gdivBancoAgiplan;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,19 @@ public String getNossoNumeroECodigoDocumento(Boleto boleto) {
return getNossoNumeroParaCarteiras17e18(beneficiario);
}
}


/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ public Banco getBanco() {
public Banco getBanco() {
return new BMG();
}
},
BANCO_AGIPLAN("121", "Banco Agiplan"){
@Override
public Banco getBanco() {
return new BancoAgiplan();
}
};

private final String numeroDoBanco;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package br.com.caelum.stella.boleto.bancos;

import static br.com.caelum.stella.boleto.utils.StellaStringUtils.leftPadWithZeros;

import java.math.BigDecimal;

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;

/**
* Gera dados de um boleto relativos ao Banco Bradesco.
Expand Down Expand Up @@ -83,4 +86,73 @@ private String getDigitoNossoNumero(Beneficiario beneficiario) {
? "-" + beneficiario.getDigitoNossoNumero() : "";
}

/**
* Método para cálculo do dígito verificador do campo Nosso Número
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

String carteiraFormatada = leftPadWithZeros(beneficiario.getCarteira(), 3);

String numeroDocumentoFormatada = leftPadWithZeros(beneficiario.getNossoNumero(), 11);

String campo = carteiraFormatada + numeroDocumentoFormatada;

String bytResult = "0";

Integer intSoma = 0;

Integer bytMultiplicador = 2;

Integer bytTamanho = campo.length();

Integer bytCont = 0;

Integer bytResultado = 0;

while (bytCont < bytTamanho - 1) {

if (bytMultiplicador < 7) {

bytResultado = new BigDecimal(campo.substring(bytTamanho - (bytCont + 1), bytTamanho - bytCont)).multiply(new BigDecimal(bytMultiplicador)).intValue();

bytMultiplicador += 1;

} else {

bytResultado = new BigDecimal(campo.substring(bytTamanho - (bytCont + 1), bytTamanho - bytCont)).multiply(new BigDecimal(bytMultiplicador)).intValue();

bytMultiplicador = 2;

}

intSoma += bytResultado;

bytCont += 1;
}

bytResultado = intSoma % 11;

if (bytResultado != 0) {

bytResultado = 11 - bytResultado;

if (bytResultado == 10) {

bytResult = "P";

} else {

bytResult = String.valueOf(bytResultado);

}
}

return numeroDocumentoFormatada + bytResult;

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,17 @@ public String getNossoNumeroECodigoDocumento(Boleto boleto) {
}
return builder.toString();
}

/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,19 @@ public String geraCodigoDeBarrasPara(Boleto boleto) {
}

public String getDataFormatoJuliano(Calendar vencimento, int tipo) {
String result;
Calendar dataLimite = Calendar.getInstance();
dataLimite.set(Calendar.DAY_OF_MONTH, 1);
dataLimite.set(Calendar.MONTH, 7 - 1);
dataLimite.set(Calendar.YEAR, 1997);
if (vencimento.before(dataLimite)) {
result = "0000";
} else {
int diaDoAno = vencimento.get(Calendar.DAY_OF_YEAR);
int digitoDoAno = vencimento.get(Calendar.YEAR) % 10;
result = String.format("%03d%d", diaDoAno, digitoDoAno);
}
return result;
//String result;
//Calendar dataLimite = Calendar.getInstance();
//dataLimite.set(Calendar.DAY_OF_MONTH, 1);
//dataLimite.set(Calendar.MONTH, 7 - 1);
//dataLimite.set(Calendar.YEAR, 1997);
//if (vencimento.before(dataLimite)) {
// result = "0000";
//} else {
// int diaDoAno = vencimento.get(Calendar.DAY_OF_YEAR);
// int digitoDoAno = vencimento.get(Calendar.YEAR) % 10;
// result = String.format("%03d%d", diaDoAno, digitoDoAno);
//}
return "0000";
}

@Override
Expand Down Expand Up @@ -115,4 +115,17 @@ private DigitoPara getModuloNossoNumero(String nossoNumero) {
.mod(11);
}

}

/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,17 @@ public String getAgenciaECodigoBeneficiario(Beneficiario beneficiario) {
return builder.toString();
}


/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,18 @@ public GeradorDeDigitoSantander getGeradorDeDigito() {
public String getNumeroConvenioFormatado(Beneficiario beneficiario) {
return leftPadWithZeros(beneficiario.getNumeroConvenio(), 7);
}

/**
* Método para cálculo do dígito verificador do campo Nosso Número.
*
* @param beneficiario
* @return String
*/
@Override
public String getNossoNumeroComDigitoVerificador(Beneficiario beneficiario) {

return beneficiario.getNossoNumero();

}

}
Loading