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

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

package br.com.caelum.stella.boleto.bancos;

import br.com.caelum.stella.boleto.Banco;
import br.com.caelum.stella.boleto.Boleto;
import br.com.caelum.stella.boleto.CriacaoBoletoException;
import br.com.caelum.stella.boleto.Emissor;

/**
* Gera dados de um boleto relativos ao Banco Bradesco.
*
* @see <a *
*      href="http://stella.caelum.com.br/boleto-setup.html">http://stella.caelum
*      * .com.br/boleto-setup.html< /a>
*
* @see <a * href=
*      "http://www.bradesco.com.br/br/pj/conteudo/sol_rec/pdf/manualtecnico.pdf"
*      >MANUAL * DO BLOQUETO DE COBRANÇA< /a>
*
* @author Leonardo Bessa
*
*/
public class Bradesco implements Banco {

    private static final String NUMERO_BRADESCO = "237";

    private final DVGenerator dvGenerator = new DVGenerator();

    public String geraCodigoDeBarrasPara(Boleto boleto) {
        StringBuilder codigoDeBarras = new StringBuilder();
        codigoDeBarras.append(getNumeroFormatado());
        codigoDeBarras.append(String.valueOf(boleto.getCodEspecieMoeda()));
        // Digito Verificador sera inserido aqui.

        codigoDeBarras.append(boleto.getFatorVencimento());
        codigoDeBarras.append(boleto.getValorFormatado());

        Emissor emissor = boleto.getEmissor();

        // CAMPO LIVRE
        codigoDeBarras.append(emissor.getAgenciaFormatado());
        codigoDeBarras.append(getCarteiraDoEmissorFormatado(emissor));
        codigoDeBarras.append(getNossoNumeroDoEmissorFormatado(emissor));
        codigoDeBarras.append(getContaCorrenteDoEmissorFormatado(emissor));
        codigoDeBarras.append("0");

        codigoDeBarras.insert(4, dvGenerator
                .geraDVCodigoDeBarras(codigoDeBarras.toString()));

        String result = codigoDeBarras.toString();

        if (result.length() != 44) {
            throw new CriacaoBoletoException(
            "Erro na geração do código de barras. Número de digitos diferente de 44. Verifique todos os dados.");
        }

        return result;
    }

    public String geraLinhaDigitavelPara(Boleto boleto) {
        String codigoDeBarras = geraCodigoDeBarrasPara(boleto);

        StringBuilder bloco1 = new StringBuilder();
        bloco1.append(getNumeroFormatado());
        bloco1.append(String.valueOf(boleto.getCodEspecieMoeda()));
        bloco1.append(codigoDeBarras.substring(19, 24));
        bloco1.append(dvGenerator.geraDVLinhaDigitavel(bloco1.toString()));

        StringBuilder bloco2 = new StringBuilder();
        bloco2.append(codigoDeBarras.substring(24, 34));
        bloco2.append(dvGenerator.geraDVLinhaDigitavel(bloco2.toString()));

        StringBuilder bloco3 = new StringBuilder();
        bloco3.append(codigoDeBarras.substring(34, 44));
        bloco3.append(dvGenerator.geraDVLinhaDigitavel(bloco3.toString()));

        StringBuilder bloco4 = new StringBuilder();
        bloco4.append(codigoDeBarras.charAt(4));
        bloco4.append(codigoDeBarras.substring(5, 9));
        bloco4.append(boleto.getValorFormatado());

        StringBuilder linhaDigitavel = new StringBuilder();
        linhaDigitavel.append(bloco1);
        linhaDigitavel.append(bloco2);
        linhaDigitavel.append(bloco3);
        linhaDigitavel.append(bloco4);

        linhaDigitavel = linhaDigitavelFormater(linhaDigitavel);

        return linhaDigitavel.toString();
    }

    private StringBuilder linhaDigitavelFormater(StringBuilder linhaDigitavel) {
        linhaDigitavel.insert(5, '.');
        linhaDigitavel.insert(11, "  ");
        linhaDigitavel.insert(18, '.');
        linhaDigitavel.insert(25, "  ");
        linhaDigitavel.insert(32, '.');
        linhaDigitavel.insert(39, "  ");
        linhaDigitavel.insert(42, "  ");

        return linhaDigitavel;
    }

    public String getNumeroFormatado() {
        return NUMERO_BRADESCO;
    }

    public java.net.URL getImage() {
        return getClass().getResource(
                String.format("/br/com/caelum/stella/boleto/img/%s.png",
                        getNumeroFormatado()));
    }

    public String getNumConvenioDoEmissorFormatado(Emissor emissor) {
        return String.format("%07d", emissor.getNumConvenio());
    }

    public String getContaCorrenteDoEmissorFormatado(Emissor emissor) {
        return String.format("%07d", emissor.getContaCorrente());
    }

    public String getCarteiraDoEmissorFormatado(Emissor emissor) {
        return String.format("%02d", emissor.getCarteira());
    }

    public String getNossoNumeroDoEmissorFormatado(Emissor emissor) {
        return String.format("%011d", emissor.getNossoNumero());
    }

}
TOP

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

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.