Boletos Bradesco
leandrohsilveira opened this issue · comments
Olá, parabens pela API, está muito boa.
Porém tem um problema que encontrei para gerar boletos do bradesco, um erro pontual acredito que tem a ver com a mudança dos métodos "comCarteira(int)" para "comCarteira(String)".
Segue o problema:
A linha 83 da classe br.com.caelum.stella.boleto.bancos.Bradesco está:
StringBuilder builder = new StringBuilder().append( String.format("%02d", emissor.getCarteira()));
Isto lança exceção de formatter, pois o emissor.getCarteira() é uma String e o pattern de formatação é 02d (numérico de dois dígitos).
Caused by: java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2748)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2702)
at java.util.Formatter.format(Formatter.java:2488)
at java.util.Formatter.format(Formatter.java:2423)
at java.lang.String.format(String.java:2797)
at br.com.caelum.stella.boleto.bancos.Bradesco.getNossoNumeroECodDocumento(Bradesco.java:83)
at br.com.caelum.stella.boleto.Boleto.getNossoNumeroECodDocumento(Boleto.java:406)
... 50 more
Pode ser feito o seguinte workaround:
Banco banco = new Bradesco() {
@Override
public String getNossoNumeroECodDocumento(Boleto boleto) {
Emissor emissor = boleto.getEmissor();
StringBuilder builder = new StringBuilder().append(String.format("%s", emissor.getCarteira()));
builder.append("/").append(getNossoNumeroDoEmissorFormatado(emissor));
return builder.append(getDigitoNossoNumero(emissor)).toString();
}
private String getDigitoNossoNumero(Emissor emissor) {
return emissor.getDigitoNossoNumero() != null
&& !emissor.getDigitoNossoNumero().isEmpty()
? "-" + emissor.getDigitoNossoNumero() : "";
}
};
Eu estava usando uma versão antiga. Desculpe pelo equivoco.