Subversion Repositories Integrator Subversion

Rev

Rev 382 | Rev 402 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
259 espaco 1
package br.com.ec.repository.jpa;
2
 
282 espaco 3
import java.util.Date;
4
import java.util.List;
5
 
296 espaco 6
import javax.persistence.Query;
282 espaco 7
import javax.persistence.TypedQuery;
8
 
259 espaco 9
import org.springframework.stereotype.Repository;
10
 
296 espaco 11
import br.com.ec.core.consulta.ParametrosConsulta;
282 espaco 12
import br.com.ec.core.util.VerificadorUtil;
296 espaco 13
import br.com.ec.domain.dto.FormaPagamentoDTO;
282 espaco 14
import br.com.ec.domain.dto.ParcelaDTO;
296 espaco 15
import br.com.ec.domain.dto.consulta.ParametrosConsultaLancamentosDTO;
282 espaco 16
import br.com.ec.domain.dto.consulta.ParametrosConsultaParcelasDTO;
383 espaco 17
import br.com.ec.domain.model.FormaPagamento;
259 espaco 18
import br.com.ec.domain.model.Parcela;
19
import br.com.ec.repository.ParcelaRepository;
20
import br.com.ec.repository.SistemaAbstractRepository;
21
 
22
@Repository
23
public class ParcelaRepositoryJpaImpl extends SistemaAbstractRepository<Parcela> implements ParcelaRepository {
24
 
25
        @Override
26
        protected String getColunaOrdenadora() {
27
                return "sequencial";
28
        }
282 espaco 29
 
30
        @Override
31
        public List<ParcelaDTO> consultarParcelas(ParametrosConsultaParcelasDTO parametrosConsultaParcelasDTO) {
32
                StringBuilder sql = new StringBuilder();
319 espaco 33
                sql.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
34
                sql.append(ParcelaDTO.CONSULTA_COMPLETA_DTO);
35
                sql.append(") FROM Parcela e ");
343 espaco 36
                sql.append("WHERE e.indicadorAtivo is true ");
282 espaco 37
                if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getTipoBusca())) {
319 espaco 38
                        sql.append("AND e.conta.tipoConta = :tipoConta ");
282 espaco 39
                }
294 espaco 40
                if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getSequencialCategoria())) {
319 espaco 41
                        sql.append("AND e.conta.categoria.sequencial = :sequencialCategoria ");
294 espaco 42
                }
282 espaco 43
                if (parametrosConsultaParcelasDTO.getPagamentoRealizado()) {
44
                        if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getDataInicial()) &&
45
                                        VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getDataFinal())) {
319 espaco 46
                                sql.append("AND e.dataPagamento is not null ");
47
                                sql.append("AND e.dataPagamento >= :dataInicial AND e.dataPagamento <= :dataFinal ");
282 espaco 48
                        }
49
                }
319 espaco 50
                sql.append("ORDER BY e.dataVencimento ");
282 espaco 51
                try {
52
                        TypedQuery<ParcelaDTO> query = getEntityManager().createQuery(sql.toString(), ParcelaDTO.class);
53
                        if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getTipoBusca())) {
54
                                query.setParameter("tipoConta", parametrosConsultaParcelasDTO.getTipoBusca());
55
                        }
294 espaco 56
                        if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getSequencialCategoria())) {
57
                                query.setParameter("sequencialCategoria", parametrosConsultaParcelasDTO.getSequencialCategoria());
58
                        }
282 espaco 59
                        if (parametrosConsultaParcelasDTO.getPagamentoRealizado()) {
60
                                if (VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getDataInicial()) &&
61
                                                VerificadorUtil.naoEstaNulo(parametrosConsultaParcelasDTO.getDataFinal())) {
62
                                        query.setParameter("dataInicial", parametrosConsultaParcelasDTO.getDataInicial());
63
                                        query.setParameter("dataFinal", parametrosConsultaParcelasDTO.getDataFinal());
64
                                }
65
                        }
66
                        return query.getResultList();
67
                } catch(Exception ex) {
68
                        ex.printStackTrace();
69
                        return null;
70
                }
71
        }
72
 
73
        @Override
