Subversion Repositories Integrator Subversion

Rev

Rev 729 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
296 espaco 1
package br.com.ec.domain.dto;
2
 
379 espaco 3
import java.util.ArrayList;
296 espaco 4
import java.util.List;
5
 
6
import org.primefaces.model.file.UploadedFile;
7
 
380 espaco 8
import br.com.ec.core.util.DataUtils;
379 espaco 9
import br.com.ec.core.util.VerificadorUtil;
392 espaco 10
import br.com.ec.domain.model.tipos.TipoConciliacao;
296 espaco 11
import br.com.ec.domain.model.tipos.TipoExtratoBancarioCsv;
379 espaco 12
import br.com.ec.domain.model.tipos.TipoExtratoBanco;
13
import br.com.ec.web.util.DataUtil;
296 espaco 14
 
15
public class ExtratoBancarioArquivoDTO {
16
 
17
        private ContaBancariaDTO contaBancariaDTO;
18
        private String tipoExtratoBancarioCsv;
19
        private UploadedFile arquivoExtratoBancario;
20
        private List<String> linhasArquivo;
21
 
377 espaco 22
        private List<ExtratoBancoDTO> dadosExtratoBancoDTO;
380 espaco 23
        private List<ExtratoBancoDTO> dadosExtratoBancoSemCategoriaDTO;
377 espaco 24
 
379 espaco 25
        public ExtratoBancarioArquivoDTO() {
26
                this.dadosExtratoBancoDTO = new ArrayList<ExtratoBancoDTO>();
380 espaco 27
                this.dadosExtratoBancoSemCategoriaDTO = new ArrayList<ExtratoBancoDTO>();
379 espaco 28
        }
296 espaco 29
 
30
        public ExtratoBancarioArquivoDTO(String tipoExtratoBancarioCsv, UploadedFile arquivoExtratoBancario) {
31
                super();
32
                this.tipoExtratoBancarioCsv = tipoExtratoBancarioCsv;
33
                this.arquivoExtratoBancario = arquivoExtratoBancario;
34
        }
35
 
36
        public ContaBancariaDTO getContaBancariaDTO() {
37
                return contaBancariaDTO;
38
        }
39
        public void setContaBancariaDTO(ContaBancariaDTO contaBancariaDTO) {
40
                this.contaBancariaDTO = contaBancariaDTO;
41
        }
42
 
43
        public String getTipoExtratoBancarioCsv() {
44
                return tipoExtratoBancarioCsv;
45
        }
46
        public void setTipoExtratoBancarioCsv(String tipoExtratoBancarioCsv) {
47
                this.tipoExtratoBancarioCsv = tipoExtratoBancarioCsv;
48
        }
49
        public String getDescricaoTipoExtratoBancarioCsv() {
379 espaco 50
                if (VerificadorUtil.naoEstaNuloOuVazio(getTipoExtratoBancarioCsv())) {
51
                        return TipoExtratoBancarioCsv.parse(getTipoExtratoBancarioCsv()).getDescricao();
52
                }
53
                return "";
296 espaco 54
        }
55
 
56
        public UploadedFile getArquivoExtratoBancario() {
57
                return arquivoExtratoBancario;
58
        }
59
        public void setArquivoExtratoBancario(UploadedFile arquivoExtratoBancario) {
60
                this.arquivoExtratoBancario = arquivoExtratoBancario;
61
        }
62
 
63
        public List<String> getLinhasArquivo() {
64
                return linhasArquivo;
65
        }
66
        public void setLinhasArquivo(List<String> linhasArquivo) {
67
                this.linhasArquivo = linhasArquivo;
68
        }
69
 
377 espaco 70
        public List<ExtratoBancoDTO> getDadosExtratoBancoDTO() {
71
                return dadosExtratoBancoDTO;
72
        }
73
        public void setDadosExtratoBancoDTO(List<ExtratoBancoDTO> dadosExtratoBancoDTO) {
74
                this.dadosExtratoBancoDTO = dadosExtratoBancoDTO;
75
        }
76
 
380 espaco 77
        public List<ExtratoBancoDTO> getDadosExtratoBancoSemCategoriaDTO() {
78
                return dadosExtratoBancoSemCategoriaDTO;
79
        }
80
        public void setDadosExtratoBancoSemCategoriaDTO(List<ExtratoBancoDTO> dadosExtratoBancoSemCategoriaDTO) {
81
                this.dadosExtratoBancoSemCategoriaDTO = dadosExtratoBancoSemCategoriaDTO;
82
        }
83
 
379 espaco 84
        /**************************************/
85
 
86
        public Boolean todoExtratoConciliado() {
87
                if (!VerificadorUtil.isListaNulaOuVazia(getDadosExtratoBancoDTO())) {
88
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
89
                                if (!extratoBancoDTO.getIndicadorConciliado()) {
90
                                        return false;
91
                                }
92
                        }
93
                }
94
                return true;
95
        }
