Closed leandrohsilveira closed 10 years ago
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.
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