Subversion Repositories Integrator Subversion

Rev

Rev 182 | Details | Compare with Previous | Last modification | View Log | RSS feed

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