382 espaco 74
        public List<ParcelaDTO> consultarParcelas(Long sequencialContaBancaria, Date dataRecebimento, List<FormaPagamentoDTO> formasDePagamento) {
75
                StringBuilder sql = new StringBuilder();
76
                sql.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
77
                sql.append(ParcelaDTO.CONSULTA_SEM_CATEGORIA_DTO);
78
                sql.append(") FROM Parcela e ");
79
                sql.append("WHERE e.contaBancaria.sequencial = :sequencialContaBancaria ");
80
                sql.append("AND e.dataVencimento = :dataVencimento ");
81
                sql.append("AND (e.dataPagamento is null OR e.dataPagamento = :dataVencimento) ");
82
                sql.append(setarParametrosFormasDePagamento("e", formasDePagamento));
83
                sql.append("AND e.indicadorAtivo is true ");
84
                sql.append("ORDER BY e.dataVencimento ");
85
                try {
86
                        return getEntityManager().createQuery(sql.toString(), ParcelaDTO.class)
87
                                        .setParameter("sequencialContaBancaria", sequencialContaBancaria)
88
                                        .setParameter("dataVencimento", dataRecebimento)
89
                                        .getResultList();
90
                } catch(Exception ex) {
91
                        ex.printStackTrace();
92
                        return null;
93
                }
94
        }
95
 
96
        @Override
296 espaco 97
        public List<ParcelaDTO> consultarParcelasAReceber(Long sequencialContaBancaria, Date dataRecebimento, List<FormaPagamentoDTO> formasDePagamento) {
282 espaco 98
                StringBuilder sql = new StringBuilder();
319 espaco 99
                sql.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
100
                sql.append(ParcelaDTO.CONSULTA_SEM_CATEGORIA_DTO);
101
                sql.append(") FROM Parcela e ");
102
                sql.append("WHERE e.contaBancaria.sequencial = :sequencialContaBancaria ");
103
                sql.append("AND e.dataVencimento = :dataVencimento ");
104
                sql.append(setarParametrosFormasDePagamento("e", formasDePagamento));
105
                sql.append("AND e.dataPagamento is null ");
343 espaco 106
                sql.append("AND e.indicadorAtivo is true ");
319 espaco 107
                sql.append("ORDER BY e.dataVencimento ");
282 espaco 108
                try {
109
                        return getEntityManager().createQuery(sql.toString(), ParcelaDTO.class)
110
                                        .setParameter("sequencialContaBancaria", sequencialContaBancaria)
111
                                        .setParameter("dataVencimento", dataRecebimento)
112
                                        .getResultList();
113
                } catch(Exception ex) {
114
                        ex.printStackTrace();
115
                        return null;
116
                }
117
        }
118
 
119
        @Override
296 espaco 120
        public List<ParcelaDTO> consultarParcelasRecebidas(Long sequencialContaBancaria, Date dataRecebimento, List<FormaPagamentoDTO> formasDePagamento) {
282 espaco 121
                StringBuilder sql = new StringBuilder();
319 espaco 122
                sql.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
123
                sql.append(ParcelaDTO.CONSULTA_SEM_CATEGORIA_DTO);
124
                sql.append(") FROM Parcela e ");
125
                sql.append("WHERE e.contaBancaria.sequencial = :sequencialContaBancaria ");
126
                sql.append("AND e.dataPagamento = :dataPagamento ");
343 espaco 127
                sql.append("AND e.indicadorAtivo is true ");
319 espaco 128
                sql.append(setarParametrosFormasDePagamento("e", formasDePagamento));
129
                sql.append("ORDER BY e.dataVencimento ");
282 espaco 130
                try {
131
                        return getEntityManager().createQuery(sql.toString(), ParcelaDTO.class)
132
                                        .setParameter("sequencialContaBancaria", sequencialContaBancaria)
294 espaco 133
                                        .setParameter("dataPagamento", dataRecebimento)
282 espaco 134
                                        .getResultList();
135
                } catch(Exception ex) {
136
                        ex.printStackTrace();
137
                        return null;
138
                }
139
        }
140
 
296 espaco 141
        private String setarParametrosFormasDePagamento(String nomeTabela, List<FormaPagamentoDTO> formasPagamento) {
142
                StringBuilder sql = new StringBuilder();
143
                if (VerificadorUtil.isListaComElementos(formasPagamento)) {
144
                        sql.append("AND ");
145
                        sql.append(nomeTabela);
146
                        sql.append(".formaPagamento.codigo IN (");
147
                        for (FormaPagamentoDTO formaPagamento : formasPagamento) {
148
                                sql.append(formaPagamento.getCodigo() + ",");
149
                        }
150
                        sql.append(") ");
151
                }
152
                return sql.toString().replace(",)", ")");
153
        }
154
 
155
        @Override
