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.model.tipos.TipoDevolucao;
21
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoria;
22
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoriaVerificacao;
23
import br.com.ec.domain.model.tipos.TipoProduto;
24
import br.edu.cesmac.core.generic.identidade.Identidade;
25
import br.edu.cesmac.core.interfaces.Alterar;
26
import br.edu.cesmac.core.interfaces.Cadastrar;
27
import br.edu.cesmac.core.util.DataUtils;
28
import br.edu.cesmac.core.util.StringUtil;
29
import br.edu.cesmac.core.util.VerificadorUtil;
30
 
31
@Entity
32
@Table(name="sec_estoque_auditoria", schema="sc_sec")
33
public class EstoqueAuditoria implements Serializable, Identidade {
34
 
35
        private static final long serialVersionUID = 1L;
36
 
37
        private Long sequencial;
38
        private Usuario usuario;
39
        private Produto produto;
40
        private Loja loja;
41
        private Cliente cliente;
42
        private Integer quantidadeEstoqueAnterior;
43
        private Integer quantidadeEstoqueNovo;
44
        private String observacao;
45
        private String auditoria;
46
        private Date dataAtualizacao;
47
        private String tipoEstoqueAuditoria;
48
        private String tipoVerificacao;
49
        private Usuario usuarioVerificacao;
50
 
51
        private Long sequencialVenda;
52
        private Long sequencialPedido;
53
        private Pedido pedidoParaVincular;
54
        private Date dataVenda;
55
        private Loja lojaVenda;
56
        private String tipoDevolucao;
57
        private Double valorDevolvido;
58
        private String dadosBancarios;
59
        private String numeroNotaFiscal;
60
        private String numeroLote;
61
        private Boolean ehDevolucaoMesmoProduto;
62
 
63
        public EstoqueAuditoria() {
64
                setEhDevolucaoMesmoProduto(false);
65
                setValorDevolvido(new Double(0.0));
66
        }
67
 
68
        @Override
69
        @Transient
70
        public Object getId() {
71
                return this.getSequencial();
72
        }
73
        @Override
74
        public void setId(Object id) {
75
                this.sequencial = (Long) id;
76
        }
77
 
78
        @Id
79
        @GeneratedValue(strategy = GenerationType.IDENTITY)
80
        @Column(name="seq_estoque_auditoria", nullable=false)
81
        public Long getSequencial() {
82
                return sequencial;
83
        }
84
        public void setSequencial(Long sequencial) {
85
                this.sequencial = sequencial;
86
        }
87
 
88
        @ManyToOne
89
        @ForeignKey(name="fk_estoqueaudit_usuario")
90
        @JoinColumn(name = "seq_usuario", nullable=true)
91
        public Usuario getUsuario() {
92
                return usuario;
93
        }
94
        public void setUsuario(Usuario usuario) {
95
                this.usuario = usuario;
96
        }
97
 
98
        @ManyToOne
99
        @ForeignKey(name="fk_estoqueaudit_usuarioverificacao")
100
        @JoinColumn(name = "seq_usuario_verificacao", nullable=true)
101
        public Usuario getUsuarioVerificacao() {
102
                return usuarioVerificacao;
103
        }
104
        public void setUsuarioVerificacao(Usuario usuarioVerificacao) {
105
                this.usuarioVerificacao = usuarioVerificacao;
106
        }
107
 
108
        @ManyToOne
109
        @ForeignKey(name="fk_estoqueaudit_produto")
110
        @JoinColumn(name = "seq_produto", nullable=true)
111
        public Produto getProduto() {
112
                return produto;
113
        }
114
        public void setProduto(Produto produto) {
115
                this.produto = produto;
116
        }
117
 
118
        @ManyToOne
119
        @ForeignKey(name="fk_estoqueaudit_loja")
120
        @JoinColumn(name = "seq_loja", nullable=true)
121
        public Loja getLoja() {
122
                return loja;
123
        }
124
        public void setLoja(Loja loja) {
125
                this.loja = loja;
126
        }
127
 
128
        @ManyToOne
129
        @ForeignKey(name="fk_estoqueaudit_cliente")
130
        @JoinColumn(name = "seq_cliente", nullable=true)
131
        public Cliente getCliente() {
132
                return cliente;
133
        }
134
        public void setCliente(Cliente cliente) {
135
                this.cliente = cliente;
136
        }
137
 
138
        @Column(name="qtd_estoque_anterior")
139
        public Integer getQuantidadeEstoqueAnterior() {
140
                return quantidadeEstoqueAnterior;
141
        }
142
        public void setQuantidadeEstoqueAnterior(Integer quantidadeEstoqueAnterior) {
143
                this.quantidadeEstoqueAnterior = quantidadeEstoqueAnterior;
144
        }
145
 
146
        @Column(name="qtd_estoque_novo")
147
        public Integer getQuantidadeEstoqueNovo() {
148
                return quantidadeEstoqueNovo;
149
        }
150
        public void setQuantidadeEstoqueNovo(Integer quantidadeEstoqueNovo) {
151
                this.quantidadeEstoqueNovo = quantidadeEstoqueNovo;
152
        }
153
 
154
        @Column(name="dsc_observacao")
155
        @Size(max = 400, message = "Limite de caracteres ultrapassado: Observação")
156
        public String getObservacao() {
157
                return observacao;
158
        }
159
        public void setObservacao(String observacao) {
160
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
161
        }
162
 
163
        @Column(name="dsc_auditoria")
164
        @Size(max = 400, message = "Limite de caracteres ultrapassado: Descrição da Auditoria")
165
        public String getAuditoria() {
166
                return auditoria;
167
        }
168
        public void setAuditoria(String auditoria) {
169
                this.auditoria = StringUtil.setarUpperCaseComTrim(auditoria);
170
        }
171
 
172
        @NotNull(message="Obrigatório informar a data do ocorrido", groups={Cadastrar.class, Alterar.class})
173
        @Column(name="dth_atualizacao", nullable=false)
174
        public Date getDataAtualizacao() {
175
                return dataAtualizacao;
176
        }
177
        public void setDataAtualizacao(Date dataAtualizacao) {
178
                this.dataAtualizacao = dataAtualizacao;
179
        }
180
 
181
        @Column(name="tip_estoque_auditoria")
182
        public String getTipoEstoqueAuditoria() {
183
                return tipoEstoqueAuditoria;
184
        }
185
        public void setTipoEstoqueAuditoria(String tipoEstoqueAuditoria) {
186
                this.tipoEstoqueAuditoria = tipoEstoqueAuditoria;
187
        }
188
 
189
        @Column(name="tip_verificacao", nullable=false)
190
        public String getTipoVerificacao() {
191
                return tipoVerificacao;
192
        }
193
        public void setTipoVerificacao(String tipoVerificacao) {
194
                this.tipoVerificacao = tipoVerificacao;
195
        }
196
 
197
        @Transient
198
        public Long getSequencialVenda() {
199
                return sequencialVenda;
200
        }
201
        public void setSequencialVenda(Long sequencialVenda) {
202
                this.sequencialVenda = sequencialVenda;
203
        }
204
 
205
        @Transient
206
        public Long getSequencialPedido() {
207
                return sequencialPedido;
208
        }
209
        public void setSequencialPedido(Long sequencialPedido) {
210
                this.sequencialPedido = sequencialPedido;
211
        }
212
 
213
        @Transient
214
        public Pedido getPedidoParaVincular() {
215
                return pedidoParaVincular;
216
        }
217
        public void setPedidoParaVincular(Pedido pedidoParaVincular) {
218
                this.pedidoParaVincular = pedidoParaVincular;
219
        }
220
 
221
        @Transient
222
        public Date getDataVenda() {
223
                return dataVenda;
224
        }
225
        public void setDataVenda(Date dataVenda) {
226
                this.dataVenda = dataVenda;
227
        }
228
 
229
        @Transient
230
        public Loja getLojaVenda() {
231
                return lojaVenda;
232
        }
233
        public void setLojaVenda(Loja lojaVenda) {
234
                this.lojaVenda = lojaVenda;
235
        }
236
 
237
        @Transient
238
        public String getTipoDevolucao() {
239
                return tipoDevolucao;
240
        }
241
        public void setTipoDevolucao(String tipoDevolucao) {
242
                this.tipoDevolucao = tipoDevolucao;
243
        }
244
 
245
        @Transient
246
        public Double getValorDevolvido() {
247
                return valorDevolvido;
248
        }
249
        public void setValorDevolvido(Double valorDevolvido) {
250
                this.valorDevolvido = valorDevolvido;
251
        }
252
 
253
        @Transient
254
        public String getDadosBancarios() {
255
                return dadosBancarios;
256
        }
257
        public void setDadosBancarios(String dadosBancarios) {
258
                this.dadosBancarios = StringUtil.setarUpperCaseComTrim(dadosBancarios);
259
        }
260
 
261
        @Transient
262
        public String getNumeroNotaFiscal() {
263
                return numeroNotaFiscal;
264
        }
265
        public void setNumeroNotaFiscal(String numeroNotaFiscal) {
266
                this.numeroNotaFiscal = numeroNotaFiscal;
267
        }
268
 
269
        @Transient
270
        public String getNumeroLote() {
271
                return numeroLote;
272
        }
273
        public void setNumeroLote(String numeroLote) {
274
                this.numeroLote = numeroLote;
275
        }
276
 
277
        @Transient
278
        public Boolean getEhDevolucaoMesmoProduto() {
279
                return ehDevolucaoMesmoProduto;
280
        }
281
        public void setEhDevolucaoMesmoProduto(Boolean ehDevolucaoMesmoProduto) {
282
                this.ehDevolucaoMesmoProduto = ehDevolucaoMesmoProduto;
283
        }
284
 
285
        @Transient
286
        public Boolean aumentouEstoque() {
287
                if (VerificadorUtil.naoEstaNulo(getQuantidadeEstoqueAnterior()) && VerificadorUtil.naoEstaNulo(getQuantidadeEstoqueNovo())) {
288
                        return getQuantidadeEstoqueAnterior() < getQuantidadeEstoqueNovo();
289
                }
290
                return null;
291
        }
292
 
293
        @Transient
294
        public String getTipoEstoqueAuditoriaDescricao() {
295
                return VerificadorUtil.naoEstaNulo(getTipoEstoqueAuditoria()) ? TipoEstoqueAuditoria.parse(getTipoEstoqueAuditoria()).getDescricao() : "";
296
        }
297
 
298
        @Transient
299
        public Long getSequencialDaLoja() {
300
                return VerificadorUtil.naoEstaNulo(getLoja()) ? getLoja().getSequencial() : null;
301
        }
302
 
303
        @Transient
304
        public Boolean naoVerificado() {
305
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoVerificacao()) ? getTipoVerificacao().equals(TipoEstoqueAuditoriaVerificacao.NAO_VERIFICADO.getValor()) : false;
306
        }