96
 
380 espaco 97
        public void extrairDados(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
379 espaco 98
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_ITAU.getValor())) {
99
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
380 espaco 100
                        getDadosExtratoBancoDTO().addAll(extrairDadosItau(extratosAnexadosAnteriormente));
379 espaco 101
                }
396 espaco 102
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_ITAU_PAGAMENTOS.getValor())) {
103
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
104
                        getDadosExtratoBancoDTO().addAll(extrairDadosItauPagamentos(extratosAnexadosAnteriormente));
105
                }
392 espaco 106
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_BRADESCO.getValor())) {
107
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
108
                        getDadosExtratoBancoDTO().addAll(extrairDadosBradesco(extratosAnexadosAnteriormente));
109
                }
110
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_NUBANK.getValor())) {
111
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
112
                        getDadosExtratoBancoDTO().addAll(extrairDadosNubank(extratosAnexadosAnteriormente));
113
                }
399 espaco 114
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_BNB.getValor())) {
115
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
116
                        getDadosExtratoBancoDTO().addAll(extrairDadosBnb(extratosAnexadosAnteriormente));
117
                }
728 blopes 118
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_INTER.getValor())) {
719 blopes 119
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
728 blopes 120
                        getDadosExtratoBancoDTO().addAll(extrairDadosInter(extratosAnexadosAnteriormente));
719 blopes 121
                }
379 espaco 122
        }
123
 
462 blopes 124
        public static void main(String[] args) {
125
                String valor = "SISPAG PAG TIT BANCO 00";
126
                System.out.println(!valor.contains("SISPAG PAG"));
127
        }
128
 
129
 