383 espaco 156
        public void conciliarParcelas(Date dataConciliacao, List<ParcelaDTO> parcelasSelecionadas) {
296 espaco 157
                StringBuilder sql = new StringBuilder();
383 espaco 158
                sql.append("UPDATE Parcela parcela SET parcela.dataPagamento = :dataPagamento, parcela.indicadorConciliado = true ");
159
                sql.append("WHERE parcela.sequencial IN (");
160
                StringBuilder sqlParcelas = new StringBuilder("");
161
                for (ParcelaDTO parcelaDTO : parcelasSelecionadas) {
162
                        sqlParcelas.append(parcelaDTO.getSequencial() + ",");
163
                }
164
                sqlParcelas.append(") ");
165
                sql.append(sqlParcelas.toString().replace(",)", ")"));
296 espaco 166
                try {
167
                        getEntityManager().createQuery(sql.toString())
383 espaco 168
                                .setParameter("dataPagamento", dataConciliacao)
296 espaco 169
                                .executeUpdate();
170
                        getEntityManager().flush();
171
                } catch(Exception ex) {
172
                        ex.printStackTrace();
173
                }
174
        }
175
 
176
        @Override
177
        public Double obterValorPassandoParametrosConsulta(ParametrosConsulta<Parcela> parametrosConsulta) {
178
                StringBuilder sql = new StringBuilder();
179
                sql.append("SELECT DISTINCT SUM(e.valor) FROM Parcela e ");
180
                sql.append("WHERE e.indicadorAtivo is true ");
181
                try {
182
                        setarStringParametrosConsulta(sql, parametrosConsulta);
183
                        TypedQuery<Double> query = getEntityManager().createQuery(sql.toString(), Double.class);
184
                        setarQueryParametrosConsulta(query, parametrosConsulta);
185
                        return query.getSingleResult();
186
                } catch(Exception ex) {
187
                        ex.printStackTrace();
188
                        return null;
189
                }
190
        }
191
 
192
        @Override
297 espaco 193
        public List<ParcelaDTO> consultarParcelasPassandoParametrosConsulta(ParametrosConsulta<Parcela> parametrosConsulta) {
194
                StringBuilder sql = new StringBuilder();
319 espaco 195
                sql.append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
196
                sql.append(ParcelaDTO.CONSULTA_COMPLETA_DTO);
197
                sql.append(") FROM Parcela e ");
297 espaco 198
//              sql.append("SELECT DISTINCT SUM(e.valor) FROM Parcela e ");
199
                sql.append("WHERE e.indicadorAtivo is true ");
200
                try {
201
                        setarStringParametrosConsulta(sql, parametrosConsulta);
202
                        TypedQuery<ParcelaDTO> query = getEntityManager().createQuery(sql.toString(), ParcelaDTO.class);
203
                        setarQueryParametrosConsulta(query, parametrosConsulta);
204
                        return query.getResultList();
205
                } catch(Exception ex) {
206
                        ex.printStackTrace();
207
                        return null;
208
                }
209
        }
210
 
211
        @Override
296 espaco 212
        protected void setarStringParametrosConsulta(StringBuilder sql, ParametrosConsulta<Parcela> parametrosConsulta) {
213
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta)) {
214
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia())) {
215
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia().getSequencial().equals(new Long(-1))) {
216
                                        sql.append("AND e.conta.vigencia IS NULL ");
217
                                } else {
218
                                        sql.append("AND e.conta.vigencia.sequencial = :sequencialVigencia ");
219
                                }
220
                        }
221
 
222
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos())) {
223
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCentroDeCustos().getSequencial().equals(new Long(-1))) {
224
                                        sql.append("AND e.conta.loja IS NULL ");
225
                                } else {
226
                                        sql.append("AND e.conta.loja.sequencial = :sequencialCentroDeCustos ");
227
                                }
228
                        }
229
 
230
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getIndicadorDre())) {
231
                                sql.append("AND e.conta.categoria.indicadorDRE.codigo = :codigoIndicadorDre ");
232
                        } else if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getPagamentoRealizado()) {
233
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicialDoPeriodo()) &&
234
                                                VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinalDoPeriodo())) {
235
                                        sql.append("AND e.dataPagamento is not null ");
236
                                        sql.append("AND e.dataPagamento >= :dataInicial AND e.dataPagamento <= :dataFinal ");
237
                                }
238
                        } else {
239
                                sql.append("AND e.dataPagamento is null ");
240
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento())) {
241
                                        sql.append("AND e.dataVencimento = :dataVencimento ");
242
                                }
