Subversion Repositories Integrator Subversion

Rev

Rev 380 | Rev 393 | Go to most recent revision | 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
                }
392 espaco 102
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_BRADESCO.getValor())) {
103
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
104
                        getDadosExtratoBancoDTO().addAll(extrairDadosBradesco(extratosAnexadosAnteriormente));
105
                }
106
                if (getTipoExtratoBancarioCsv().equals(TipoExtratoBancarioCsv.EXTRATO_BANCARIO_CSV_NUBANK.getValor())) {
107
                        setDadosExtratoBancoDTO(new ArrayList<ExtratoBancoDTO>());
108
                        getDadosExtratoBancoDTO().addAll(extrairDadosNubank(extratosAnexadosAnteriormente));
109
                }
379 espaco 110
        }
111
 
380 espaco 112
        private List<ExtratoBancoDTO> extrairDadosItau(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
379 espaco 113
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
380 espaco 114
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
379 espaco 115
                for (String linha : this.getLinhasArquivo()) {
116
                        String[] dadosSeparados = linha.split(";");
117
                        if (dadosSeparados.length > 0) {
118
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
119
                                        if (dadosSeparados[0].contains("/")) {
120
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
121
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
122
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
123
                                                extratoBancoDTO.setIndicadorCadastrar(false);
124
                                                if (dadosSeparados.length >= 3) {
125
                                                        extratoBancoDTO.setDescricao(dadosSeparados[1]);
126
                                                        Double valor = 0.0;
127
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[2])) {
128
                                                                valor = new Double(dadosSeparados[2].replace(".", "").replace(",", ".") );
129
                                                        }
130
                                                        extratoBancoDTO.setValorTotal(valor);
131
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
132
                                                        if (extratoBancoDTO.getDescricao().contains("DB")) {
133
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.DEBITOS.getValor());
134
                                                } else if (extratoBancoDTO.getDescricao().contains("CD") ||
135
                                                                   extratoBancoDTO.getDescricao().contains("REDE  EL ") ||
136
                                                                   extratoBancoDTO.getDescricao().contains("REDE  MC ") ||
137
                                                                   extratoBancoDTO.getDescricao().contains("REDE  VS ") ||
138
                                                                   extratoBancoDTO.getDescricao().contains("REDE  HC ") ||
139
                                                                   extratoBancoDTO.getDescricao().contains("REDE  AM ")) {
140
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.CREDITOS.getValor());
141
                                                } else if (extratoBancoDTO.getDescricao().contains("TRANSF") ||
142
                                                                   extratoBancoDTO.getDescricao().contains("PIX QRS")) {
143
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
144
                                                } else if (extratoBancoDTO.getDescricao().contains("APLIC AUT")) {
145
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());       
146
                                                } else if (!extratoBancoDTO.getDescricao().contains("SALDO PARCIAL")) {
147
                                                        if (VerificadorUtil.naoEstaNulo(valor)) {
148
                                                                if (valor < 0.0) {
149
                                                                        extratoBancoDTO.setValorTotal(valor * -1);
150
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
151
                                                                }
152
                                                        }
153
                                                }
392 espaco 154
                                                        if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
155
                                                                extratoBancoDTO.setIndicadorCadastrar(true);
156
                                                        } else {
157
                                                                extratosExtraidosSemCategoria.add(extratoBancoDTO);
158
                                                        }
159
                                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
160
                                                                extratoBancoDTO.setIndicadorCadastrar(false);
161
                                                        }
162
                                                        extratosExtraidos.add(extratoBancoDTO);
379 espaco 163
                                                }
392 espaco 164
                                        }
165
                                }
166
                        }
167
                }
168
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
169
                return extratosExtraidos;
170
        }
171
 
