Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 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.persistence.Transient;
16
import javax.validation.constraints.NotNull;
17
import javax.validation.constraints.Size;
18
 
19
import org.hibernate.annotations.ForeignKey;
20
 
21
import br.com.ec.domain.dto.ParametrosVendaVivoDTO;
22
import br.com.ec.domain.model.tipos.TipoStatusDigitalizacao;
23
import br.edu.cesmac.core.interfaces.Alterar;
24
import br.edu.cesmac.core.interfaces.Cadastrar;
25
import br.edu.cesmac.core.util.StringUtil;
26
import br.edu.cesmac.core.util.VerificadorUtil;
27
 
28
@Entity
29
@Table(name="sec_venda_vivo", schema="sc_sec")
30
public class VendaVivo implements Serializable, Comparable<VendaVivo> {
31
 
32
        private static final long serialVersionUID = 1L;
33
 
34
        private Long sequencial;
35
        private LinhaVivo linhaVivo = new LinhaVivo();
36
        private Loja loja;
37
        private Vendedor vendedor;
38
        private ProdutoVivo produtoVivo;
39
        private ProdutoVivo produtoVivoAnterior;
40
        private Date dataVenda;
41
        private Double valorAssinatura;
42
        private Double valorComissao;
43
        private Double valorRecebido;
44
        private Date dataValidacao;
45
        private Date dataRecebido;
46
        private Date dataBaixa;
47
        private Date dataDigitalizacao;
48
        private String protocoloGED;
49
        private String tipoStatusDigitalizacao; // Conferindo, Com pendências, Em contestação, Sem pendências
50
        private Date dataStatus;
51
        private String observacao;
52
        private Boolean indicadorMigracao;
53
        private Boolean indicadorPortabilidade;
54
        private Boolean indicadorCadastradoVivoGo;
55
 
56
        private String justificativaParaExcluir;
57
 
58
        public VendaVivo() {}
59
 
60
        public VendaVivo(Loja loja) {
61
                this.loja = loja;
62
        }
63
 
64
        public VendaVivo(ParametrosVendaVivoDTO parametrosVenda) {
65
                this.linhaVivo.setNumero(parametrosVenda.getNumero());
66
                this.loja = parametrosVenda.getLoja();
67
                this.vendedor = parametrosVenda.getVendedor();
68
                this.observacao = StringUtil.setarUpperCaseComTrim(parametrosVenda.getObservacao());
69
                this.produtoVivo = parametrosVenda.getProdutoVivo();
70
                this.produtoVivoAnterior = parametrosVenda.getProdutoVivoAnterior();
71
        }
72
 
73
        @Id
74
        @SequenceGenerator(name = "sq_vendavivo")
75
        @GeneratedValue(strategy = GenerationType.IDENTITY)
76
        @Column(name="seq_venda_vivo", nullable=false)
77
        public Long getSequencial() {
78
                return sequencial;
79
        }
80
        public void setSequencial(Long sequencial) {
81
                this.sequencial = sequencial;
82
        }
83
 
84
        @ManyToOne
85
        @ForeignKey(name="fk_vendavivo_linhavivo")
86
        @NotNull(message = "Informe a linha", groups = {Cadastrar.class, Alterar.class})
87
        @JoinColumn(name = "seq_linha_vivo", nullable = false)
88
        public LinhaVivo getLinhaVivo() {
89
                return linhaVivo;
90
        }
91
        public void setLinhaVivo(LinhaVivo linhaVivo) {
92
                this.linhaVivo = linhaVivo;
93
        }
94
 
95
        @ManyToOne
96
        @ForeignKey(name="fk_vendavivo_loja")
97
        @NotNull(message = "Informe a loja", groups = {Cadastrar.class, Alterar.class})
98
        @JoinColumn(name = "seq_loja", nullable = false)
99
        public Loja getLoja() {
100
                return loja;
101
        }
102
        public void setLoja(Loja loja) {
103
                this.loja = loja;
104
        }
105
 
106
        @ManyToOne
107
        @ForeignKey(name="fk_vendavivo_vendedor")
108
        @NotNull(message = "Informe o vendedor", groups = {Cadastrar.class, Alterar.class})
109
        @JoinColumn(name = "seq_vendedor", nullable = true)
110
        public Vendedor getVendedor() {
111
                return vendedor;
112
        }
113
        public void setVendedor(Vendedor vendedor) {
114
                this.vendedor = vendedor;
115
        }
116
 
117
        @ManyToOne
118
        @ForeignKey(name="fk_vendavivo_produtovivo")
119
        @NotNull(message = "Informe o produto", groups = {Cadastrar.class, Alterar.class})
120
        @JoinColumn(name = "seq_produto_vivo", nullable = true)
121
        public ProdutoVivo getProdutoVivo() {
122
                return produtoVivo;
123
        }
124
        public void setProdutoVivo(ProdutoVivo produtoVivo) {
125
                this.produtoVivo = produtoVivo;
126
        }
127
 
128
        @ManyToOne
129
        @ForeignKey(name="fk_vendavivo_produtovivoanterior")
130
        @JoinColumn(name = "seq_produto_vivo_anterior", nullable = true)
131
        public ProdutoVivo getProdutoVivoAnterior() {
132
                return produtoVivoAnterior;
133
        }
134
        public void setProdutoVivoAnterior(ProdutoVivo produtoVivoAnterior) {
135
                this.produtoVivoAnterior = produtoVivoAnterior;
136
        }
137
 
138
        @Column(name="dth_venda")
139
        @NotNull(message = "Informe a data da venda", groups = {Cadastrar.class, Alterar.class})
140
        public Date getDataVenda() {
141
                return dataVenda;
142
        }
143
        public void setDataVenda(Date dataVenda) {
144
                this.dataVenda = dataVenda;
145
        }
146
 
147
        @Column(name="val_assinatura")
148
        public Double getValorAssinatura() {
149
                return valorAssinatura;
150
        }
151
        public void setValorAssinatura(Double valorAssinatura) {
152
                this.valorAssinatura = valorAssinatura;
153
        }
154
 
155
        @Column(name="val_comissao")
156
        public Double getValorComissao() {
157
                return valorComissao;
158
        }
159
        public void setValorComissao(Double valorComissao) {
160
                this.valorComissao = valorComissao;
161
        }
162
 
163
        @Column(name="val_recebido")
164
        public Double getValorRecebido() {
165
                return valorRecebido;
166
        }
167
        public void setValorRecebido(Double valorRecebido) {
168
                this.valorRecebido = valorRecebido;
169
        }
170
 
171
        @Column(name="dat_validacao")
172
        public Date getDataValidacao() {
173
                return dataValidacao;
174
        }
175
        public void setDataValidacao(Date dataValidacao) {
176
                this.dataValidacao = dataValidacao;
177
        }
178
 
179
        @Column(name="dat_recebido")
180
        public Date getDataRecebido() {
181
                return dataRecebido;
182
        }
183
        public void setDataRecebido(Date dataRecebido) {
184
                this.dataRecebido = dataRecebido;
185
        }
186
 
187
        @Column(name="dat_baixa")
188
        public Date getDataBaixa() {
189
                return dataBaixa;
190
        }
191
        public void setDataBaixa(Date dataBaixa) {
192
                this.dataBaixa = dataBaixa;
193
        }
194
 
195
        @Column(name="dat_digitalizacao", nullable=false)
196
        public Date getDataDigitalizacao() {
197
                return dataDigitalizacao;
198
        }
199
        public void setDataDigitalizacao(Date dataDigitalizacao) {
200
                this.dataDigitalizacao = dataDigitalizacao;
201
        }
202
 
203
        @Column(name="dsc_protocolo_ged", nullable=false)
204
        @Size(max = 10, message = "Limite de caracteres ultrapassado: Protocolo GED")
205
        public String getProtocoloGED() {
206
                return protocoloGED;
207
        }
208
        public void setProtocoloGED(String protocoloGED) {
209
                this.protocoloGED = protocoloGED;
210
        }
211
 
212
        @Column(name="tip_status", nullable=false)
213
        public String getTipoStatusDigitalizacao() {
214
                return tipoStatusDigitalizacao;
215
        }
216
        public void setTipoStatusDigitalizacao(String tipoStatusDigitalizacao) {
217
                this.tipoStatusDigitalizacao = tipoStatusDigitalizacao;
218
        }
219
 
220
        @Column(name="dth_status", nullable=false)
221
        public Date getDataStatus() {
222
                return dataStatus;
223
        }
224
        public void setDataStatus(Date dataStatus) {
225
                this.dataStatus = dataStatus;
226
        }
227
 
228
        @Column(name="dsc_observacao")
229
        @Size(max = 500, message = "Limite de caracteres ultrapassado: Observação")
230
        public String getObservacao() {
231
                return observacao;
232
        }
233
        public void setObservacao(String observacao) {
234
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
235
        }
236
 
237
        @Column(name="ind_migracao")
238
        @NotNull(message = "Informe o indicador de migração", groups = {Cadastrar.class, Alterar.class})
239
        public Boolean getIndicadorMigracao() {
240
                return indicadorMigracao;
241
        }
242
        public void setIndicadorMigracao(Boolean indicadorMigracao) {
243
                this.indicadorMigracao = indicadorMigracao;
244
        }
245
 
246
        @Column(name="ind_portabilidade")
247
        @NotNull(message = "Informe o indicador de portabilidade", groups = {Cadastrar.class, Alterar.class})
248
        public Boolean getIndicadorPortabilidade() {
249
                return indicadorPortabilidade;
250
        }
251
        public void setIndicadorPortabilidade(Boolean indicadorPortabilidade) {
252
                this.indicadorPortabilidade = indicadorPortabilidade;
253
        }
254
 
255
        @Column(name="ind_cadastrovivogo")
256
        @NotNull(message = "Informe o indicador de cadastro Vivo Go", groups = {Cadastrar.class, Alterar.class})
257
        public Boolean getIndicadorCadastradoVivoGo() {
258
                return indicadorCadastradoVivoGo;
259
        }
260
        public void setIndicadorCadastradoVivoGo(Boolean indicadorCadastradoVivoGo) {
261
                this.indicadorCadastradoVivoGo = indicadorCadastradoVivoGo;
262
        }
263
 
264
        @Transient
265
        public String getJustificativaParaExcluir() {
266
                return justificativaParaExcluir;
267
        }
268
        public void setJustificativaParaExcluir(String justificativaParaExcluir) {
269
                this.justificativaParaExcluir = StringUtil.setarUpperCaseComTrim(justificativaParaExcluir);
270
        }
271
 
272
        @Transient
273
        public String getNumeroDaLinha() {
274
                return VerificadorUtil.naoEstaNulo(linhaVivo)? linhaVivo.getNumero() : null;
275
        }
276
 
277
        @Transient
278
        public void setNumeroDaLinha(String numero) {
279
                if (VerificadorUtil.naoEstaNulo(linhaVivo)) {
280
                        linhaVivo.setNumero(numero);
281
                }
282
        }
283
 
284
        @Transient
285
        public Cliente getClienteDaLinha() {
286
                return VerificadorUtil.naoEstaNulo(linhaVivo)? linhaVivo.getCliente() : null;
287
        }
288
 
289
        @Transient
290
        public String getNomeDoClienteDaLinha() {
291
                return VerificadorUtil.naoEstaNulo(getClienteDaLinha())? getClienteDaLinha().getNome() : "";
292
        }
293
 
294
        @Transient
295
        public String getCpfDoClienteDaLinha() {
296
                return VerificadorUtil.naoEstaNulo(getClienteDaLinha())? getClienteDaLinha().getCpfCnpjFormatado() : "";
297
        }
298
 
299
        @Transient
300
        public Long getSequencialDaLoja() {
301
                return VerificadorUtil.naoEstaNulo(loja)? loja.getSequencial() : null;
302
        }
303
 
304
        @Transient
305
        public Long getSequencialDoVendedor() {
306
                return VerificadorUtil.naoEstaNulo(vendedor)? vendedor.getSequencial() : null;
307
        }
308
 
309
        @Transient
310
        public String getNomeDoVendedor() {
311
                return VerificadorUtil.naoEstaNulo(vendedor)? vendedor.getNomeDaPessoa() : null;
312
        }
313
 
314
        @Override
315
        public int hashCode() {
316
                final int prime = 31;
317
                int result = 1;
318
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
319
                return result;
320
        }
321
 
322
        @Override
323
        public boolean equals(Object obj) {
324
                if (this == obj)
325
                        return true;
326
                if (obj == null)
327
                        return false;
328
                if (getClass() != obj.getClass())
329
                        return false;
330
                VendaVivo other = (VendaVivo) obj;
331
                if (sequencial == null) {
332
                        if (other.sequencial != null)
333
                                return false;
334
                } else if (!sequencial.equals(other.sequencial))
335
                        return false;
336
                return true;
337
        }
338
 
339
        @Override
340
        public int compareTo(VendaVivo vendaVivo) {
341
                return vendaVivo.getDataVenda().compareTo(this.dataVenda);
342
        }
343
 
344
        @Transient
345
        public Long getSequencialDaLinha() {
346
                return VerificadorUtil.naoEstaNulo(getLinhaVivo())? getLinhaVivo().getSequencial() : null;
347
        }
348
 
349
        @Transient
350
        public String getTipoStatusDigitalizacaoDescricao() {
351
                return VerificadorUtil.naoEstaNulo(getTipoStatusDigitalizacao()) ? TipoStatusDigitalizacao.parse(getTipoStatusDigitalizacao()).getDescricao() : "";
352
        }
353
 
354
        @Transient
355
        public Boolean naoVerificado() {
356
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.CONFERINDO.getValor()) : false;
357
        }
358
 
359
        @Transient
360
        public Boolean statusConfirmado() {
361
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.CONFIRMADO.getValor()) : false;
362
        }
363
 
364
        @Transient
365
        public Boolean emContestacao() {
366
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.EM_CONTESTACAO.getValor()) : false;
367
        }
368
 
369
        @Transient
370
        public Boolean verificadoComPendencia() {
371
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.VERIFICADO_COM_PENDENCIAS.getValor()) : false;
372
        }
373
 
374
        @Transient
375
        public Boolean confirmadoSemGED() {
376
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.CONFIRMADO_SEM_GED.getValor()) : false;
377
        }
378
 
379
        @Transient
380
        public Boolean cancelado() {
381
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoStatusDigitalizacao()) ? getTipoStatusDigitalizacao().equals(TipoStatusDigitalizacao.CANCELADO.getValor()) : false;
382
        }
383
 
384
}