380 espaco 130
        private List<ExtratoBancoDTO> extrairDadosItau(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
379 espaco 131
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
380 espaco 132
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
379 espaco 133
                for (String linha : this.getLinhasArquivo()) {
134
                        String[] dadosSeparados = linha.split(";");
135
                        if (dadosSeparados.length > 0) {
136
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
137
                                        if (dadosSeparados[0].contains("/")) {
138
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
139
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
140
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
141
                                                extratoBancoDTO.setIndicadorCadastrar(false);
142
                                                if (dadosSeparados.length >= 3) {
143
                                                        extratoBancoDTO.setDescricao(dadosSeparados[1]);
144
                                                        Double valor = 0.0;
145
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[2])) {
146
                                                                valor = new Double(dadosSeparados[2].replace(".", "").replace(",", ".") );
147
                                                        }
148
                                                        extratoBancoDTO.setValorTotal(valor);
149
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
741 blopes 150
                                                        if (verificarSeEhDebitoItau(extratoBancoDTO.getDescricao())) {
379 espaco 151
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.DEBITOS.getValor());
741 blopes 152
                                                } else if (verificarSeEhCreditoItau(extratoBancoDTO.getDescricao())) {
379 espaco 153
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.CREDITOS.getValor());
741 blopes 154
                                                } else if (verificarSeEhTransferenciaEntreContasItau(extratoBancoDTO.getDescricao())) {
399 espaco 155
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
741 blopes 156
                                                } else if (verificarSeEhTransferenciaItau(extratoBancoDTO.getDescricao())) {
379 espaco 157
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
456 blopes 158
                                                } else if (extratoBancoDTO.getDescricao().contains("REND PAGO APLIC AUT")) {
379 espaco 159
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());       
403 espaco 160
                                                } else if ((!extratoBancoDTO.getDescricao().contains("SALDO PARCIAL") &&
456 blopes 161
                                                                   !extratoBancoDTO.getDescricao().contains("SALDO FINAL") &&
399 espaco 162
                                                                   !extratoBancoDTO.getDescricao().contains("TRANSF 7951.24318-2") &&
163
                                                                   !extratoBancoDTO.getDescricao().contains("TRANSF 7951.99861-1") &&
403 espaco 164
                                                                   !extratoBancoDTO.getDescricao().contains("SISPAG TRIBUTOS") &&
456 blopes 165
                                                                   !extratoBancoDTO.getDescricao().contains("SISPAG FORNECEDORES") &&
166
                                                                   !extratoBancoDTO.getDescricao().contains("SISPAG PAG") &&
462 blopes 167
                                                                   !extratoBancoDTO.getDescricao().contains("SISPAG  PAG") &&
456 blopes 168
                                                                   !extratoBancoDTO.getDescricao().contains("RES APLIC AUT") &&
462 blopes 169
                                                                   !extratoBancoDTO.getDescricao().contains("APL APLIC AUT") &&
715 blopes 170
                                                                   !extratoBancoDTO.getDescricao().contains("TBI") &&
462 blopes 171
                                                                   !extratoBancoDTO.getDescricao().contains("SISPAG CONSOLIDADO")) ||
403 espaco 172
                                                                   (extratoBancoDTO.getDescricao().contains("SISPAG SALARIOS"))) {
379 espaco 173
                                                        if (VerificadorUtil.naoEstaNulo(valor)) {
174
                                                                if (valor < 0.0) {
175
                                                                        extratoBancoDTO.setValorTotal(valor * -1);
176
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
403 espaco 177
                                                                } else {
178
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());
379 espaco 179
                                                                }
180
                                                        }
181
                                                }
392 espaco 182
                                                        if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
183
                                                                extratoBancoDTO.setIndicadorCadastrar(true);
184
                                                        } else {
185
                                                                extratosExtraidosSemCategoria.add(extratoBancoDTO);
186
                                                        }
187
                                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
188
                                                                extratoBancoDTO.setIndicadorCadastrar(false);
189
                                                        }
190
                                                        extratosExtraidos.add(extratoBancoDTO);
379 espaco 191
                                                }
392 espaco 192
                                        }
193
                                }
194
                        }
195
                }
196
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
197
                return extratosExtraidos;
198
        }
199
 
741 blopes 200
        private Boolean verificarSeEhDebitoItau(String linha) {
201
                return linha.contains("DB");
202
        }
203
 
204
        private Boolean verificarSeEhCreditoItau(String linha) {
205
                return linha.contains("CD") ||
206
                           linha.contains("REDE  EL ") ||
207
                           linha.contains("REDE  MC ") ||
208
                           linha.contains("REDE  VS ") ||
209
                           linha.contains("REDE  HC ") ||
210
                           linha.contains("REDE  AM ") ||
211
                           linha.contains("AT00");
212
        }
213
 
214
        private Boolean verificarSeEhTransferenciaEntreContasItau(String linha) {
215
                return (linha.contains("TRANSF ESPACO") || linha.contains("TRANSF  ESPACO") || linha.contains("PIX RECEBIDO ESPACO"));
216
        }
217
 
218
        private Boolean verificarSeEhTransferenciaItau(String linha) {
219
                return (linha.contains("TRANSF") || linha.contains("PIX QR")) &&
220
                                !linha.contains("TRANSF 7951.24318-2") &&
221
                                !linha.contains("TRANSF 7951.99861-1") &&
222
                                !linha.contains("TRANSF ESPACO");
223
        }
224
 