172
        private List<ExtratoBancoDTO> extrairDadosBradesco(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
173
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
174
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
175
                for (String linha : this.getLinhasArquivo()) {
176
                        String[] dadosSeparados = linha.split(";");
177
                        if (dadosSeparados.length > 0) {
178
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
179
                                        if (dadosSeparados[0].contains("/")) {
180
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
181
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
182
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
183
                                                extratoBancoDTO.setIndicadorCadastrar(false);
184
                                                if (dadosSeparados.length >= 4) {
185
                                                        extratoBancoDTO.setDescricao(dadosSeparados[1]);
186
                                                        Double valor = 0.0;
187
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[3])) {
188
                                                                valor = new Double(dadosSeparados[3].replace(".", "").replace(",", "."));
189
                                                        } else if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[4])) {
190
                                                                valor = new Double(dadosSeparados[4].replace(".", "").replace(",", "."));
191
                                                        }
192
                                                        extratoBancoDTO.setValorTotal(valor);
193
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
194
                                                        if (extratoBancoDTO.getDescricao().contains("DEBITO REDECARD\"")) {
195
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.DEBITOS.getValor());
196
                                                } else if (extratoBancoDTO.getDescricao().contains("CRED REDECARD") ||
197
                                                        extratoBancoDTO.getDescricao().contains("CREDITO REDECARD") ||
198
                                                        extratoBancoDTO.getDescricao().contains("AMEX REDECARD") ||
199
                                                        extratoBancoDTO.getDescricao().contains("RECEBIMENTO FORNECEDOR") ||
200
                                                        extratoBancoDTO.getDescricao().contains("ANTECIPACAO REDECARD") ||
201
                                                        extratoBancoDTO.getDescricao().contains("REDE ATECIPACAO")) {
202
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.CREDITOS.getValor());
203
                                                } else if (extratoBancoDTO.getDescricao().contains("TRANSFERENCIA PIX")) {
204
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
205
//                                              } else if (extratoBancoDTO.getDescricao().contains("")) {
206
//                                                      extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.OUTROS.getValor());        
207
                                                } else if (!extratoBancoDTO.getDescricao().contains("RESGATE INVEST FACIL") &&
208
                                                        !extratoBancoDTO.getDescricao().contains("APLIC.INVEST FACIL") &&
209
                                                        !extratoBancoDTO.getDescricao().contains("APLICACAO AUTOMATICA") &&
210
                                                        !extratoBancoDTO.getDescricao().contains("BAIXA AUTOMATICA FUNDOS")) {
211
                                                        if (VerificadorUtil.naoEstaNulo(valor)) {
212
                                                                if (valor < 0.0) {
213
                                                                        extratoBancoDTO.setValorTotal(valor * -1);
214
                                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
215
                                                                }
216
                                                        }
217
                                                }
218
                                                        if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
219
                                                                extratoBancoDTO.setIndicadorCadastrar(true);
220
                                                        } else {
221
                                                                extratosExtraidosSemCategoria.add(extratoBancoDTO);
222
                                                        }
223
                                                        if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
224
                                                                extratoBancoDTO.setIndicadorCadastrar(false);
225
                                                        }
226
                                                        extratosExtraidos.add(extratoBancoDTO);
379 espaco 227
                                                }
392 espaco 228
                                        }
229
                                }
230
                        }
231
                }
232
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
233
                return extratosExtraidos;
234
        }
235
 
