Subversion Repositories Integrator Subversion

Rev

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