396 espaco 225
        private List<ExtratoBancoDTO> extrairDadosItauPagamentos(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
226
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
227
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
228
                for (String linha : this.getLinhasArquivo()) {
229
                        String[] dadosSeparados = linha.split(";");
230
                        if (dadosSeparados.length > 4) {
231
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
232
                                        if (dadosSeparados[4].contains("/")) {
233
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
234
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
235
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[4]));
236
                                                extratoBancoDTO.setIndicadorCadastrar(false);
237
                                                if (dadosSeparados.length >= 7) {
399 espaco 238
                                                        StringBuilder descricao = new StringBuilder(dadosSeparados[2]);
239
                                                        descricao.append(" (");
240
                                                        descricao.append(dadosSeparados[0]);
241
                                                        descricao.append(" : ");
242
                                                        descricao.append(dadosSeparados[1]);
243
                                                        descricao.append(") ");
244
                                                        descricao.append(dadosSeparados[3]);
245
                                                        extratoBancoDTO.setDescricao(descricao.toString().replace("(- : -)", "").replace(" : -)", ")"));
396 espaco 246
                                                        Double valor = 0.0;
247
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[5])) {
248
                                                                valor = new Double(dadosSeparados[5].replace(".", "").replace(",", ".") );
249
                                                        }
407 espaco 250
                                                        if (valor < 0.0) {
251
                                                                valor = valor * -1;
252
                                                        }
396 espaco 253
                                                        extratoBancoDTO.setValorTotal(valor);
254
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
255
                                                        if (extratoBancoDTO.getDescricao().contains("PIX") &&
399 espaco 256
                                                                extratoBancoDTO.getDescricao().contains("21.494.821")) {
462 blopes 257
                                                                if (valor > 0.0) {
456 blopes 258
                                                                        valor = valor * -1;
259
                                                                }
407 espaco 260
                                                                extratoBancoDTO.setValorTotal(valor);
396 espaco 261
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
262
                                                } else if (!extratoBancoDTO.getDescricao().contains("SALDO PARCIAL")) {
263
                                                        if (VerificadorUtil.naoEstaNulo(valor)) {
407 espaco 264
                                                                extratoBancoDTO.setValorTotal(valor);
396 espaco 265
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
266
                                                        }
267
                                                }
462 blopes 268
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[6])) {
269
                                                                if (!dadosSeparados[6].equals("Efetuado")) {
270
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
271
                                                                }
272
                                                        }
396 espaco 273
                                                        if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
274
                                                                extratoBancoDTO.setIndicadorCadastrar(true);
275
                                                        } else {
276
                                                                extratosExtraidosSemCategoria.add(extratoBancoDTO);
277
                                                        }
278
                                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
279
                                                                extratoBancoDTO.setIndicadorCadastrar(false);
280
                                                        }
281
                                                        extratosExtraidos.add(extratoBancoDTO);
282
                                                }
283
                                        }
284
                                }
285
                        }
286
                }
287
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
288
                return extratosExtraidos;
289
        }
290
 
392 espaco 291
        private List<ExtratoBancoDTO> extrairDadosBradesco(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
292
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
293
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
294
                for (String linha : this.getLinhasArquivo()) {
295
                        String[] dadosSeparados = linha.split(";");
296
                        if (dadosSeparados.length > 0) {
297
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
298
                                        if (dadosSeparados[0].contains("/")) {
299
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
300
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
301
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
302
                                                extratoBancoDTO.setIndicadorCadastrar(false);
303
                                                if (dadosSeparados.length >= 4) {
304
                                                        extratoBancoDTO.setDescricao(dadosSeparados[1]);
305
                                                        Double valor = 0.0;
306
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[3])) {
307
                                                                valor = new Double(dadosSeparados[3].replace(".", "").replace(",", "."));
308
                                                        } else if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[4])) {
309
                                                                valor = new Double(dadosSeparados[4].replace(".", "").replace(",", "."));
310
                                                        }
311
                                                        extratoBancoDTO.setValorTotal(valor);
312
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
719 blopes 313
                                                        if (verificarSeEhDebitoBradesco(extratoBancoDTO.getDescricao())) {
392 espaco 314
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.DEBITOS.getValor());
719 blopes 315
                                                } else if (verificarSeEhCreditoBradesco(extratoBancoDTO.getDescricao())) {
392 espaco 316
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.CREDITOS.getValor());
719 blopes 317
                                                } else if (verificarSeEhTransferenciaEntreContasBradesco(extratoBancoDTO.getDescricao())) {
396 espaco 318
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
719 blopes 319
                                                } else if (verificarSeEhTransferenciaBradesco(extratoBancoDTO.getDescricao())) {
392 espaco 320
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
321
                                                } else if (!extratoBancoDTO.getDescricao().contains("RESGATE INVEST FACIL") &&
322
                                                        !extratoBancoDTO.getDescricao().contains("APLIC.INVEST FACIL") &&
323
                                                        !extratoBancoDTO.getDescricao().contains("APLICACAO AUTOMATICA") &&
456 blopes 324
                                                        !extratoBancoDTO.getDescricao().contains("BAIXA AUTOMATICA FUNDOS") &&
325
                                                        !extratoBancoDTO.getDescricao().contains("SALDO ANTERIOR")) {
392 espaco 326
                                                        if (VerificadorUtil.naoEstaNulo(valor)) {
327
                                                                if (valor < 0.0) {
399 espaco 328
                                                                        extratoBancoDTO.setValorTotal(valor);
392 espaco 329
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
403 espaco 330
                                                                } else {
331
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());
392 espaco 332
                                                                }
333
                                                        }
