Subversion Repositories Integrator Subversion

Rev

Rev 678 | Rev 730 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.httpclient.util.DateUtil;
import org.primefaces.model.file.UploadedFile;

import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.web.util.DataUtil;

public class ExtratoAntecipacaoArquivoDTO {
       
        private Date dataRecebimento;
        private ContaBancariaDTO contaBancariaDTO;
        private UploadedFile arquivoAntecipacao;
        private List<String> linhasArquivo;
        private String sqlConsultaParcelas;
        private String sqlAtualizacaoParcelas;
       
        private List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTO;
        private List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTOConciliados;
        private List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTOSemConciliacao;
       
        public ExtratoAntecipacaoArquivoDTO() {
                this.dadosExtratoAntecipacaoDTO = new ArrayList<ExtratoAntecipacaoDTO>();
        }
       
        public ExtratoAntecipacaoArquivoDTO(UploadedFile arquivoAntecipacao) {
                super();
                this.arquivoAntecipacao = arquivoAntecipacao;
        }
       
        public Date getDataRecebimento() {
                return dataRecebimento;
        }
        public void setDataRecebimento(Date dataRecebimento) {
                this.dataRecebimento = dataRecebimento;
        }
       
        public ContaBancariaDTO getContaBancariaDTO() {
                return contaBancariaDTO;
        }
        public void setContaBancariaDTO(ContaBancariaDTO contaBancariaDTO) {
                this.contaBancariaDTO = contaBancariaDTO;
        }

        public UploadedFile getArquivoAntecipacao() {
                return arquivoAntecipacao;
        }
        public void setArquivoAntecipacao(UploadedFile arquivoAntecipacao) {
                this.arquivoAntecipacao = arquivoAntecipacao;
        }
       
        public List<String> getLinhasArquivo() {
                return linhasArquivo;
        }
        public void setLinhasArquivo(List<String> linhasArquivo) {
                this.linhasArquivo = linhasArquivo;
        }
       
        public String getSqlConsultaParcelas() {
                return sqlConsultaParcelas;
        }
        public void setSqlConsultaParcelas(String sqlConsultaParcelas) {
                this.sqlConsultaParcelas = sqlConsultaParcelas;
        }
       
        public String getSqlAtualizacaoParcelas() {
                return sqlAtualizacaoParcelas;
        }
        public void setSqlAtualizacaoParcelas(String sqlAtualizacaoParcelas) {
                this.sqlAtualizacaoParcelas = sqlAtualizacaoParcelas;
        }
       
        public List<ExtratoAntecipacaoDTO> getDadosExtratoAntecipacaoDTO() {
                return dadosExtratoAntecipacaoDTO;
        }
        public void setDadosExtratoAntecipacaoDTO(List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTO) {
                this.dadosExtratoAntecipacaoDTO = dadosExtratoAntecipacaoDTO;
        }
       
        public List<ExtratoAntecipacaoDTO> getDadosExtratoAntecipacaoDTOConciliados() {
                return dadosExtratoAntecipacaoDTOConciliados;
        }
        public void setDadosExtratoAntecipacaoDTOConciliados(List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTOConciliados) {
                this.dadosExtratoAntecipacaoDTOConciliados = dadosExtratoAntecipacaoDTOConciliados;
        }
       
        public List<ExtratoAntecipacaoDTO> getDadosExtratoAntecipacaoDTOSemConciliacao() {
                return dadosExtratoAntecipacaoDTOSemConciliacao;
        }
        public void setDadosExtratoAntecipacaoDTOSemConciliacao(List<ExtratoAntecipacaoDTO> dadosExtratoAntecipacaoDTOSemConciliacao) {
                this.dadosExtratoAntecipacaoDTOSemConciliacao = dadosExtratoAntecipacaoDTOSemConciliacao;
        }
       
        /**************************************/
       