243
                                /*
244
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento())) {
245
                                        if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento().equals(TipoCartao.DEBITO.getValor())) {
246
                                                sql.append("AND e.conta.formaDePagamento.formaPagamento.codigo = 2 ");
247
                                        } else if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento().equals(TipoCartao.CREDITO.getValor())) {
248
                                                sql.append("AND e.conta.formaDePagamento.formaPagamento.codigo in (3, 4, 5, 7, 8, 9, 10, 11, 12, 13) ");
249
                                        }
250
                                }
251
                                */
252
                        }
253
                        /*
254
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getContaBancaria())) {
255
                                sql.append("AND e.contaBancaria.sequencial = :sequencialContaBancaria ");
256
                        }
257
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoBusca())) {
258
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoBusca().equals("R")) {
259
                                        sql.append("AND e.conta.tipoConta = 'R' ");
260
                                }
261
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoBusca().equals("P")) {
262
                                        sql.append("AND e.conta.tipoConta = 'P' ");
263
                                }
264
                        }
265
 
266
 
267
 
268
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCategoria())) {
269
                                sql.append("AND e.conta.categoria.sequencial = :sequencialCategoria ");
270
                        }
271
 
272
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
273
                                sql.append("AND e.conta.pessoa.sequencial = :sequencialPessoa ");
274
                        }
275
 
276
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
277
                                sql.append("AND e.conta.pessoa.sequencial = :sequencialPessoa ");
278
                        }
279
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getObservacao())) {
280
                                sql.append("AND upper(e.observacao) like upper(:observacao) ");
281
                        }
282
 
283
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOficial())) {
284
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOficial()) {
285
                                        sql.append("AND e.indicadorOficial IS TRUE ");
286
                                } else {
287
                                        sql.append("AND e.indicadorOficial IS FALSE ");
288
                                }
289
                        }
290
                         */
291
                }
292
        }
293
 
294
        @Override
295
        protected void setarQueryParametrosConsulta(Query query, ParametrosConsulta<Parcela> parametrosConsulta) {
296
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta)) {
297
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia())) {
298
                                if (!((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia().getSequencial().equals(new Long(-1))) {
299
                                        query.setParameter("sequencialVigencia", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getVigencia().getSequencial());
300
                                }
301
                        }
302
 
303
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos())) {
304
                                if (!((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCentroDeCustos().getSequencial().equals(new Long(-1))) {
305
                                        query.setParameter("sequencialCentroDeCustos", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos().getSequencial());
306
                                }
307
                        }
308
 
309
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getIndicadorDre())) {
310
                                query.setParameter("codigoIndicadorDre", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getIndicadorDre().getCodigo());
311
                        }
312
 
313
                        if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getPagamentoRealizado()) {
314
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicialDoPeriodo()) &&
315
                                                VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinalDoPeriodo())) {
316
                                        query.setParameter("dataInicial", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicialDoPeriodo());
317
                                        query.setParameter("dataFinal", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinalDoPeriodo());
318
                                }
319
                        } else if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento())) {
320
                                query.setParameter("dataVencimento", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento());
321
                        }
322
                }
323
                /*
324
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta)) {
325
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getContaBancaria())) {
326
                                query.setParameter("sequencialContaBancaria", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getContaBancaria().getSequencial());
327
                        }
328
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCategoria())) {
329
                                query.setParameter("sequencialCategoria", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCategoria().getSequencial());
330
                        }
331
 
332
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
333
                                query.setParameter("sequencialPessoa", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getFavorecido().getSequencial());
334
                        }
335
 
336
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getObservacao())) {
337
                                query.setParameter("observacao", "%" + ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getObservacao() + "%");
338
                        }
339
                }
340
                */
341
        }
342
 
343
        @Override
344
        protected void setarStringParametrosConsultar(StringBuilder sql, Parcela parcela) {
345
                /*
346
                if (VerificadorUtil.naoEstaNulo(parcela)) {
347
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta())) {
348
                                if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta().getSequencial())) {
349
                                        sql.append("AND e.conta.sequencial = :sequencialConta ");
350
                                }
351
                        }
352
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getIndicadorAtivo())) {
353
                                sql.append("AND e.indicadorAtivo = :indicadorAtivo ");
354
                        }
355
                }
356
                */
357
        }
358
 
359
        @Override
