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

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

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

import java.net.URL;

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;

public class Itau implements Banco {

    private static final String NUMERO_ITAU = "341";

    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(getCarteiraDoEmissorFormatado(emissor));
        codigoDeBarras.append(getNossoNumeroDoEmissorFormatado(emissor));
        if (emissor.getCarteira() == 126 || emissor.getCarteira() == 131
                || emissor.getCarteira() == 146 || emissor.getCarteira() == 150
                || emissor.getCarteira() == 168) {
            codigoDeBarras
            .append(dvGenerator
                    .geraDVLinhaDigitavel(getCarteiraDoEmissorFormatado(emissor)
                            + getNossoNumeroDoEmissorFormatado(emissor)));
        } else {
            /*
             * codigoDeBarras.append(dvGenerator.geraDVLinhaDigitavel(emissor
             * .getAgenciaFormatado() +
             * getContaCorrenteDoEmissorFormatado(emissor) +
             * getCarteiraDoEmissorFormatado(emissor) +
             * getNossoNumeroDoEmissorFormatado(emissor)));
             */
            codigoDeBarras.append("8");
        }
        codigoDeBarras.append(emissor.getAgenciaFormatado());
        codigoDeBarras.append(getContaCorrenteDoEmissorFormatado(emissor));
        codigoDeBarras.append(emissor.getDvContaCorrente());
        codigoDeBarras.append("000");

        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;
    }

    // TODO ver se está certo
    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 getCarteiraDoEmissorFormatado(Emissor emissor) {
        return String.format("%03d", emissor.getCarteira());
    }

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

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

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

    public String getNumeroFormatado() {
        return NUMERO_ITAU;
    }

}
TOP

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

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.