334
                                                }
335
                                                        if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
336
                                                                extratoBancoDTO.setIndicadorCadastrar(true);
337
                                                        } else {
338
                                                                extratosExtraidosSemCategoria.add(extratoBancoDTO);
339
                                                        }
340
                                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
341
                                                                extratoBancoDTO.setIndicadorCadastrar(false);
342
                                                        }
343
                                                        extratosExtraidos.add(extratoBancoDTO);
379 espaco 344
                                                }
392 espaco 345
                                        }
346
                                }
347
                        }
348
                }
349
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
350
                return extratosExtraidos;
351
        }
352
 
719 blopes 353
        private Boolean verificarSeEhDebitoBradesco(String linha) {
354
                return linha.contains("DEBITO REDECARD\"") || linha.contains("CARTAO VISA ELECTRON") || linha.contains("VDA DEBITO");
355
        }
356
 
357
        private Boolean verificarSeEhCreditoBradesco(String linha) {
358
                return linha.contains("CRED REDECARD") ||
359
                                linha.contains("CREDITO REDECARD") ||
360
                        linha.contains("AMEX REDECARD") ||
361
                        linha.contains("RECEBIMENTO FORNECEDOR") ||
362
                        linha.contains("ANTECIPACAO REDECARD") ||
363
                        linha.contains("REDE ATECIPACAO") ||
364
                        linha.contains("CIELO MASTER") ||
365
                        linha.contains("CIELO VISA") ||
366
                        linha.contains("VDA CREDITO") ||
367
                        linha.contains("HIPERCARD ANTECIPACAO") ||
368
                        linha.contains("CIELO ANTECIPACAO");
369
        }
370
 
371
        private Boolean verificarSeEhTransferenciaEntreContasBradesco(String linha) {
721 blopes 372
                return (linha.contains("TRANSFERENCIA PIX") && linha.contains("21.494.821")) ||
373
                                (linha.contains("TRANSFERENCIA PIX DES") && linha.contains("ESPACO CASE"));
719 blopes 374
        }
375
 
376
        private Boolean verificarSeEhTransferenciaBradesco(String linha) {
721 blopes 377
                return linha.contains("TRANSFERENCIA PIX") && !linha.contains("21.494.821") && !linha.contains("PIX DES");
719 blopes 378
        }
379
 