236
        private List<ExtratoBancoDTO> extrairDadosNubank(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente) {
237
                List<ExtratoBancoDTO> extratosExtraidos = new ArrayList<ExtratoBancoDTO>();
238
                List<ExtratoBancoDTO> extratosExtraidosSemCategoria = new ArrayList<ExtratoBancoDTO>();
239
                for (String linha : this.getLinhasArquivo()) {
240
                        String[] dadosSeparados = linha.split(",");
241
                        if (dadosSeparados.length > 0) {
242
                                if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[0])) {
243
                                        if (dadosSeparados[0].contains("/")) {
244
                                                ExtratoBancoDTO extratoBancoDTO = new ExtratoBancoDTO();
245
                                                extratoBancoDTO.setContaBancariaDTO(this.getContaBancariaDTO());
246
                                                extratoBancoDTO.setDataLancamento(DataUtil.retornarDataApartirString("dd/MM/yyyy", dadosSeparados[0]));
247
                                                extratoBancoDTO.setIndicadorCadastrar(false);
248
                                                if (dadosSeparados.length >= 4) {
249
                                                        extratoBancoDTO.setDescricao(dadosSeparados[3]);
250
                                                        Double valor = 0.0;
251
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(dadosSeparados[1])) {
252
                                                                valor = new Double(dadosSeparados[1]);
253
                                                        }
254
                                                        extratoBancoDTO.setValorTotal(valor);
255
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.SEM_CATEGORIA.getValor());
256
                                                if (extratoBancoDTO.getDescricao().contains("recebida pelo Pix") ||
257
                                                        extratoBancoDTO.getDescricao().contains("ncia Recebida")) {
258
                                                        extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.TRANSFERENCIAS.getValor());
259
                                                } else if (VerificadorUtil.naoEstaNulo(valor)) {
260
                                                        if (valor < 0.0) {
261
                                                                extratoBancoDTO.setValorTotal(valor * -1);
262
                                                                extratoBancoDTO.setTipoExtratoBanco(TipoExtratoBanco.PAGAMENTO.getValor());
263
                                                        }
264
                                                }
265
                                                if (!extratoBancoDTO.getTipoExtratoBanco().equals(TipoExtratoBanco.SEM_CATEGORIA.getValor())) {
266
                                                        extratoBancoDTO.setIndicadorCadastrar(true);
267
                                                } else {
268
                                                        extratosExtraidosSemCategoria.add(extratoBancoDTO);
269
                                                }
270
                                                if (!dadoExtratoBancarioEhNovo(extratosAnexadosAnteriormente, extratoBancoDTO)) {
271
                                                        extratoBancoDTO.setIndicadorCadastrar(false);
272
                                                }
273
                                                extratosExtraidos.add(extratoBancoDTO);
380 espaco 274
                                                }
379 espaco 275
                                        }
276
                                }
277
                        }
278
                }
380 espaco 279
                setDadosExtratoBancoSemCategoriaDTO(extratosExtraidosSemCategoria);
379 espaco 280
                return extratosExtraidos;
281
        }
282
 
380 espaco 283
        private Boolean dadoExtratoBancarioEhNovo(List<ExtratoBancarioArquivoDTO> extratosAnexadosAnteriormente, ExtratoBancoDTO extratoBancoNovoDTO) {
284
                List<ExtratoBancoDTO> extratosAnexados = new ArrayList<ExtratoBancoDTO>();
285
                for (ExtratoBancarioArquivoDTO extratoBancarioArquivoDTO : extratosAnexadosAnteriormente) {
286
                        if (extratoBancarioArquivoDTO.getContaBancariaDTO().getSequencial().equals(extratoBancoNovoDTO.getContaBancariaDTO().getSequencial())) {
287
                                extratosAnexados.addAll(extratoBancarioArquivoDTO.getDadosExtratoBancoDTO());
288
                                break;
289
                        }
290
                }
291
                for (ExtratoBancoDTO extratoBancoDTO : extratosAnexados) {
292
                        if (DataUtils.datasIguais(extratoBancoDTO.getDataLancamento(), extratoBancoNovoDTO.getDataLancamento()) &&
293
                                extratoBancoDTO.getDescricao().equals(extratoBancoNovoDTO.getDescricao()) &&
294
                                extratoBancoDTO.getValorTotal().equals(extratoBancoNovoDTO.getValorTotal())) {
295
                                return false;
296
                        }
297
                }
298
                return true;
299
        }
300
 
301
        public void marcarTodosDadosExtrato() {
379 espaco 302
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
303
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
380 espaco 304
                                extratoBancoDTO.setIndicadorCadastrar(true);
379 espaco 305
                        }
306
                }
307
        }
308
 
380 espaco 309
        public void desmarcarTodosDadosExtrato() {
310
                if (VerificadorUtil.naoEstaNuloOuVazio(getDadosExtratoBancoDTO())) {
311
                        for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
312
                                extratoBancoDTO.setIndicadorCadastrar(false);
313
                        }
314
                }
315
        }
316
 
296 espaco 317
}