307
 
308
        @Transient
309
        public Boolean verificadoSemPendencia() {
310
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoVerificacao()) ? getTipoVerificacao().equals(TipoEstoqueAuditoriaVerificacao.VERIFICADO_SEM_PENDENCIA.getValor()) : false;
311
        }
312
 
313
        @Transient
314
        public Boolean verificadoComPendencia() {
315
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoVerificacao()) ? getTipoVerificacao().equals(TipoEstoqueAuditoriaVerificacao.VERIFICADO_COM_PENDENCIA.getValor()) : false;
316
        }
317
 
318
        @Transient
319
        public Boolean ehTipoDevolucaoPorTransferencia() {
320
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoDevolucao()) ? getTipoDevolucao().equals(TipoDevolucao.TRANSFERENCIA.getValor()) : false;
321
        }
322
 
323
        @Transient
324
        public String nomeDoUsuario() {
325
                return VerificadorUtil.naoEstaNulo(getUsuario())? getUsuario().getNomeDaPessoa() : null;
326
        }
327
 
328
        @Transient
329
        public String nomeDoCliente() {
330
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getNome() : null;
331
        }
332
 
333
        @Transient
334
        public String cpfCnpjDoCliente() {
335
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getCpfCnpjFormatado() : null;
336
        }
337
 