392 espaco 380
        private List<ExtratoBancoDTO> extrairDadosNubank(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
381
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
382
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
383
                for (String linha : this.getLinhasArquivo()) {
384
                        String[] dadosSeparados = linha.split(",");
385
                        if (dadosSeparados.length > 0) {
386
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
387
                                        if (dadosSeparados[0].contains("/")) {
388
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
389
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
390
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
391
                                                extratoBancoDTO.setIndicadorCadastrar(false);
392
                                                if (dadosSeparados.length >= 4) {
393
                                                        extratoBancoDTO.setDescricao(dadosSeparados[3]);
394
                                                        Double valor = 0.0;
395
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[1])) {
396
                                                                valor = new Double(dadosSeparados[1]);
397
                                                        }
398
                                                        extratoBancoDTO.setValorTotal(valor);
399
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
399 espaco 400
                                                        if (extratoBancoDTO.getDescricao().contains("TRANSFER") &&
401
                                                                extratoBancoDTO.getDescricao().contains("21.494.821")) {
402
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
403
                                                        } else if (extratoBancoDTO.getDescricao().contains("RECEBIDA PELO PIX") ||
393 espaco 404
                                                        extratoBancoDTO.getDescricao().contains("NCIA RECEBIDA")) {
392 espaco 405
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
406
                                                } else if (VerificadorUtil.naoEstaNulo(valor)) {
407
                                                        if (valor < 0.0) {
399 espaco 408
                                                                extratoBancoDTO.setValorTotal(valor);
392 espaco 409
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
403 espaco 410
                                                        } else {
411
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());
392 espaco 412
                                                        }
413
                                                }
414
                                                if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
415
                                                        extratoBancoDTO.setIndicadorCadastrar(true);
416
                                                } else {
417
                                                        extratosExtraidosSemCategoria.add(extratoBancoDTO);
418
                                                }
419
                                                if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
420
                                                        extratoBancoDTO.setIndicadorCadastrar(false);
421
                                                }
422
                                                extratosExtraidos.add(extratoBancoDTO);
380 espaco 423
                                                }
379 espaco 424
                                        }
425
                                }
426
                        }
427
                }
380 espaco 428
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
379 espaco 429
                return extratosExtraidos;
430
        }
431
 
399 espaco 432
        private List<ExtratoBancoDTO> extrairDadosBnb(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
433
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
434
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
435
                for (String linha : this.getLinhasArquivo()) {
436
                        String[] dadosSeparados = linha.split(";");
437
                        if (dadosSeparados.length > 0) {
438
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
439
                                        if (dadosSeparados[0].contains("31")) {
440
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
441
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
623 blopes 442
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[3].replace("\"", "")));
399 espaco 443
                                                extratoBancoDTO.setIndicadorCadastrar(false);
444
                                                if (dadosSeparados.length >= 8) {
623 blopes 445
                                                        extratoBancoDTO.setDescricao(dadosSeparados[5].replace("\"", ""));
399 espaco 446
                                                        Double valor = 0.0;
623 blopes 447
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[8].replace("\"", ""))) {
448
                                                                String valorParaAjustes = dadosSeparados[8].replace("\"", "");
449
                                                                valorParaAjustes = valorParaAjustes.replace(" ", "").replace(".", "").replace(",", ".");
450
                                                                valor = new Double(valorParaAjustes);
399 espaco 451
                                                        }
452
                                                        extratoBancoDTO.setValorTotal(valor);
453
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
454
                                                        if (extratoBancoDTO.getDescricao().contains("VIA PIX") &&
455
                                                                extratoBancoDTO.getDescricao().contains("ESPACO CASE")) {
456
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
457
                                                        } else if (extratoBancoDTO.getDescricao().contains("VIA PIX")) {
458
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
459
                                                } else if (VerificadorUtil.naoEstaNulo(valor)) {
460
                                                        if (valor < 0.0) {
461
                                                                extratoBancoDTO.setValorTotal(valor);
462
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
463
                                                        }
464
                                                }
465
                                                if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
466
                                                        extratoBancoDTO.setIndicadorCadastrar(true);
467
                                                } else {
468
                                                        extratosExtraidosSemCategoria.add(extratoBancoDTO);
469
                                                }
470
                                                if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
471
                                                        extratoBancoDTO.setIndicadorCadastrar(false);
472
                                                }
473
                                                extratosExtraidos.add(extratoBancoDTO);
474
                                                }
475
                                        }
476
                                }
477
                        }
478
                }
479
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
480
                return extratosExtraidos;
481
        }
482
 