360
        protected void setarQueryParametrosConsultar(Query query, Parcela parcela) {
361
                /*
362
                if (VerificadorUtil.naoEstaNulo(parcela)) {
363
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta())) {
364
                                if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta().getSequencial())) {
365
                                        query.setParameter("sequencialConta", parcela.getConta().getSequencial());
366
                                }
367
                        }
368
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getIndicadorAtivo())) {
369
                                query.setParameter("indicadorAtivo", parcela.getIndicadorAtivo());
370
                        }
371
                }
372
                */
373
        }
374
 
259 espaco 375
        /*
376
        @Override
377
        public List<Parcela> consultarParcelas(ParametrosConsultaLancamentosDTO parametrosConsulta) {
378
                StringBuilder sql = new StringBuilder();
379
                sql.append("SELECT p FROM Parcela p ");
380
                sql.append("WHERE ((p.dataPagamento IS NOT NULL AND p.dataPagamento >= :dataInicial AND p.dataPagamento <= :dataFinal) ");
381
                sql.append("OR (p.dataPagamento IS NULL AND p.dataVencimento <= :dataFinal)) ");
382
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoBusca())) {
383
                        sql.append("AND p.conta.tipoConta = :tipoConta ");
384
                }
385
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCentroDeCustos())) {
386
                        if (parametrosConsulta.getCentroDeCustos().getSequencial().equals(new Long(-1))) {
387
                                sql.append("AND p.conta.loja IS NULL ");
388
                        } else {
389
                                sql.append("AND p.conta.loja.sequencial = :sequencialCentroDeCustos ");
390
                        }
391
                }
392
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria())) {
393
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria().getSequencial())) {
394
                                sql.append("AND p.conta.categoria.sequencial = :sequencialCategoria ");
395
                        } else {
396
                                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoriaPai().getSequencial())) {
397
                                        sql.append("AND p.conta.categoria.sequencial = :sequencialCategoriaPai ");
398
                                } else {
399
                                        sql.append("AND p.conta.categoria IS NULL ");
400
                                }
401
                        }
402
                }
403
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getOficial())) {
404
                        if (parametrosConsulta.getOficial()) {
405
                                sql.append("AND p.indicadorOficial IS TRUE ");
406
                        } else {
407
                                sql.append("AND p.indicadorOficial IS FALSE ");
408
                        }
409
                }
410
                sql.append("ORDER BY p.dataVencimento ");
411
                try {
412
                        TypedQuery<Parcela> query = getEntityManager().createQuery(sql.toString(), Parcela.class)
413
                                .setParameter("dataInicial", parametrosConsulta.getDataInicial())
414
                                .setParameter("dataFinal", parametrosConsulta.getDataFinal());
415
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoBusca())) {
416
                                query.setParameter("tipoConta", parametrosConsulta.getTipoBusca());
417
                        }
418
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCentroDeCustos())) {
419
                                if (!parametrosConsulta.getCentroDeCustos().getSequencial().equals(new Long(-1))) {
420
                                        query.setParameter("sequencialCentroDeCustos", parametrosConsulta.getCentroDeCustos().getSequencial());
421
                                }
422
                        }
423
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria())) {
424
                                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria().getSequencial())) {
425
                                        query.setParameter("sequencialCategoria", parametrosConsulta.getCategoria().getSequencial());
426
                                } else {
427
                                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoriaPai().getSequencial())) {
428
                                                query.setParameter("sequencialCategoriaPai", parametrosConsulta.getCategoriaPai().getSequencial());
429
                                        }
430
                                }
431
                        }
432
                        return query.getResultList();
433
                } catch(Exception ex) {
434
                        ex.printStackTrace();
435
                        return null;
436
                }
437
        }
438
 
439
        @Override
440
        public List<Parcela> consultarParcelasAVencer(Conta conta) {
441
                StringBuilder sql = new StringBuilder();
442
                sql.append("SELECT p FROM Parcela p ");
443
                sql.append("WHERE p.conta.sequencial = :sequencialConta ");
444
                sql.append("AND p.dataPagamento is null ");
445
                sql.append("ORDER BY p.sequencial ");
446
                try {
447
                        return getEntityManager().createQuery(sql.toString(), Parcela.class)
448
                                        .setParameter("sequencialConta", conta.getSequencial())
449
                                        .getResultList();
450
                } catch(Exception ex) {
451
                        ex.printStackTrace();
452
                        return null;
453
                }
454
        }
455
 
456
        @Override
457
        public List<Parcela> consultarParcelasRecebidas(Date dataRecebimento, TipoCartao tipoCartao) {
458
                StringBuilder sql = new StringBuilder();
459
                sql.append("SELECT p FROM Parcela p ");
460
                sql.append("WHERE p.dataVencimento = :dataVencimento ");
461
                sql.append("AND p.observacao like UPPER(:observacao) ");
462
                sql.append("AND p.dataPagamento is not null ");
463
                sql.append("ORDER BY p.dataVencimento ");
464
                try {
465
                        return getEntityManager().createQuery(sql.toString(), Parcela.class)
466
                                        .setParameter("dataVencimento", dataRecebimento)
467
                                        .setParameter("observacao", StringUtil.setarUpperCase("%" + tipoCartao.getDescricao() + "%"))
468
                                        .getResultList();
469
                } catch(Exception ex) {
470
                        ex.printStackTrace();
471
                        return null;
472
                }
473
        }
474
 
475
        @Override
476
        public List<Parcela> consultarPassandoParametrosConsulta(ParametrosConsulta<Parcela> parametrosConsulta,
477
                        Integer primeiroRegistro, Integer tamanhoPagina, String sortField, String sortOrder,
478
                        Map<String, Object> filters) {
479
                StringBuilder sql = new StringBuilder();
480
                sql.append("SELECT DISTINCT e FROM Parcela e ");
481
                sql.append("WHERE e.indicadorAtivo is true ");
482
                try {
483
                        setarStringParametrosConsulta(sql, parametrosConsulta);
484
                        sql.append("ORDER BY " + ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOrdenacao());
485
                        TypedQuery<Parcela> query = getEntityManager().createQuery(sql.toString(), Parcela.class);
486
                        setarQueryParametrosConsulta(query, parametrosConsulta);
487
                        return query.setFirstResult(primeiroRegistro).setMaxResults(tamanhoPagina).getResultList();
488
                } catch(Exception ex) {
489
                        ex.printStackTrace();
490
                        return null;
491
                }
492
        }
493
 
494
        @Override
495
        public List<Parcela> consultarParcelasDaVenda(Long sequencialVenda) {
496
                StringBuilder sql = new StringBuilder();
497
                sql.append("SELECT p FROM Parcela p ");
498
                sql.append("WHERE p.conta.venda.sequencial = :sequencialVenda ");
499
                sql.append("ORDER BY p.dataVencimento ");
500
                try {
501
                        return getEntityManager().createQuery(sql.toString(), Parcela.class).setParameter("sequencialVenda", sequencialVenda).getResultList();
502
                } catch(Exception ex) {
503
                        ex.printStackTrace();
504
                        return null;
505
                }
506
        }
507
 
508
        @Override
509
        public Boolean verificarPossuiParcelaAberta(Venda venda) {
510
                StringBuilder sql = new StringBuilder();
511
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.dataPagamento is null AND p.indicadorAtivo = true ");
512
                sql.append("AND p.conta.venda.sequencial = :sequencialVenda ");
513
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
514
                query.setParameter("sequencialVenda", venda.getSequencial());
515
                return query.getSingleResult().intValue()>0;
516
        }
517
 
518
        @Override
519
        public Boolean verificarPossuiParcelaAbertaParaPagamento(Conta conta) {
520
                StringBuilder sql = new StringBuilder();
521
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.dataPagamento is null AND p.indicadorAtivo = true ");
522
                sql.append("AND p.conta.sequencial = :sequencialConta ");
523
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
524
                query.setParameter("sequencialConta", conta.getSequencial());
525
                return query.getSingleResult().intValue()>0;
526
        }
527
 
528
        @Override
529
        public List<Parcela> consultarParcelasDaConta(Conta conta) {
530
                StringBuilder sql = new StringBuilder();
531
                sql.append("SELECT p FROM Parcela p WHERE p.indicadorAtivo = true ");
532
                sql.append("AND p.conta.sequencial = :sequencialConta ");
533
                return getEntityManager().createQuery(sql.toString(), Parcela.class).setParameter("sequencialConta", conta.getSequencial()).getResultList();
534
        }
535
 
536
        @Override
537
        public Boolean verificarPossuiParcela(Venda venda) {
538
                StringBuilder sql = new StringBuilder();
539
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.indicadorAtivo = true ");
540
                sql.append("AND p.conta.venda.sequencial = :sequencialVenda ");
541
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
542
                query.setParameter("sequencialVenda", venda.getSequencial());
543
                return query.getSingleResult().intValue()>0;
544
        }
545
 
546
 
547
        */
548
}