338
        @Transient
339
        public Integer getQuantidadeDiasDaAtualizacao() {
340
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), getDataAtualizacao());
341
        }
342
 
343
        @Transient
344
        public String descricaoCompletaProduto() {
345
                StringBuilder descricaoCompleta = new StringBuilder();
346
                if (VerificadorUtil.naoEstaNulo(getProduto())) {
347
                        descricaoCompleta.append(getProduto().getCodigo());
348
                        descricaoCompleta.append(" - ");
349
                        if (this.getProduto().getTipo().equals(TipoProduto.CAPA.getValor())) {
350
                                descricaoCompleta.append("CAPA");
351
                        }
352
                        if (!this.getProduto().getTipo().equals(TipoProduto.ACESSORIO.getValor())) {
353
                                descricaoCompleta.append(" ");
354
                                descricaoCompleta.append(this.getProduto().getDescricaoDoModelo());
355
                        }
356
                        if (VerificadorUtil.naoEstaNuloOuVazio(this.getProduto().getEstilo())) {
357
                                descricaoCompleta.append(" ");
358
                                descricaoCompleta.append(this.getProduto().getDescricaoDoEstilo());
359
                        }
360
                        descricaoCompleta.append(" ");
361
                        if (this.getProduto().getDescricao().length() > 50) {
362
                                descricaoCompleta.append(this.getProduto().getDescricao().substring(0, 50));
363
                        } else {
364
                                descricaoCompleta.append(this.getProduto().getDescricao());
365
                        }
366
                        if (VerificadorUtil.naoEstaNuloOuVazio(this.getProduto().getCor())) {
367
                                descricaoCompleta.append(" (");
368
                                descricaoCompleta.append(this.getProduto().getDescricaoDaCor());
369
                                descricaoCompleta.append(")");
370
                        }
371
                }
372
                return descricaoCompleta.toString();
373
        }
374
 
375
        @Override
376
        public int hashCode() {
377
                final int prime = 31;
378
                int result = 1;
379
                result = prime * result
380
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
381
                return result;
382
        }
383
 
384
        @Override
385
        public boolean equals(Object obj) {
386
                if (this == obj)
387
                        return true;
388
                if (obj == null)
389
                        return false;
390
                if (getClass() != obj.getClass())
391
                        return false;
392
                EstoqueAuditoria other = (EstoqueAuditoria) obj;
393
                if (sequencial == null) {
394
                        if (other.sequencial != null)
395
                                return false;
396
                } else if (!sequencial.equals(other.sequencial))
397
                        return false;
398
                return true;
399
        }
400
 
401
        @Transient
402
        public String getDescricaoDaLoja() {
403
                return VerificadorUtil.naoEstaNuloOuVazio(getLoja())? getLoja().getDescricao() : "";
404
        }
405
 
406
}