        public Double valorTotalConciliado() {
                Double valorTotal = 0.0;
                if  (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoAntecipacaoDTOConciliados())) {
                        for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : getDadosExtratoAntecipacaoDTOConciliados()) {
                                valorTotal += extratoAntecipacaoDTO.getValorLiquido();
                        }
                }
                return valorTotal;
        }
       
        public Double valorTotalNaoConciliado() {
                Double valorTotal = 0.0;
                if  (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoAntecipacaoDTOSemConciliacao())) {
                        for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : getDadosExtratoAntecipacaoDTOSemConciliacao()) {
                                valorTotal += extratoAntecipacaoDTO.getValorLiquido();
                        }
                }
                return valorTotal;
        }
       
        /**************************************/
       
        /*
        public Boolean todoExtratoConciliado() {
                if (!VerificadorUtil.isListaNulaOuVazia(getDadosExtratoBancoDTO())) {
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
                                if (!extratoBancoDTO.getIndicadorConciliado()) {
                                        return false;
                                }
                        }
                }
                return true;
        }
        */

       
        public void extrairDadosArquivo() {
                List<ExtratoAntecipacaoDTO> extratoAntecipacaoDTOs = new ArrayList<ExtratoAntecipacaoDTO>();
//                      setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
//                      getDadosExtratoBancoDTO().addAll(extrairDadosItau(extratosAnexadosAnteriormente));
                Long sequencial = new Long(1);
                for (String linha : this.getLinhasArquivo()) {
//                      10/10/2024;29/08/2024;29/05/2025;R$ 60,00;R$ 60,00;2,30%;R$ 1,38;R$ 58,62;Livre;100,0000%;21769086;-;-;0548980;93849763;ESPACO CASE;81704828;546479******1520;não;-;Crédito;Mastercard;10;9;ITAÚ UNIBANCO S.A.;7951;998611;-;-;antecipada
//                      10/10/2024;05/08/2024;05/06/2025;R$ 41,50;R$ 41,50;2,30%;R$ 0,95;R$ 40,55;Livre;100,0000%;32994398;-;-;0086277;62449554;ESPACO CASE;81704828;485464******4098;não;-;Crédito;Visa;10;10;ITAÚ UNIBANCO S.A.;7951;998611;-;-;antecipada
//                      System.out.println(linha);
                        String[] dadosSeparados = linha.split(";");
                        if (dadosSeparados.length >= 29) {
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[2])) {
                                        if (dadosSeparados[29].contains("antecipada")) {
                                                ExtratoAntecipacaoDTO extratoAntecipacaoDTO = new ExtratoAntecipacaoDTO();
                                                extratoAntecipacaoDTO.setSequencial(sequencial);
                                                sequencial++;
                                                extratoAntecipacaoDTO.setDataRecebimento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
                                                extratoAntecipacaoDTO.setDataVenda(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[1]));
                                                extratoAntecipacaoDTO.setDataVencimento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[2]));
                                                Double valor = 0.0;
                                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[7])) {
                                                        String valorLinha = dadosSeparados[7].replace("R$", "").trim();
                                                        valor = new Double(valorLinha.replace(".", "").replace(",", "."));
                                                }
                                                String bandeira = StringUtil.setarUpperCaseComTrim(dadosSeparados[21]);
                                                if (bandeira.equals("AMEX")) {
                                                        bandeira = "AMERICAN EXPRESS";
                                                }
                                                extratoAntecipacaoDTO.setBandeira(bandeira);
                                                extratoAntecipacaoDTO.setValorLiquido(valor);
                                                extratoAntecipacaoDTO.setQuantidadeParcelas(new Integer(dadosSeparados[22]));
                                                extratoAntecipacaoDTO.setNumeroDaParcela(new Integer(dadosSeparados[23]));
                                                extratoAntecipacaoDTOs.add(extratoAntecipacaoDTO);
