Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
346 espaco 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
import java.util.Date;
5
 
6
import javax.persistence.Column;
7
import javax.persistence.Entity;
8
import javax.persistence.GeneratedValue;
9
import javax.persistence.GenerationType;
10
import javax.persistence.Id;
11
import javax.persistence.JoinColumn;
12
import javax.persistence.ManyToOne;
13
import javax.persistence.SequenceGenerator;
14
import javax.persistence.Table;
15
import javax.validation.constraints.NotNull;
16
 
17
import org.hibernate.annotations.ForeignKey;
18
 
19
import br.com.ec.core.interfaces.Alterar;
20
import br.com.ec.core.interfaces.Cadastrar;
21
 
22
@Entity
23
@Table(name="sec_pedido", schema="sc_sec")
24
public class Pedido implements Serializable {
25
 
26
        private static final long serialVersionUID = 1L;
27
 
28
        private Long sequencial;
29
        private Loja loja;
30
        private Date dataPedido;
31
        private Usuario usuarioPedido;
32
 
33
        /*
34
        private Cliente cliente;
35
        private String contatoCliente;
36
        private Modelo modelo;
37
        private Venda venda;
38
 
39
        private String genero;
40
        private String tipoProduto;
41
        private String estiloProduto;
42
        private String corProduto;
43
 
44
        private String observacao;
45
        private Usuario usuarioAtendimento;
46
        private String tipoSituacao;
47
        private Date dataUltimaAlteracaoSituacao;
48
        private Date dataSolicitadoParaComprar;
49
 
50
        private List<PedidoHistorico> historico;
51
        private List<PedidoProduto> produtos;
52
 
53
        private String tipoPedido;
54
        */
55
        private Date dataEntrega;
56
        private Double kilometragemEntrega;
57
 
58
//      private String observacaoMaterialRecolhido;
59
//      private String descricaoServico;
60
 
61
        @Id
62
        @SequenceGenerator(name = "sq_pedido")
63
        @GeneratedValue(strategy = GenerationType.IDENTITY)
64
        @Column(name="seq_pedido", nullable=false)
65
        public Long getSequencial() {
66
                return sequencial;
67
        }
68
        public void setSequencial(Long sequencial) {
69
                this.sequencial = sequencial;
70
        }
71
 
72
        @ManyToOne
73
        @ForeignKey(name="fk_pedido_loja")
74
        @NotNull(message = "Parâmetro obrigatório não preenchido: Loja do pedido", groups = {Cadastrar.class, Alterar.class})
75
        @JoinColumn(name = "seq_loja", referencedColumnName="seq_loja", nullable=false)
76
        public Loja getLoja() {
77
                return loja;
78
        }
79
        public void setLoja(Loja loja) {
80
                this.loja = loja;
81
        }
82
 
83
        @ManyToOne
84
        @ForeignKey(name="fk_pedido_usuario")
85
        @NotNull(message = "Parâmetro obrigatório não preenchido: Usuário do pedido", groups = {Cadastrar.class, Alterar.class})
86
        @JoinColumn(name = "seq_usuario_pedido", nullable=false)
87
        public Usuario getUsuarioPedido() {
88
                return usuarioPedido;
89
        }
90
        public void setUsuarioPedido(Usuario usuarioPedido) {
91
                this.usuarioPedido = usuarioPedido;
92
        }
93
        /*
94
        @ManyToOne
95
        @ForeignKey(name="fk_pedido_usuarioatend")
96
        @JoinColumn(name = "seq_usuario_atendimento", nullable=true)
97
        public Usuario getUsuarioAtendimento() {
98
                return usuarioAtendimento;
99
        }
100
        public void setUsuarioAtendimento(Usuario usuarioAtendimento) {
101
                this.usuarioAtendimento = usuarioAtendimento;
102
        }
103
 
104
        @ManyToOne
105
        @ForeignKey(name="fk_pedido_cliente")
106
        @JoinColumn(name = "seq_cliente", referencedColumnName="seq_cliente", nullable=true)
107
        public Cliente getCliente() {
108
                return cliente;
109
        }
110
        public void setCliente(Cliente cliente) {
111
                this.cliente = cliente;
112
        }
113
 
114
        @Column(name="dsc_contato_cliente")
115
        @Size(max = 200, message = "Limite de caracteres ultrapassado: Contato do Cliente")
116
        public String getContatoCliente() {
117
                return contatoCliente;
118
        }
119
        public void setContatoCliente(String contatoCliente) {
120
                this.contatoCliente = StringUtil.setarUpperCaseComTrim(contatoCliente);
121
        }
122
 
123
        @ManyToOne
124
        @ForeignKey(name="fk_pedido_modelo")
125
        @JoinColumn(name = "seq_modelo", referencedColumnName="seq_modelo", nullable=true)
126
        public Modelo getModelo() {
127
                return modelo;
128
        }
129
        public void setModelo(Modelo modelo) {
130
                this.modelo = modelo;
131
        }
132
 
133
        @ManyToOne
134
        @ForeignKey(name="fk_pedido_venda")
135
        @JoinColumn(name = "seq_venda", referencedColumnName="seq_venda", nullable=true)
136
        public Venda getVenda() {
137
                return venda;
138
        }
139
        public void setVenda(Venda venda) {
140
                this.venda = venda;
141
        }
142
 
143
        @Column(name="tip_genero_produto")
144
        public String getGenero() {
145
                return genero;
146
        }
147
        public void setGenero(String genero) {
148
                this.genero = genero;
149
        }
150
 
151
        @Column(name="tip_tipo_produto")
152
        public String getTipoProduto() {
153
                return tipoProduto;
154
        }
155
        public void setTipoProduto(String tipoProduto) {
156
                this.tipoProduto = tipoProduto;
157
        }
158
 
159
        @Column(name="tip_estilo_produto")
160
        public String getEstiloProduto() {
161
                return estiloProduto;
162
        }
163
        public void setEstiloProduto(String estiloProduto) {
164
                this.estiloProduto = estiloProduto;
165
        }
166
 
167
        @Column(name="tip_cor_produto")
168
        public String getCorProduto() {
169
                return corProduto;
170
        }
171
        public void setCorProduto(String corProduto) {
172
                this.corProduto = corProduto;
173
        }
174
 
175
        @Column(name="obs_pedido")
176
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Observação")
177
        public String getObservacao() {
178
                return observacao;
179
        }
180
        public void setObservacao(String observacao) {
181
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
182
        }
183
 
184
        @Column(name="tip_situacao")
185
        @NotNull(message = "Parâmetro obrigatório não preenchido: Situação do pedido", groups = {Cadastrar.class, Alterar.class})
186
        public String getTipoSituacao() {
187
                return tipoSituacao;
188
        }
189
        public void setTipoSituacao(String tipoSituacao) {
190
                this.tipoSituacao = tipoSituacao;
191
        }
192
        */
193
        @Column(name="dth_pedido", nullable=false)
194
        @NotNull(message = "Parâmetro obrigatório não preenchido: Data do pedido", groups = {Cadastrar.class, Alterar.class})
195
        public Date getDataPedido() {
196
                return dataPedido;
197
        }
198
        public void setDataPedido(Date dataPedido) {
199
                this.dataPedido = dataPedido;
200
        }
201
 
202
        /*
203
        @Column(name="dth_alteracao_situacao")
204
        public Date getDataUltimaAlteracaoSituacao() {
205
                return dataUltimaAlteracaoSituacao;
206
        }
207
        public void setDataUltimaAlteracaoSituacao(Date dataUltimaAlteracaoSituacao) {
208
                this.dataUltimaAlteracaoSituacao = dataUltimaAlteracaoSituacao;
209
        }
210
 
211
        @Column(name="tip_pedido")
212
        @NotNull(message = "Parâmetro obrigatório não preenchido: Tipo do pedido", groups = {Cadastrar.class, Alterar.class})
213
        public String getTipoPedido() {
214
                return tipoPedido;
215
        }
216
        public void setTipoPedido(String tipoPedido) {
217
                this.tipoPedido = tipoPedido;
218
        }
219
 
220
        @Column(name="dth_solicitacao_compra")
221
        public Date getDataSolicitadoParaComprar() {
222
                return dataSolicitadoParaComprar;
223
        }
224
        public void setDataSolicitadoParaComprar(Date dataSolicitadoParaComprar) {
225
                this.dataSolicitadoParaComprar = dataSolicitadoParaComprar;
226
        }
227
        */
228
 
229
        @Column(name="dth_entrega")
230
        public Date getDataEntrega() {
231
                return dataEntrega;
232
        }
233
        public void setDataEntrega(Date dataEntrega) {
234
                this.dataEntrega = dataEntrega;
235
        }
236
 
237
        @Column(name="val_kilometragem_entrega")
238
        public Double getKilometragemEntrega() {
239
                return kilometragemEntrega;
240
        }
241
        public void setKilometragemEntrega(Double kilometragemEntrega) {
242
                this.kilometragemEntrega = kilometragemEntrega;
243
        }
244
 
245
        /*
246
        @OneToMany(mappedBy="pedido", cascade=CascadeType.ALL, orphanRemoval=true)
247
        public List<PedidoHistorico> getHistorico() {
248
                return historico;
249
        }
250
        public void setHistorico(List<PedidoHistorico> historico) {
251
                this.historico = historico;
252
        }
253
 
254
        @OneToMany(mappedBy="pedido", cascade=CascadeType.ALL, fetch=FetchType.EAGER, orphanRemoval=true)
255
        public List<PedidoProduto> getProdutos() {
256
                return produtos;
257
        }
258
        public void setProdutos(List<PedidoProduto> produtos) {
259
                this.produtos = produtos;
260
        }
261
        */
262
 
263
        @Override
264
        public int hashCode() {
265
                final int prime = 31;
266
                int result = 1;
267
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
268
                return result;
269
        }
270
 
271
        @Override
272
        public boolean equals(Object obj) {
273
                if (this == obj)
274
                        return true;
275
                if (obj == null)
276
                        return false;
277
                if (getClass() != obj.getClass())
278
                        return false;
279
                Pedido other = (Pedido) obj;
280
                if (sequencial == null) {
281
                        if (other.sequencial != null)
282
                                return false;
283
                } else if (!sequencial.equals(other.sequencial))
284
                        return false;
285
                return true;
286
        }
287
        /*
288
        @Transient
289
        public String getDescricaoDoModelo() {
290
                return VerificadorUtil.naoEstaNulo(modelo)? modelo.getDescricao() : "";
291
        }
292
 
293
        @Transient
294
        public String getDescricaoDoTipoProduto() {
295
                return VerificadorUtil.naoEstaNulo(tipoProduto)? TipoProduto.parse(tipoProduto).getDescricao() : "";
296
        }
297
 
298
        @Transient
299
        public String getDescricaoDoTipoPedido() {
300
                return VerificadorUtil.naoEstaNulo(tipoPedido)? TipoPedido.parse(tipoPedido).getDescricao() : "";
301
        }
302
 
303
        @Transient
304
        public Boolean pedidoEhReserva() {
305
                return VerificadorUtil.naoEstaNuloOuVazio(tipoPedido) ? tipoPedido.equals(TipoPedido.RESERVA.getValor()) : false;
306
        }
307
 
308
        @Transient
309
        public Boolean pedidoEhTroca() {
310
                return VerificadorUtil.naoEstaNuloOuVazio(tipoPedido) ? tipoPedido.equals(TipoPedido.TROCA.getValor()) : false;
311
        }
312
 
313
        @Transient
314
        public Boolean pedidoEhAssistencia() {
315
                return VerificadorUtil.naoEstaNuloOuVazio(tipoPedido) ? tipoPedido.equals(TipoPedido.ASSISTENCIA.getValor()) : false;
316
        }
317
 
318
        @Transient
319
        public Boolean pedidoEhPersonalizacao() {
320
                return VerificadorUtil.naoEstaNuloOuVazio(tipoPedido) ? tipoPedido.equals(TipoPedido.PERSONALIZACAO.getValor()) : false;
321
        }
322
 
323
        @Transient
324
        public String getDescricaoDoEstiloProduto() {
325
                return VerificadorUtil.naoEstaNulo(estiloProduto)? TipoEstiloProduto.parse(estiloProduto).getDescricao() : "";
326
        }
327
 
328
        @Transient
329
        public String getDescricaoDaCorProduto() {
330
                return VerificadorUtil.naoEstaNulo(corProduto)? TipoCorProduto.parse(corProduto).getDescricao() : "";
331
        }
332
 
333
        @Transient
334
        public String getDescricaoDoGeneroProduto() {
335
                return VerificadorUtil.naoEstaNulo(genero)? TipoGenero.parse(genero).getDescricao() : "";
336
        }
337
 
338
        @Transient
339
        public String getNomeDoCliente() {
340
                return VerificadorUtil.naoEstaNulo(cliente)? cliente.getNome() : "";
341
        }
342
 
343
        @Transient
344
        public String getContatoDoCliente() {
345
                return VerificadorUtil.naoEstaNulo(cliente)? cliente.getContato() : "";
346
        }
347
 
348
        @Transient
349
        public String getTelefoneEeContatoDoCliente() {
350
                return VerificadorUtil.naoEstaNulo(cliente)?
351
                                VerificadorUtil.naoEstaNuloOuVazio(cliente.getTelefone())? cliente.getTelefone()  + " " + cliente.getContato():
352
                                        VerificadorUtil.naoEstaNuloOuVazio(cliente.getContato())? cliente.getContato() : "" : "";
353
        }
354
 
355
        @Transient
356
        public String getInformacoesBasicasDoCliente() {
357
                return VerificadorUtil.naoEstaNulo(cliente)? getNomeDoCliente() + " " + getContatoCliente(): getContatoCliente();
358
        }
359
        */
360
        /*
361
        @Transient
362
        public String getDescricaoComModeloCompleta() {
363
                String descricaoCompleta = "";
364
                if (VerificadorUtil.naoEstaNuloOuVazio(getDescricaoDoModelo())) {
365
                        descricaoCompleta = getDescricaoDoModelo() + " - ";
366
                }
367
                return descricaoCompleta + getDescricao();
368
        }
369
        */
370
        /*
371
        @Transient
372
        public Long getSequencialDoModelo() {
373
                return VerificadorUtil.naoEstaNulo(modelo)? modelo.getSequencial() : null;
374
        }
375
 
376
        @Transient
377
        public Long getSequencialDaLoja() {
378
                return VerificadorUtil.naoEstaNulo(loja)? loja.getSequencial() : null;
379
        }
380
 
381
        @Transient
382
        public String getDescricaoDaLoja() {
383
                return VerificadorUtil.naoEstaNulo(loja)? loja.getDescricao() : null;
384
        }
385
 
386
        @Transient
387
        public Boolean foiAtendido() {
388
                return TipoSituacaoPedido.INVALIDO.getValor().equals(tipoSituacao) ||
389
                                TipoSituacaoPedido.FINALIZADO.getValor().equals(tipoSituacao) ||
390
                                TipoSituacaoPedido.FINALIZADO_COM_VENDAS.getValor().equals(tipoSituacao);
391
        }
392
 
393
        @Transient
394
        public String getDescricaoDaSituacao() {
395
                return TipoSituacaoPedido.parse(getTipoSituacao()).getDescricao();
396
        }
397
 
398
        @Transient
399
        public Integer getQuantidadeDiasPedido() {
400
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), getDataPedido());
401
        }
402
 
403
        @Transient
404
        public Integer getQuantidadeDiasAtendimento() {
405
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), getDataUltimaAlteracaoSituacao());
406
        }
407
 
408
        @Transient
409
        public String getImagemCronometroPedido() {
410
                Integer quantidadeDias = getQuantidadeDiasPedido();
411
                if (quantidadeDias < 15) {
412
                        return "cronometro_verde_sembg";
413
                }
414
                if (quantidadeDias < 30) {
415
                        return "cronometro_amarelo_sembg";
416
                }
417
                return "cronometro_vermelho_sembg";
418
        }
419
 
420
        @Transient
421
        public String getCorSituacaoPedido() {
422
                return TipoSituacaoPedido.parse(getTipoSituacao()).getCor();
423
        }
424
 
425
        @Transient
426
        public String getCorPedido() {
427
                Integer quantidadeDias = getQuantidadeDiasPedido();
428
                if (quantidadeDias < 15) {
429
                        return "green";
430
                }
431
                return "red";
432
        }
433
 
434
        @Transient
435
        public String getCorPedidoAtendimento() {
436
                Integer quantidadeDias = getQuantidadeDiasAtendimento();
437
                if (quantidadeDias < 15) {
438
                        return "green";
439
                }
440
                return "red";
441
        }
442
 
443
        @Transient
444
        public Double getValorTotalProdutos() {
445
                Double total = 0.0;
446
                if (VerificadorUtil.naoEstaNuloOuVazio(getProdutos())) {
447
                        for (PedidoProduto pedidoProduto : getProdutos()) {
448
                                if (VerificadorUtil.naoEstaNulo(pedidoProduto.getValor())) {
449
                                        total = total + (pedidoProduto.getValor() * pedidoProduto.getQuantidade());
450
                                }
451
                        }
452
                }
453
                return total;
454
        }
455
 
456
        @Transient
457
        public List<PedidoHistorico> getHistoricoOrdenado() {
458
                List<PedidoHistorico> historicoOrdenado = null;
459
                if (VerificadorUtil.naoEstaNulo(getHistorico())) {
460
                        historicoOrdenado = new ArrayList<PedidoHistorico>(getHistorico());
461
                        Collections.sort(historicoOrdenado, new Comparator<PedidoHistorico>() {
462
                                public int compare(PedidoHistorico p1, PedidoHistorico p2) {
463
                                        return p1.getDataHistorico().compareTo(p2.getDataHistorico());
464
                                };
465
                        });
466
                }
467
                return historicoOrdenado;
468
        }
469
        */
470
}