Subversion Repositories Integrator Subversion

Rev

Rev 282 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
259 espaco 1
package br.com.ec.repository.jpa;
2
 
3
import org.springframework.stereotype.Repository;
4
 
5
import br.com.ec.domain.model.Parcela;
6
import br.com.ec.repository.ParcelaRepository;
7
import br.com.ec.repository.SistemaAbstractRepository;
8
 
9
@Repository
10
public class ParcelaRepositoryJpaImpl extends SistemaAbstractRepository<Parcela> implements ParcelaRepository {
11
 
12
        @Override
13
        protected String getColunaOrdenadora() {
14
                return "sequencial";
15
        }
16
        /*
17
        @Override
18
        public List<Parcela> consultarParcelas(ParametrosConsultaLancamentosDTO parametrosConsulta) {
19
                StringBuilder sql = new StringBuilder();
20
                sql.append("SELECT p FROM Parcela p ");
21
                sql.append("WHERE ((p.dataPagamento IS NOT NULL AND p.dataPagamento >= :dataInicial AND p.dataPagamento <= :dataFinal) ");
22
                sql.append("OR (p.dataPagamento IS NULL AND p.dataVencimento <= :dataFinal)) ");
23
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoBusca())) {
24
                        sql.append("AND p.conta.tipoConta = :tipoConta ");
25
                }
26
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCentroDeCustos())) {
27
                        if (parametrosConsulta.getCentroDeCustos().getSequencial().equals(new Long(-1))) {
28
                                sql.append("AND p.conta.loja IS NULL ");
29
                        } else {
30
                                sql.append("AND p.conta.loja.sequencial = :sequencialCentroDeCustos ");
31
                        }
32
                }
33
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria())) {
34
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria().getSequencial())) {
35
                                sql.append("AND p.conta.categoria.sequencial = :sequencialCategoria ");
36
                        } else {
37
                                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoriaPai().getSequencial())) {
38
                                        sql.append("AND p.conta.categoria.sequencial = :sequencialCategoriaPai ");
39
                                } else {
40
                                        sql.append("AND p.conta.categoria IS NULL ");
41
                                }
42
                        }
43
                }
44
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getOficial())) {
45
                        if (parametrosConsulta.getOficial()) {
46
                                sql.append("AND p.indicadorOficial IS TRUE ");
47
                        } else {
48
                                sql.append("AND p.indicadorOficial IS FALSE ");
49
                        }
50
                }
51
                sql.append("ORDER BY p.dataVencimento ");
52
                try {
53
                        TypedQuery<Parcela> query = getEntityManager().createQuery(sql.toString(), Parcela.class)
54
                                .setParameter("dataInicial", parametrosConsulta.getDataInicial())
55
                                .setParameter("dataFinal", parametrosConsulta.getDataFinal());
56
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoBusca())) {
57
                                query.setParameter("tipoConta", parametrosConsulta.getTipoBusca());
58
                        }
59
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCentroDeCustos())) {
60
                                if (!parametrosConsulta.getCentroDeCustos().getSequencial().equals(new Long(-1))) {
61
                                        query.setParameter("sequencialCentroDeCustos", parametrosConsulta.getCentroDeCustos().getSequencial());
62
                                }
63
                        }
64
                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria())) {
65
                                if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoria().getSequencial())) {
66
                                        query.setParameter("sequencialCategoria", parametrosConsulta.getCategoria().getSequencial());
67
                                } else {
68
                                        if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getCategoriaPai().getSequencial())) {
69
                                                query.setParameter("sequencialCategoriaPai", parametrosConsulta.getCategoriaPai().getSequencial());
70
                                        }
71
                                }
72
                        }
73
                        return query.getResultList();
74
                } catch(Exception ex) {
75
                        ex.printStackTrace();
76
                        return null;
77
                }
78
        }
79
 
80
        @Override
81
        public List<Parcela> consultarParcelasAVencer(Conta conta) {
82
                StringBuilder sql = new StringBuilder();
83
                sql.append("SELECT p FROM Parcela p ");
84
                sql.append("WHERE p.conta.sequencial = :sequencialConta ");
85
                sql.append("AND p.dataPagamento is null ");
86
                sql.append("ORDER BY p.sequencial ");
87
                try {
88
                        return getEntityManager().createQuery(sql.toString(), Parcela.class)
89
                                        .setParameter("sequencialConta", conta.getSequencial())
90
                                        .getResultList();
91
                } catch(Exception ex) {
92
                        ex.printStackTrace();
93
                        return null;
94
                }
95
        }
96
 
97
        @Override
98
        public List<Parcela> consultarParcelasAReceber(Date dataRecebimento, TipoCartao tipoCartao) {
99
                StringBuilder sql = new StringBuilder();
100
                sql.append("SELECT p FROM Parcela p ");
101
                sql.append("WHERE p.dataVencimento = :dataVencimento ");
102
                sql.append("AND p.observacao like UPPER(:observacao) ");
103
                sql.append("AND p.dataPagamento is null ");
104
                sql.append("ORDER BY p.dataVencimento ");
105
                try {
106
                        return getEntityManager().createQuery(sql.toString(), Parcela.class)
107
                                        .setParameter("dataVencimento", dataRecebimento)
108
                                        .setParameter("observacao", StringUtil.setarUpperCase("%" + tipoCartao.getDescricao() + "%"))
109
                                        .getResultList();
110
                } catch(Exception ex) {
111
                        ex.printStackTrace();
112
                        return null;
113
                }
114
        }
115
 
116
        @Override
117
        public List<Parcela> consultarParcelasRecebidas(Date dataRecebimento, TipoCartao tipoCartao) {
118
                StringBuilder sql = new StringBuilder();
119
                sql.append("SELECT p FROM Parcela p ");
120
                sql.append("WHERE p.dataVencimento = :dataVencimento ");
121
                sql.append("AND p.observacao like UPPER(:observacao) ");
122
                sql.append("AND p.dataPagamento is not null ");
123
                sql.append("ORDER BY p.dataVencimento ");
124
                try {
125
                        return getEntityManager().createQuery(sql.toString(), Parcela.class)
126
                                        .setParameter("dataVencimento", dataRecebimento)
127
                                        .setParameter("observacao", StringUtil.setarUpperCase("%" + tipoCartao.getDescricao() + "%"))
128
                                        .getResultList();
129
                } catch(Exception ex) {
130
                        ex.printStackTrace();
131
                        return null;
132
                }
133
        }
134
 
135
        @Override
136
        public List<Parcela> consultarPassandoParametrosConsulta(ParametrosConsulta<Parcela> parametrosConsulta,
137
                        Integer primeiroRegistro, Integer tamanhoPagina, String sortField, String sortOrder,
138
                        Map<String, Object> filters) {
139
                StringBuilder sql = new StringBuilder();
140
                sql.append("SELECT DISTINCT e FROM Parcela e ");
141
                sql.append("WHERE e.indicadorAtivo is true ");
142
                try {
143
                        setarStringParametrosConsulta(sql, parametrosConsulta);
144
                        sql.append("ORDER BY " + ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOrdenacao());
145
                        TypedQuery<Parcela> query = getEntityManager().createQuery(sql.toString(), Parcela.class);
146
                        setarQueryParametrosConsulta(query, parametrosConsulta);
147
                        return query.setFirstResult(primeiroRegistro).setMaxResults(tamanhoPagina).getResultList();
148
                } catch(Exception ex) {
149
                        ex.printStackTrace();
150
                        return null;
151
                }
152
        }
153
 
154
        @Override
155
        public List<Parcela> consultarParcelasDaVenda(Long sequencialVenda) {
156
                StringBuilder sql = new StringBuilder();
157
                sql.append("SELECT p FROM Parcela p ");
158
                sql.append("WHERE p.conta.venda.sequencial = :sequencialVenda ");
159
                sql.append("ORDER BY p.dataVencimento ");
160
                try {
161
                        return getEntityManager().createQuery(sql.toString(), Parcela.class).setParameter("sequencialVenda", sequencialVenda).getResultList();
162
                } catch(Exception ex) {
163
                        ex.printStackTrace();
164
                        return null;
165
                }
166
        }
167
 
168
        @Override
169
        public Boolean verificarPossuiParcelaAberta(Venda venda) {
170
                StringBuilder sql = new StringBuilder();
171
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.dataPagamento is null AND p.indicadorAtivo = true ");
172
                sql.append("AND p.conta.venda.sequencial = :sequencialVenda ");
173
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
174
                query.setParameter("sequencialVenda", venda.getSequencial());
175
                return query.getSingleResult().intValue()>0;
176
        }
177
 
178
        @Override
179
        public Boolean verificarPossuiParcelaAbertaParaPagamento(Conta conta) {
180
                StringBuilder sql = new StringBuilder();
181
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.dataPagamento is null AND p.indicadorAtivo = true ");
182
                sql.append("AND p.conta.sequencial = :sequencialConta ");
183
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
184
                query.setParameter("sequencialConta", conta.getSequencial());
185
                return query.getSingleResult().intValue()>0;
186
        }
187
 
188
        @Override
189
        public List<Parcela> consultarParcelasDaConta(Conta conta) {
190
                StringBuilder sql = new StringBuilder();
191
                sql.append("SELECT p FROM Parcela p WHERE p.indicadorAtivo = true ");
192
                sql.append("AND p.conta.sequencial = :sequencialConta ");
193
                return getEntityManager().createQuery(sql.toString(), Parcela.class).setParameter("sequencialConta", conta.getSequencial()).getResultList();
194
        }
195
 
196
        @Override
197
        public Boolean verificarPossuiParcela(Venda venda) {
198
                StringBuilder sql = new StringBuilder();
199
                sql.append("SELECT COUNT(p) FROM Parcela p WHERE p.indicadorAtivo = true ");
200
                sql.append("AND p.conta.venda.sequencial = :sequencialVenda ");
201
                TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
202
                query.setParameter("sequencialVenda", venda.getSequencial());
203
                return query.getSingleResult().intValue()>0;
204
        }
205
 
206
        @Override
207
        public Double obterValorPassandoParametrosConsulta(ParametrosConsulta<Parcela> parametrosConsulta) {
208
                StringBuilder sql = new StringBuilder();
209
                sql.append("SELECT DISTINCT SUM(e.valor) FROM Parcela e ");
210
                sql.append("WHERE e.indicadorAtivo is true ");
211
                try {
212
                        setarStringParametrosConsulta(sql, parametrosConsulta);
213
                        TypedQuery<Double> query = getEntityManager().createQuery(sql.toString(), Double.class);
214
                        setarQueryParametrosConsulta(query, parametrosConsulta);
215
                        return query.getSingleResult();
216
                } catch(Exception ex) {
217
                        ex.printStackTrace();
218
                        return null;
219
                }
220
        }
221
 
222
        @Override
223
        protected void setarStringParametrosConsulta(StringBuilder sql, ParametrosConsulta<Parcela> parametrosConsulta) {
224
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta)) {
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
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos())) {
238
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCentroDeCustos().getSequencial().equals(new Long(-1))) {
239
                                        sql.append("AND e.conta.loja IS NULL ");
240
                                } else {
241
                                        sql.append("AND e.conta.loja.sequencial = :sequencialCentroDeCustos ");
242
                                }
243
                        }
244
 
245
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCategoria())) {
246
                                sql.append("AND e.conta.categoria.sequencial = :sequencialCategoria ");
247
                        }
248
 
249
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
250
                                sql.append("AND e.conta.pessoa.sequencial = :sequencialPessoa ");
251
                        }
252
 
253
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
254
                                sql.append("AND e.conta.pessoa.sequencial = :sequencialPessoa ");
255
                        }
256
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getObservacao())) {
257
                                sql.append("AND upper(e.observacao) like upper(:observacao) ");
258
                        }
259
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia())) {
260
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia().getSequencial().equals(new Long(-1))) {
261
                                        sql.append("AND e.conta.vigencia IS NULL ");
262
                                } else {
263
                                        sql.append("AND e.conta.vigencia = :vigencia ");
264
                                }
265
                        }
266
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOficial())) {
267
                                if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getOficial()) {
268
                                        sql.append("AND e.indicadorOficial IS TRUE ");
269
                                } else {
270
                                        sql.append("AND e.indicadorOficial IS FALSE ");
271
                                }
272
                        }
273
 
274
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getIndicadorDRE())) {
275
                                sql.append("AND e.conta.categoria.indicadorDRE = :indicadorDRE ");
276
                        } else if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getPagamentoRealizado()) {
277
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicial()) &&
278
                                                VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinal())) {
279
                                        sql.append("AND e.dataPagamento is not null ");
280
                                        sql.append("AND e.dataPagamento >= :dataInicial AND e.dataPagamento <= :dataFinal ");
281
                                }
282
                        } else {
283
                                sql.append("AND e.dataPagamento is null ");
284
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento())) {
285
                                        sql.append("AND e.dataVencimento = :dataVencimento ");
286
                                }
287
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento())) {
288
                                        if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento().equals(TipoCartao.DEBITO.getValor())) {
289
                                                sql.append("AND e.conta.formaDePagamento.formaPagamento.codigo = 2 ");
290
                                        } else if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getTipoFormaDePagamento().equals(TipoCartao.CREDITO.getValor())) {
291
                                                sql.append("AND e.conta.formaDePagamento.formaPagamento.codigo in (3, 4, 5, 7, 8, 9, 10, 11, 12, 13) ");
292
                                        }
293
                                }
294
                        }
295
                }
296
        }
297
 
298
        @Override
299
        protected void setarQueryParametrosConsulta(Query query, ParametrosConsulta<Parcela> parametrosConsulta) {
300
                if (VerificadorUtil.naoEstaNulo(parametrosConsulta)) {
301
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getContaBancaria())) {
302
                                query.setParameter("sequencialContaBancaria", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getContaBancaria().getSequencial());
303
                        }
304
 
305
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos())) {
306
                                if (!((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCentroDeCustos().getSequencial().equals(new Long(-1))) {
307
                                        query.setParameter("sequencialCentroDeCustos", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCentroDeCustos().getSequencial());
308
                                }
309
                        }
310
 
311
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getCategoria())) {
312
                                query.setParameter("sequencialCategoria", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getCategoria().getSequencial());
313
                        }
314
 
315
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getFavorecido())) {
316
                                query.setParameter("sequencialPessoa", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getFavorecido().getSequencial());
317
                        }
318
 
319
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getObservacao())) {
320
                                query.setParameter("observacao", "%" + ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getObservacao() + "%");
321
                        }
322
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia())) {
323
                                if (!((ParametrosConsultaLancamentosDTO)parametrosConsulta).getVigencia().getSequencial().equals(new Long(-1))) {
324
                                        query.setParameter("vigencia", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getVigencia());
325
                                }
326
                        }
327
                        if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getIndicadorDRE())) {
328
                                query.setParameter("indicadorDRE", ((ParametrosConsultaLancamentosDTO) parametrosConsulta).getIndicadorDRE());
329
                        }
330
 
331
                        if (((ParametrosConsultaLancamentosDTO)parametrosConsulta).getPagamentoRealizado()) {
332
                                if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicial()) &&
333
                                                VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinal())) {
334
                                        query.setParameter("dataInicial", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataInicial());
335
                                        query.setParameter("dataFinal", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataFinal());
336
                                }
337
                        } else if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento())) {
338
                                query.setParameter("dataVencimento", ((ParametrosConsultaLancamentosDTO)parametrosConsulta).getDataVencimento());
339
                        }
340
                }
341
 
342
        }
343
 
344
        @Override
345
        protected void setarStringParametrosConsultar(StringBuilder sql, Parcela parcela) {
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
        @Override
359
        protected void setarQueryParametrosConsultar(Query query, Parcela parcela) {
360
                if (VerificadorUtil.naoEstaNulo(parcela)) {
361
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta())) {
362
                                if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getConta().getSequencial())) {
363
                                        query.setParameter("sequencialConta", parcela.getConta().getSequencial());
364
                                }
365
                        }
366
                        if (VerificadorUtil.naoEstaNuloOuVazio(parcela.getIndicadorAtivo())) {
367
                                query.setParameter("indicadorAtivo", parcela.getIndicadorAtivo());
368
                        }
369
                }
370
        }
371
        */
372
}