//                                              [20] Débito ou Crédito
//                                              [21] Elo, Hipercard, Mastercard, Visa...
//                                              [22] Qnt de parcelas
//                                              [23] Número da parcela
//                                              [29] antecipada 758
                                        }
                                }
                        }
                }
               
                /*
                StringBuilder sqlConsulta = new StringBuilder();
                sqlConsulta.append("SELECT * FROM sc_sec.sec_parcela ");
                sqlConsulta.append("WHERE dat_pagamento IS NULL AND (");
                for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : extratoAntecipacaoDTOs) {
//                      System.out.println(extratoAntecipacaoDTO.getSequencial() + " : " + extratoAntecipacaoDTO.getDataVencimento() + " : " + extratoAntecipacaoDTO.getValorLiquido() + " : " + extratoAntecipacaoDTO.getBandeira() + " : " + extratoAntecipacaoDTO.getNumeroDaParcela() + "/" + extratoAntecipacaoDTO.getQuantidadeParcelas());
                        Double valorInicial = extratoAntecipacaoDTO.getValorLiquido() - 0.10;
                        Double valorFinal = extratoAntecipacaoDTO.getValorLiquido() + 0.10;
                        sqlConsulta.append("(dat_vencimento = '" + DateUtil.formatDate(extratoAntecipacaoDTO.getDataVencimento(), "yyyy-MM-dd") + "' AND ");
                        sqlConsulta.append("val_valor >= " + valorInicial + " AND val_valor <= " + valorFinal + " AND ");
                        sqlConsulta.append("dsc_observacao LIKE 'CRÉDITO " + extratoAntecipacaoDTO.getNumeroDaParcela() + "/" + extratoAntecipacaoDTO.getQuantidadeParcelas() + "%" + extratoAntecipacaoDTO.getBandeira() + "%') ");
                        sqlConsulta.append("OR ");
                }
                sqlConsulta.append(")");
//              System.out.println(sqlConsulta.toString().replace("OR )", ")"));
                setSqlConsultaParcelas(sqlConsulta.toString().replace("OR )", ")"));
                */

               
                /*
                StringBuilder sqlConsulta = new StringBuilder();
                sqlConsulta.append("SELECT * FROM Parcela p");
                sqlConsulta.append("WHERE p.dataPagamento IS NULL AND (");
                for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : extratoAntecipacaoDTOs) {
//                      System.out.println(extratoAntecipacaoDTO.getSequencial() + " : " + extratoAntecipacaoDTO.getDataVencimento() + " : " + extratoAntecipacaoDTO.getValorLiquido() + " : " + extratoAntecipacaoDTO.getBandeira() + " : " + extratoAntecipacaoDTO.getNumeroDaParcela() + "/" + extratoAntecipacaoDTO.getQuantidadeParcelas());
                        Double valorInicial = extratoAntecipacaoDTO.getValorLiquido() - 0.10;
                        Double valorFinal = extratoAntecipacaoDTO.getValorLiquido() + 0.10;
                        sqlConsulta.append("(p.dataVencimento = '" + DateUtil.formatDate(extratoAntecipacaoDTO.getDataVencimento(), "yyyy-MM-dd") + "' AND ");
                        sqlConsulta.append("p.valor >= " + valorInicial + " AND p.valor <= " + valorFinal + " AND ");
                        sqlConsulta.append("p.observacao LIKE 'CRÉDITO " + extratoAntecipacaoDTO.getNumeroDaParcela() + "/" + extratoAntecipacaoDTO.getQuantidadeParcelas() + "%" + extratoAntecipacaoDTO.getBandeira() + "%') ");
                        sqlConsulta.append("OR ");
                }
                sqlConsulta.append(")");
                System.out.println(sqlConsulta.toString().replace("OR )", ")"));
                */

               
                StringBuilder sqlConsulta = new StringBuilder();
                sqlConsulta.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
                sqlConsulta.append(ParcelaDTO.CONSULTA_SEM_CATEGORIA_DTO);
                sqlConsulta.append(") FROM Parcela e ");
                sqlConsulta.append("WHERE e.indicadorAtivo IS TRUE AND e.dataPagamento IS NULL AND (");
                for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : extratoAntecipacaoDTOs) {
                        Double valorInicial = extratoAntecipacaoDTO.getValorLiquido() - 0.10;
                        Double valorFinal = extratoAntecipacaoDTO.getValorLiquido() + 0.10;
                        sqlConsulta.append("(e.dataVencimento = '" + DateUtil.formatDate(extratoAntecipacaoDTO.getDataVencimento(), "yyyy-MM-dd") + "' AND ");
                        sqlConsulta.append("e.valor >= " + valorInicial + " AND e.valor <= " + valorFinal + " AND ");
                        sqlConsulta.append("e.observacao LIKE 'CRÉDITO " + extratoAntecipacaoDTO.getNumeroDaParcela() + "/" + extratoAntecipacaoDTO.getQuantidadeParcelas() + "%" + extratoAntecipacaoDTO.getBandeira() + "%') ");
                        sqlConsulta.append("OR ");
                }
                sqlConsulta.append(")");
//              System.out.println(sqlConsulta.toString().replace("OR )", ")"));
               
                setDadosExtratoAntecipacaoDTOSemConciliacao(extratoAntecipacaoDTOs);
                setSqlConsultaParcelas(sqlConsulta.toString().replace("OR )", ")"));
        }
       
        public void extrairDados(List<ExtratoAntecipacaoArquivoDTO> extratosAnexadosAnteriormente) {
//              if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_ITAU.getValor())) {
//                      setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
//                      getDadosExtratoBancoDTO().addAll(extrairDadosItau(extratosAnexadosAnteriormente));
//              }
        }
       
        public static void main(String[] args) {
                String valor = "SISPAG PAG TIT BANCO 00";
                System.out.println(!valor.contains("SISPAG PAG"));
        }
       
        /*
        private Boolean dadoExtratoBancarioEhNovo(List<AntecipacaoArquivoDTO> extratosAnexadosAnteriormente, ExtratoBancoDTO extratoBancoNovoDTO) {
                List<ExtratoBancoDTO> extratosAnexados = new ArrayList<ExtratoBancoDTO>();
                for (AntecipacaoArquivoDTO extratoBancarioArquivoDTO : extratosAnexadosAnteriormente) {
                        if (extratoBancarioArquivoDTO.getContaBancariaDTO().getSequencial().equals(extratoBancoNovoDTO.getContaBancariaDTO().getSequencial())) {
                                extratosAnexados.addAll(extratoBancarioArquivoDTO.getDadosExtratoBancoDTO());
                                break;
                        }
                }
                for (ExtratoBancoDTO extratoBancoDTO : extratosAnexados) {
                        if (DataUtils.datasIguais(extratoBancoDTO.getDataLancamento(), extratoBancoNovoDTO.getDataLancamento()) &&
                                extratoBancoDTO.getDescricao().equals(extratoBancoNovoDTO.getDescricao()) &&
                                extratoBancoDTO.getValorTotal().equals(extratoBancoNovoDTO.getValorTotal())) {
                                return false;
                        }
                }
                return true;
        }
       
        public void marcarTodosDadosExtrato() {
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
                                extratoBancoDTO.setIndicadorCadastrar(true);
                        }
                }
        }
       
        public void desmarcarTodosDadosExtrato() {
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
                                extratoBancoDTO.setIndicadorCadastrar(false);
                        }
                }
        }
        */

}