728 blopes 483
        private List<ExtratoBancoDTO> extrairDadosInter(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
719 blopes 484
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
485
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
486
                for (String linha : this.getLinhasArquivo()) {
487
                        String[] dadosSeparados = linha.split(";");
728 blopes 488
                        if (dadosSeparados.length > 3) {
719 blopes 489
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
728 blopes 490
                                        if (dadosSeparados[0].contains("/")) {
719 blopes 491
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
492
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
728 blopes 493
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
719 blopes 494
                                                extratoBancoDTO.setIndicadorCadastrar(false);
728 blopes 495
                                                if (dadosSeparados.length >= 4) {
496
                                                        extratoBancoDTO.setDescricao(dadosSeparados[1] + " - " + dadosSeparados[2]);
719 blopes 497
                                                        Double valor = 0.0;
728 blopes 498
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[3])) {
499
                                                                valor = new Double(dadosSeparados[3].replace(".", "").replace(",", "."));
719 blopes 500
                                                        }
501
                                                        extratoBancoDTO.setValorTotal(valor);
502
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
728 blopes 503
 
729 blopes 504
                                                        if (extratoBancoDTO.getDescricao().contains("DÉBITO")) {
728 blopes 505
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.DEBITOS.getValor());
729 blopes 506
                                                } else if (extratoBancoDTO.getDescricao().contains("ANTECIPAÇÃO")) {
728 blopes 507
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.CREDITOS.getValor());
729 blopes 508
                                                } else if (extratoBancoDTO.getDescricao().contains("PIX") && extratoBancoDTO.getDescricao().contains("ESPACO CASE")) {
728 blopes 509
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS_ENTRE_CONTAS.getValor());
729 blopes 510
                                                } else if (extratoBancoDTO.getDescricao().contains("PIX RECEBIDO")) {
719 blopes 511
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
728 blopes 512
                                                } else {
719 blopes 513
                                                        if (valor < 0.0) {
514
                                                                extratoBancoDTO.setValorTotal(valor);
515
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
728 blopes 516
                                                        } else {
517
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());
719 blopes 518
                                                        }
728 blopes 519
                                                }
520
                                        }
521
                                                if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
522
                                                        extratoBancoDTO.setIndicadorCadastrar(true);
523
                                                } else {
524
                                                        extratosExtraidosSemCategoria.add(extratoBancoDTO);
719 blopes 525
                                                }
728 blopes 526
                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
527
                                                extratoBancoDTO.setIndicadorCadastrar(false);
528
                                        }
529
                                        extratosExtraidos.add(extratoBancoDTO);
719 blopes 530
                                        }
531
                                }
532
                        }
533
                }
534
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
535
                return extratosExtraidos;
536
        }
537
 
380 espaco 538
        private Boolean dadoExtratoBancarioEhNovo(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente, ExtratoBancoDTO extratoBancoNovoDTO) {
539
                List<ExtratoBancoDTO> extratosAnexados = new ArrayList<ExtratoBancoDTO>();
540
                for (ExtratoBancarioArquivoDTO extratoBancarioArquivoDTO : extratosAnexadosAnteriormente) {
541
                        if (extratoBancarioArquivoDTO.getContaBancariaDTO().getSequencial().equals(extratoBancoNovoDTO.getContaBancariaDTO().getSequencial())) {
542
                                extratosAnexados.addAll(extratoBancarioArquivoDTO.getDadosExtratoBancoDTO());
543
                                break;
544
                        }
545
                }
546
                for (ExtratoBancoDTO extratoBancoDTO : extratosAnexados) {
547
                        if (DataUtils.datasIguais(extratoBancoDTO.getDataLancamento(), extratoBancoNovoDTO.getDataLancamento()) &&
548
                                extratoBancoDTO.getDescricao().equals(extratoBancoNovoDTO.getDescricao()) &&
549
                                extratoBancoDTO.getValorTotal().equals(extratoBancoNovoDTO.getValorTotal())) {
550
                                return false;
551
                        }
552
                }
553
                return true;
554
        }
555
 
556
        public void marcarTodosDadosExtrato() {
379 espaco 557
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
558
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
380 espaco 559
                                extratoBancoDTO.setIndicadorCadastrar(true);
379 espaco 560
                        }
561
                }
562
        }
563
 
380 espaco 564
        public void desmarcarTodosDadosExtrato() {
565
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
566
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
567
                                extratoBancoDTO.setIndicadorCadastrar(false);
568
                        }
569
                }
570
        }
571
 
296 espaco 572
}