Subversion Repositories Integrator Subversion

Rev

Rev 106 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.apache.commons.lang.time.DateUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import org.springframework.context.annotation.Scope;

import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.CartaoBandeiraDTO;
import br.com.ec.domain.dto.CartaoDTO;
import br.com.ec.domain.dto.CartaoDataDTO;
import br.com.ec.domain.dto.CartaoResumoDTO;
import br.com.ec.domain.model.FormaPagamento;
import br.com.ec.domain.model.Maquineta;
import br.com.ec.domain.model.VendaFormaPagamento;
import br.com.ec.domain.model.tipos.TipoCartao;
import br.com.ec.domain.service.bandeiracartao.BandeiraCartaoService;
import br.com.ec.domain.service.formapagamento.FormaPagamentoService;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.com.ec.domain.service.vendaformapagamento.VendaFormaPagamentoService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.domain.shared.Ordenador;
import br.com.ec.domain.shared.OrdenadorImpl;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
import br.com.ec.web.util.DataUtil;

@Named
@Scope("view")
public class CartoesGerenciadorBean_old extends AbstractBean<CartaoDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private ParcelaService parcelaService;
        private VendaFormaPagamentoService vendaFormaPagamentoService;
        private BandeiraCartaoService bandeiraCartaoService;
        private FormaPagamentoService formaPagamentoService;
       
        private List<CartaoDTO> cartoes;
        private List<CartaoDTO> cartoesGerados;
        private CartaoResumoDTO cartaoResumo;
       
        private Date dataVendas;
        private Date dataVendasSelecionada;
        private List<VendaFormaPagamento> listaVendaFormaPagamento;
        private List<CartaoDataDTO> listaDatas;
       
        private Double valorTotalBrutoCartoes;
        private Double valorTotalBrutoCartoesDebito;
        private Double valorTotalBrutoCartoesCredito1x;
        private Double valorTotalBrutoCartoesCreditoParcelado;
       
        private Double valorTotalBrutoImportadoCartoes;
        private Double valorTotalBrutoImportadoCartoesDebito;
        private Double valorTotalBrutoImportadoCartoesCredito1x;
        private Double valorTotalBrutoImportadoCartoesCreditoParcelado;
       
        private Double valorTotalLiquidoCartoesGerados;
        private Double valorTotalLiquidoCartoesGeradosDebito;
        private Double valorTotalLiquidoCartoesGeradosCredito1x;
        private Double valorTotalLiquidoCartoesGeradosCreditoParcelado;
       
        private List<Maquineta> maquinetasSelecionadas;
        private String tipoArquivoSelecionado = ConstantesSEC.ArquivoBanco.ARQUIVO_BANCO_REDE_1;
       
        private List<String> linhas;
        private UploadedFile arquivoParaUpload;
        private Ordenador ordenador;
       
        @Inject
        public CartoesGerenciadorBean_old(ParcelaService parcelaService, VendaFormaPagamentoService vendaFormaPagamentoService,
                        BandeiraCartaoService bandeiraCartaoService, FormaPagamentoService formaPagamentoService) {
                this.parcelaService = parcelaService;
                this.vendaFormaPagamentoService = vendaFormaPagamentoService;
                this.bandeiraCartaoService = bandeiraCartaoService;
                this.formaPagamentoService = formaPagamentoService;
                this.ordenador = new OrdenadorImpl();
        }      
       
        @Override
        public void preCarregamento() {
                setDataVendas(DataUtils.getDataAtual());
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new CartaoDTO());
                setCartoes(null);
                setCartoesGerados(null);
                setCartaoResumo(null);
                setValorTotalBrutoCartoes(new Double(0.0));
                setValorTotalBrutoCartoesDebito(new Double(0.0));
                setValorTotalBrutoCartoesCredito1x(new Double(0.0));
                setValorTotalBrutoCartoesCreditoParcelado(new Double(0.0));
                setValorTotalBrutoImportadoCartoes(new Double(0.0));
                setValorTotalBrutoImportadoCartoesDebito(new Double(0.0));
                setValorTotalBrutoImportadoCartoesCredito1x(new Double(0.0));
                setValorTotalBrutoImportadoCartoesCreditoParcelado(new Double(0.0));
                setValorTotalLiquidoCartoesGerados(new Double(0.0));
                setValorTotalLiquidoCartoesGeradosDebito(new Double(0.0));
                setValorTotalLiquidoCartoesGeradosCredito1x(new Double(0.0));
                setValorTotalLiquidoCartoesGeradosCreditoParcelado(new Double(0.0));
        }

        @Override
        public GenericService<CartaoDTO> getService() {
                return null;
        }
       
        @Override
        public CartaoDTO getEntidade() {
                return entidade;
        }

        @Override
        public CartaoDTO getId() {
                return getEntidade();
        }
       
        public List<CartaoDTO> getCartoes() {
                return cartoes;
        }
        public void setCartoes(List<CartaoDTO> cartoes) {
                this.cartoes = cartoes;
        }
       
        public List<CartaoDTO> getCartoesGerados() {
                return cartoesGerados;
        }
        public void setCartoesGerados(List<CartaoDTO> cartoesGerados) {
                this.cartoesGerados = cartoesGerados;
        }
       
        public CartaoResumoDTO getCartaoResumo() {
                return cartaoResumo;
        }
        public void setCartaoResumo(CartaoResumoDTO cartaoResumo) {
                this.cartaoResumo = cartaoResumo;
        }
       
        public Date getDataVendas() {
                return dataVendas;
        }
        public void setDataVendas(Date dataVendas) {
                this.dataVendas = dataVendas;
        }
       
        public Date getDataVendasSelecionada() {
                return dataVendasSelecionada;
        }
        public void setDataVendasSelecionada(Date dataVendasSelecionada) {
                this.dataVendasSelecionada = dataVendasSelecionada;
        }
       
        public List<VendaFormaPagamento> getListaVendaFormaPagamento() {
                return listaVendaFormaPagamento;
        }
        public void setListaVendaFormaPagamento(List<VendaFormaPagamento> listaVendaFormaPagamento) {
                this.listaVendaFormaPagamento = listaVendaFormaPagamento;
        }
       
        public List<CartaoDataDTO> getListaDatas() {
                return listaDatas;
        }
        public void setListaDatas(List<CartaoDataDTO> listaDatas) {
                this.listaDatas = listaDatas;
        }
       
        public Double getValorTotalBrutoCartoes() {
                return valorTotalBrutoCartoes;
        }
        public void setValorTotalBrutoCartoes(Double valorTotalBrutoCartoes) {
                this.valorTotalBrutoCartoes = valorTotalBrutoCartoes;
        }
       
        public Double getValorTotalBrutoCartoesDebito() {
                return valorTotalBrutoCartoesDebito;
        }
        public void setValorTotalBrutoCartoesDebito(Double valorTotalBrutoCartoesDebito) {
                this.valorTotalBrutoCartoesDebito = valorTotalBrutoCartoesDebito;
        }
       
        public Double getValorTotalBrutoCartoesCredito() {
                return getValorTotalBrutoCartoesCredito1x() + getValorTotalBrutoCartoesCreditoParcelado();
        }
       
        public Double getValorTotalBrutoImportadoCartoesCredito() {
                return getValorTotalBrutoImportadoCartoesCredito1x() + getValorTotalBrutoImportadoCartoesCreditoParcelado();
        }
       
        public String getCorValoresConciliadosCartoesCredito() {
                return getValorTotalBrutoCartoesCredito().equals(getValorTotalBrutoImportadoCartoesCredito())? "green" : "red";
        }
       
        public Double getValorTotalBrutoCartoesCredito1x() {
                return valorTotalBrutoCartoesCredito1x;
        }
        public void setValorTotalBrutoCartoesCredito1x(Double valorTotalBrutoCartoesCredito1x) {
                this.valorTotalBrutoCartoesCredito1x = valorTotalBrutoCartoesCredito1x;
        }
       
        public Double getValorTotalBrutoCartoesCreditoParcelado() {
                return valorTotalBrutoCartoesCreditoParcelado;
        }
        public void setValorTotalBrutoCartoesCreditoParcelado(Double valorTotalBrutoCartoesCreditoParcelado) {
                this.valorTotalBrutoCartoesCreditoParcelado = valorTotalBrutoCartoesCreditoParcelado;
        }
       
        public Double getValorTotalBrutoImportadoCartoes() {
                return valorTotalBrutoImportadoCartoes;
        }
        public void setValorTotalBrutoImportadoCartoes(Double valorTotalBrutoImportadoCartoes) {
                this.valorTotalBrutoImportadoCartoes = valorTotalBrutoImportadoCartoes;
        }
       
        public Double getValorTotalBrutoImportadoCartoesDebito() {
                return valorTotalBrutoImportadoCartoesDebito;
        }
        public void setValorTotalBrutoImportadoCartoesDebito(Double valorTotalBrutoImportadoCartoesDebito) {
                this.valorTotalBrutoImportadoCartoesDebito = valorTotalBrutoImportadoCartoesDebito;
        }
       
        public String getCorValoresConciliadosCartoesDebito() {
                return getValorTotalBrutoCartoesDebito().equals(getValorTotalBrutoImportadoCartoesDebito())? "green" : "red";
        }
       
        public Double getValorTotalBrutoImportadoCartoesCredito1x() {
                return valorTotalBrutoImportadoCartoesCredito1x;
        }
        public void setValorTotalBrutoImportadoCartoesCredito1x(Double valorTotalBrutoImportadoCartoesCredito1x) {
                this.valorTotalBrutoImportadoCartoesCredito1x = valorTotalBrutoImportadoCartoesCredito1x;
        }
       
        public String getCorValoresConciliadosCartoesCredito1x() {
                return getValorTotalBrutoCartoesCredito1x().equals(getValorTotalBrutoImportadoCartoesCredito1x())? "green" : "red";
        }
       
        public Double getValorTotalBrutoImportadoCartoesCreditoParcelado() {
                return valorTotalBrutoImportadoCartoesCreditoParcelado;
        }
        public void setValorTotalBrutoImportadoCartoesCreditoParcelado(Double valorTotalBrutoImportadoCartoesCreditoParcelado) {
                this.valorTotalBrutoImportadoCartoesCreditoParcelado = valorTotalBrutoImportadoCartoesCreditoParcelado;
        }
       
        public String getCorValoresConciliadosCartoesCreditoParcelado() {
                return getValorTotalBrutoCartoesCreditoParcelado().equals(getValorTotalBrutoImportadoCartoesCreditoParcelado())? "green" : "red";
        }
       
        public void somarValoresBruto(Double valor, FormaPagamento formaDePagamento) {
                valorTotalBrutoCartoes = valorTotalBrutoCartoes + valor;
                if (formaDePagamento.formaPagamentoEhDebito()) {
                        valorTotalBrutoCartoesDebito = valorTotalBrutoCartoesDebito + valor;
                }
                if (formaDePagamento.formaPagamentoEhCredito()) {
                        if (formaDePagamento.formaPagamentoEh1x()) {
                                valorTotalBrutoCartoesCredito1x = valorTotalBrutoCartoesCredito1x + valor;
                        } else {
                                valorTotalBrutoCartoesCreditoParcelado = valorTotalBrutoCartoesCreditoParcelado + valor;
                        }
                }
        }
       
        public void somarValoresBrutoImportado(Double valor, FormaPagamento formaDePagamento) {
                valorTotalBrutoImportadoCartoes = valorTotalBrutoImportadoCartoes + valor;
                if (formaDePagamento.formaPagamentoEhDebito()) {
                        valorTotalBrutoImportadoCartoesDebito = valorTotalBrutoImportadoCartoesDebito + valor;
                }
                if (formaDePagamento.formaPagamentoEhCredito()) {
                        if (formaDePagamento.formaPagamentoEh1x()) {
                                valorTotalBrutoImportadoCartoesCredito1x = valorTotalBrutoImportadoCartoesCredito1x + valor;
                        } else {
                                valorTotalBrutoImportadoCartoesCreditoParcelado = valorTotalBrutoImportadoCartoesCreditoParcelado + valor;
                        }
                }
        }
       
        public Double getValorTotalLiquidoCartoesGerados() {
                return valorTotalLiquidoCartoesGerados;
        }
        public void setValorTotalLiquidoCartoesGerados(Double valorTotalLiquidoCartoesGerados) {
                this.valorTotalLiquidoCartoesGerados = valorTotalLiquidoCartoesGerados;
        }
       
        public Double getValorTotalLiquidoCartoesGeradosDebito() {
                return valorTotalLiquidoCartoesGeradosDebito;
        }
        public void setValorTotalLiquidoCartoesGeradosDebito(Double valorTotalLiquidoCartoesGeradosDebito) {
                this.valorTotalLiquidoCartoesGeradosDebito = valorTotalLiquidoCartoesGeradosDebito;
        }
       
        public Double getValorTotalLiquidoCartoesGeradosCredito() {
                return getValorTotalLiquidoCartoesGeradosCredito1x() + getValorTotalLiquidoCartoesGeradosCreditoParcelado();
        }
       
        public Double getValorTotalLiquidoCartoesGeradosCredito1x() {
                return valorTotalLiquidoCartoesGeradosCredito1x;
        }
        public void setValorTotalLiquidoCartoesGeradosCredito1x(Double valorTotalLiquidoCartoesGeradosCredito1x) {
                this.valorTotalLiquidoCartoesGeradosCredito1x = valorTotalLiquidoCartoesGeradosCredito1x;
        }
       
        public Double getValorTotalLiquidoCartoesGeradosCreditoParcelado() {
                return valorTotalLiquidoCartoesGeradosCreditoParcelado;
        }
        public void setValorTotalLiquidoCartoesGeradosCreditoParcelado(Double valorTotalLiquidoCartoesGeradosCreditoParcelado) {
                this.valorTotalLiquidoCartoesGeradosCreditoParcelado = valorTotalLiquidoCartoesGeradosCreditoParcelado;
        }
       
        public List<Maquineta> getMaquinetasSelecionadas() {
                return maquinetasSelecionadas;
        }
        public void setMaquinetasSelecionadas(List<Maquineta> maquinetasSelecionadas) {
                this.maquinetasSelecionadas = maquinetasSelecionadas;
        }
        public String maquinetasSelecionadasDescricao() {
                String descricao = "";
                for (Maquineta m : getMaquinetasSelecionadas()) {
                        descricao = descricao + m.getEmpresaAdquirente().getDescricao() + ": " + m.getDescricao() + "; ";
                }
                return descricao;
        }
       
        public String getTipoArquivoSelecionado() {
                return tipoArquivoSelecionado;
        }
        public void setTipoArquivoSelecionado(String tipoArquivoSelecionado) {
                this.tipoArquivoSelecionado = tipoArquivoSelecionado;
        }
       
        public void somarValoresLiquido(List<CartaoDTO> cartoesGerados) {
                for (CartaoDTO cartaoGerado : cartoesGerados) {
                        valorTotalLiquidoCartoesGerados = valorTotalLiquidoCartoesGerados + cartaoGerado.getParcela().getValor();
                        if (VerificadorUtil.naoEstaNulo(cartaoGerado.getFormaDePagamento())) {
                                if (cartaoGerado.getFormaDePagamento().formaPagamentoEhDebito()) {
                                        valorTotalLiquidoCartoesGeradosDebito = valorTotalLiquidoCartoesGeradosDebito + cartaoGerado.getParcela().getValor();
                                }
                                if (cartaoGerado.getFormaDePagamento().formaPagamentoEhCredito()) {
                                        if (cartaoGerado.getFormaDePagamento().formaPagamentoEh1x()) {
                                                valorTotalLiquidoCartoesGeradosCredito1x = valorTotalLiquidoCartoesGeradosCredito1x + cartaoGerado.getParcela().getValor();
                                        } else {
                                                valorTotalLiquidoCartoesGeradosCreditoParcelado = valorTotalLiquidoCartoesGeradosCreditoParcelado + cartaoGerado.getParcela().getValor();
                                        }
                                }
                        }
                }
        }
       
        public List<String> getLinhas() {
                return linhas;
        }
        public void setLinhas(List<String> linhas) {
                this.linhas = linhas;
        }
       
        public UploadedFile getArquivoParaUpload() {
                return arquivoParaUpload;
        }
        public void setArquivoParaUpload(UploadedFile arquivoParaUpload) {
                this.arquivoParaUpload = arquivoParaUpload;
        }
       
        public void atualizarConsultaComArquivo() {
                limparEntidade();
                consultarComArquivo();
        }
       
        public void uploadArquivoCsvRede(final FileUploadEvent e) {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                limparEntidade();
                                BufferedReader reader = null;
                                List<String> linhas = new ArrayList<String>();
                                try {
                                        reader = new BufferedReader(new InputStreamReader(e.getFile().getInputstream()));
                                        String linha = reader.readLine();
                                        cartaoResumo = new CartaoResumoDTO();
                                while ((linha = reader.readLine()) != null) {
                                        linhas.add(linha);
                                }
                                } catch (Exception ex) {
                                        ex.printStackTrace();
                                } finally {
                                        try {
                                                reader.close();
                                        } catch (IOException exc) {
                                                exc.printStackTrace();
                                        }
                                }
                                setLinhas(linhas);
                                consultarComArquivo();
                        }
                });
    }
       
        public void consultarComArquivo() {
                valorTotalBrutoImportadoCartoes = new Double(0.0);
                try {
                        cartaoResumo = new CartaoResumoDTO();
                        if (getTipoArquivoSelecionado().equals(ConstantesSEC.ArquivoBanco.ARQUIVO_BANCO_REDE_1)) {
                                arquivoBancoRede();
                        }
                        if (getTipoArquivoSelecionado().equals(ConstantesSEC.ArquivoBanco.ARQUIVO_BANCO_SAFRA_2)) {
                                arquivoBancoSafra();
                        }
                       
                // PREENCHER COM DADOS DAS VENDAS
                List<VendaFormaPagamento> preLancamentos = new ArrayList<VendaFormaPagamento>();
                        preLancamentos = vendaFormaPagamentoService.consultarLancamentosCartoesNoPeriodo(getDataVendasSelecionada(), getDataVendasSelecionada(), null, getMaquinetasSelecionadas());
                        setListaVendaFormaPagamento(preLancamentos);
                        valorTotalBrutoCartoes = new Double(0.0);
                        for (VendaFormaPagamento vendaFormaPagamento : preLancamentos) {
                                somarValoresBruto(vendaFormaPagamento.getValorPagamento(), vendaFormaPagamento.getFormaPagamento());

                                CartaoBandeiraDTO cartaoFormaDePagamento = new CartaoBandeiraDTO();
                                cartaoFormaDePagamento.setBandeira(vendaFormaPagamento.getBandeiraCartao());
                                cartaoFormaDePagamento.setBruto(vendaFormaPagamento.getValorPagamento());
                                cartaoFormaDePagamento.setFormaPagamento(vendaFormaPagamento.getFormaPagamento());
                                cartaoResumo.adicionarPagamento(cartaoFormaDePagamento);
                        }
                        cartaoResumo.setCartoesPorBandeira((List<CartaoBandeiraDTO>) ordenador.ordenar(cartaoResumo.getCartoesPorBandeira()));
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        cartaoResumo.setCartoesPorBandeira((List<CartaoBandeiraDTO>) ordenador.ordenar(cartaoResumo.getCartoesPorBandeira()));
                }
        }
       
        private void arquivoBancoRede() {
                for (String linha : getLinhas()) {
                String[] dadosSeparados = linha.split(";");
                Date dataLinha = DataUtil.retornarDataApartirString("dd/MM/yyyy hh:mm:ss", dadosSeparados[0] + " " + dadosSeparados[1]);
                if (DataUtils.datasIguais(getDataVendasSelecionada(), dataLinha)) {
                                CartaoDTO cartao = new CartaoDTO();
                                cartao.setBandeira(StringUtil.setarUpperCaseComTrim(dadosSeparados[5]));
                        FormaPagamento formaPagamento = null;
                        String bandeira = StringUtil.setarUpperCaseComTrim(dadosSeparados[4]);
                        String tipoCartao = null;
                        if (bandeira.equals("DÉBITO") || bandeira.equals("DéBITO")) {
                                tipoCartao = TipoCartao.DEBITO.getValor();
                                formaPagamento = new FormaPagamento(ConstantesSEC.FormasDePagamento.FORMAPAGAMENTO_DEBITO);
                                if (cartao.getBandeira().equals("MASTERCARD")) {
                                        cartao.setBandeira("MAESTRO");
                                }
                        } else {
                                tipoCartao = TipoCartao.CREDITO.getValor();
                                String parcelas = dadosSeparados[3];
                                formaPagamento = new FormaPagamento(FormaPagamento.recuperarCodigoDaFormaDePagamento(parcelas));
                        }
                        cartao.setBrutoImportado(new Double(dadosSeparados[2].replace(".", "").replace(",", ".")));
                        preencherDadosArquivo(dataLinha, cartao, formaPagamento, tipoCartao);
                        }
                }
        }
       
        private void arquivoBancoSafra() {
                for (String linha : getLinhas()) {
                String[] dadosSeparados = linha.split(";");
                Date dataLinha = DataUtil.retornarDataApartirString("dd/MM/yyyy hh.mm.ss", dadosSeparados[4] + " " + dadosSeparados[5]);
                if (DataUtils.datasIguais(getDataVendasSelecionada(), dataLinha)) {
                                CartaoDTO cartao = new CartaoDTO();
                                cartao.setBandeira(StringUtil.setarUpperCaseComTrim(dadosSeparados[7]));
                        FormaPagamento formaPagamento = null;
                        String bandeira = StringUtil.setarUpperCaseComTrim(dadosSeparados[9]);
                        String tipoCartao = null;
                        if (bandeira.equals("00")) {
                                tipoCartao = TipoCartao.DEBITO.getValor();
                                formaPagamento = new FormaPagamento(ConstantesSEC.FormasDePagamento.FORMAPAGAMENTO_DEBITO);
                                if (cartao.getBandeira().equals("MASTERCARD")) {
                                        cartao.setBandeira("MAESTRO");
                                }
                        } else {
                                String parcelas = "";
                                if (bandeira.substring(0, 1).equals("0")) {
                                        parcelas = dadosSeparados[9].substring(1);
                                } else {
                                        parcelas = dadosSeparados[9];
                                }
                                tipoCartao = TipoCartao.CREDITO.getValor();
                                formaPagamento = new FormaPagamento(FormaPagamento.recuperarCodigoDaFormaDePagamento(parcelas));
                        }
                        cartao.setBrutoImportado(new Double(dadosSeparados[11].replace(".", "").replace(",", ".")));
                        preencherDadosArquivo(dataLinha, cartao, formaPagamento, tipoCartao);
                        }
                }
        }

        private void preencherDadosArquivo(Date dataLinha, CartaoDTO cartao, FormaPagamento formaPagamento, String tipoCartao) {
                cartao.setFormaDePagamento(formaPagamentoService.consultarPorId(formaPagamento));
                cartao.setDataVenda(dataLinha);
               
                somarValoresBrutoImportado(cartao.getBrutoImportado(), cartao.getFormaDePagamento());
               
                if (VerificadorUtil.naoEstaNulo(cartao.getBandeira())) {
                        if (cartao.getBandeira().equals("AMEX")) {
                                cartao.setBandeira("AMERICAN EXPRESS");
                        }
                        if (cartao.getBandeira().equals("HIPC")) {
                                cartao.setBandeira("HIPERCARD");
                        }
                }
               
                CartaoBandeiraDTO cartaoFormaDePagamento = new CartaoBandeiraDTO();
                cartaoFormaDePagamento.setBandeira(bandeiraCartaoService.consultarBandeiraCartoao(cartao.getBandeira(), tipoCartao));
                if (VerificadorUtil.estaNulo(cartaoFormaDePagamento.getBandeira())) {
                        cartaoFormaDePagamento.setBandeira(bandeiraCartaoService.consultarBandeiraCartoao("OUTROS", tipoCartao));
                }
                cartaoFormaDePagamento.setBrutoImportado(cartao.getBrutoImportado());
                cartaoFormaDePagamento.setFormaPagamento(cartao.getFormaDePagamento());
                cartaoResumo.adicionarPagamentoImportado(cartaoFormaDePagamento);
        }
       
        /*
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\arquivo.csv")));
        String linha = reader.readLine();
       
        List<CartaoDTO> cartoes = new ArrayList<CartaoDTO>();
                CartaoResumoDTO cartaoResumo = new CartaoResumoDTO();
                Double valorTotalBrutoCartoes = new Double(0.0);
        while ((linha = reader.readLine()) != null) {
                String[] dadosSeparados = linha.split(";");
                        CartaoDTO cartao = new CartaoDTO();
                        cartao.setBandeira(StringUtil.setarUpperCaseComTrim(dadosSeparados[5]));
                FormaPagamento formaPagamento = null;
                String bandeira = StringUtil.setarUpperCaseComTrim(dadosSeparados[4]);
                String tipoCartao = null;
                if (bandeira.equals("DÉBITO")) {
                        tipoCartao = TipoCartao.DEBITO.getValor();
                        formaPagamento = new FormaPagamento(ConstantesSEC.FormasDePagamento.FORMAPAGAMENTO_DEBITO);
                } else {
                        tipoCartao = TipoCartao.CREDITO.getValor();
                        String parcelas = dadosSeparados[3];
                        formaPagamento = new FormaPagamento(FormaPagamento.recuperarCodigoDaFormaDePagamento(parcelas));
                }
                cartao.setFormaDePagamento(formaPagamento);
                        cartao.setBruto(new Double(dadosSeparados[2]));
                        cartao.setDataVenda(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
                       
                        cartoes.add(cartao);
//                              somarValoresBruto(vendaFormaPagamento.getValorPagamento(), vendaFormaPagamento.getFormaPagamento());
//                              somarValoresBruto(cartao.getBruto(), cartao.getFormaDePagamento());
                       
                        CartaoBandeiraDTO cartaoFormaDePagamento = new CartaoBandeiraDTO();
                       
                        BandeiraCartao bandeiraCartao = bandeiraCartaoService.consultarBandeiraCartoao(cartao.getBandeira(), tipoCartao);
                        cartaoFormaDePagamento.setBandeira(bandeiraCartao);
                        cartaoFormaDePagamento.setBruto(cartao.getBruto());
                        cartaoFormaDePagamento.setFormaPagamento(cartao.getFormaDePagamento());
                        cartaoResumo.adicionarPagamento(cartaoFormaDePagamento);
                }
        reader.close();
//            System.out.println(Arrays.toString(dadosSeparados));
//            System.out.println("Nome: " + dadosSeparados[0]);
//            System.out.println("País: " + dadosSeparados[1]);
//            System.out.println("Fórum: " + dadosSeparados[2]);
//            System.out.println("--------------------------");
    }
        */

        /***************************************************************/
       
        public void verificarLancamentos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                limparEntidade();
                                List<VendaFormaPagamento> preLancamentos = new ArrayList<VendaFormaPagamento>();
                                preLancamentos = vendaFormaPagamentoService.consultarLancamentosCartoesNoPeriodo(dataVendas, dataVendas, null, getMaquinetasSelecionadas());
                                setListaVendaFormaPagamento(preLancamentos);
                               
                                cartoes = new ArrayList<CartaoDTO>();
                                cartaoResumo = new CartaoResumoDTO();
                                valorTotalBrutoCartoes = new Double(0.0);
                                for (VendaFormaPagamento vendaFormaPagamento : preLancamentos) {
                                        if (VerificadorUtil.estaNulo(vendaFormaPagamento.getCupom())) {
                                                CartaoDTO cartao = new CartaoDTO();
                                                cartao.setBandeira(vendaFormaPagamento.getBandeiraCartao().getDescricao());
                                                cartao.setFormaDePagamento(vendaFormaPagamento.getFormaPagamento());
                                                cartao.setBruto(vendaFormaPagamento.getValorPagamento());
                                                cartao.setDataVenda(vendaFormaPagamento.getVenda().getDataVenda());
                                       
                                                if (parcelaService.verificarPossuiParcelaAberta(vendaFormaPagamento.getVenda())) {
                                                        cartao.setParcelaGerada(true);
                                                        cartao.setGerarParcela(false);
                                                } else {
                                                        cartao.setParcelaGerada(false);
                                                        cartao.setGerarParcela(true);
                                                }
                                                cartao.setVendaFormaPagamento(vendaFormaPagamento);
                                                cartoes.add(cartao);
                                                somarValoresBruto(vendaFormaPagamento.getValorPagamento(), vendaFormaPagamento.getFormaPagamento());
                                               
                                                CartaoBandeiraDTO cartaoFormaDePagamento = new CartaoBandeiraDTO();
                                                cartaoFormaDePagamento.setBandeira(vendaFormaPagamento.getBandeiraCartao());
                                                cartaoFormaDePagamento.setBruto(vendaFormaPagamento.getValorPagamento());
                                                cartaoFormaDePagamento.setFormaPagamento(vendaFormaPagamento.getFormaPagamento());
                                                cartaoResumo.adicionarPagamento(cartaoFormaDePagamento);
                                        }
                                }
                               
                                cartoes = (List<CartaoDTO>) ordenador.ordenar(cartoes);
                                cartaoResumo.setCartoesPorBandeira((List<CartaoBandeiraDTO>) ordenador.ordenar(cartaoResumo.getCartoesPorBandeira()));
                        }
                });
        }
       
        public void consultarLancamentos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                limparEntidade();
                                List<CartaoDTO> cartoesGerados = parcelaService.consultarContasDosCartoes(dataVendas, dataVendas);
                                adicionarDatasGeradas(cartoesGerados);
                                setCartoesGerados(cartoesGerados);
                                somarValoresLiquido(cartoesGerados);
                                LancadorMensagem.lancarSucesso("PARCELAS GERADAS COM SUCESSO");
                        }
                });
        }
       
        public void gerarLancamentos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                listaVendaFormaPagamento = new ArrayList<VendaFormaPagamento>();
                                for (CartaoDTO cartao : cartoes) {
                                        if (cartao.getGerarParcela()) {
                                                listaVendaFormaPagamento.add(cartao.getVendaFormaPagamento());
                                        }
                                }
                                limparEntidade();
                                List<CartaoDTO> cartoesGerados = parcelaService.gerarContasDosCartoes(listaVendaFormaPagamento);
                                adicionarDatasGeradas(cartoesGerados);
                                setCartoesGerados(cartoesGerados);
                                somarValoresLiquido(cartoesGerados);
                                LancadorMensagem.lancarSucesso("PARCELAS GERADAS COM SUCESSO");
                        }

                });
        }
       
        private void adicionarDatasGeradas(List<CartaoDTO> cartoesGerados) {
                listaDatas = new ArrayList<CartaoDataDTO>();
                for (CartaoDTO cartaoGerado : cartoesGerados) {
                        CartaoDataDTO cartaoDataDTO = new CartaoDataDTO();
                        cartaoDataDTO.setDataVenda(DateUtils.truncate(cartaoGerado.getParcela().getDataVencimento(), Calendar.DATE));
                        cartaoDataDTO.setDataNovaVenda(DateUtils.truncate(cartaoGerado.getParcela().getDataVencimento(), Calendar.DATE));
                        boolean adicionar = true;
                        for (CartaoDataDTO dataAdicionada : listaDatas) {
                                if (dataAdicionada.getDataVenda().equals(cartaoDataDTO.getDataVenda())) {
                                        adicionar = false;
                                        break;
                                }
                        }
                        if (adicionar) {
                                listaDatas.add(cartaoDataDTO);
                        }
                }
        }
       
        public void atualizarDatasCartoes() {
                for (CartaoDTO cartaoGerado : getCartoesGerados()) {
                        for (CartaoDataDTO dataAdicionada : getListaDatas()) {
                                Date dataTruncada = DateUtils.truncate(cartaoGerado.getParcela().getDataVencimento(), Calendar.DATE);
                                if (dataAdicionada.getDataVenda().equals(dataTruncada)) {
                                        Date novaData = atualizarParaNovaData(cartaoGerado.getParcela().getDataVencimento(), dataAdicionada.getDataNovaVenda());
                                        cartaoGerado.getParcela().setDataVencimento(novaData);
                                }
                        }
                }
                adicionarDatasGeradas(getCartoesGerados());
                salvarAlteracoesCartoes();
        }
       
        private Date atualizarParaNovaData(Date data, Date novaData) {
            Calendar c = Calendar.getInstance();
            c.setTime(data);
           
            Calendar cal = Calendar.getInstance();
            cal.setTime(novaData);
            c.set(Calendar.DATE, cal.get(Calendar.DATE));
            c.set(Calendar.MONTH, cal.get(Calendar.MONTH));
            c.set(Calendar.YEAR, cal.get(Calendar.YEAR));
            return c.getTime();
        }
       
        public void salvarAlteracoesCartoes() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (CartaoDTO cartao : getCartoesGerados()) {
                                        parcelaService.alterar(cartao.getParcela());
                                }
                                LancadorMensagem.lancarSucesso("PARCELAS ATUALIZADAS COM SUCESSO");
                        }
                });
        }
       
}