Subversion Repositories Integrator Subversion

Rev

Details | 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.EmbeddedId;
8
import javax.persistence.Entity;
9
import javax.persistence.JoinColumn;
10
import javax.persistence.ManyToOne;
11
import javax.persistence.Table;
12
import javax.persistence.Transient;
13
 
14
import org.hibernate.annotations.ForeignKey;
15
 
16
import br.edu.cesmac.core.generic.identidade.Identidade;
17
import br.edu.cesmac.core.util.StringUtil;
18
import br.edu.cesmac.core.util.VerificadorUtil;
19
 
20
@Entity
21
@Table(name="sec_produto_loja", schema="sc_sec")
22
public class ProdutoLoja implements Serializable, Identidade {
23
 
24
        private static final long serialVersionUID = 1L;
25
 
26
        private ProdutoLojaId produtoLojaId;
27
        private Produto produto;
28
        private Loja loja;
29
        private Integer quantidadeEstoque;
30
        private Integer quantidadeEstoqueContagem;
31
        private Date dataContagem;
32
        private Date dataContagemPreparacao;
33
        private Usuario usuarioUltimaContagem;
34
        private Usuario usuarioUltimaContagemPreparacao;
35
        private String localizacao;
36
        private Boolean indicadorContagemSolicitada = false;
37
 
38
        public ProdutoLoja() {
39
                this.produtoLojaId = new ProdutoLojaId();
40
        }
41
 
42
        public ProdutoLoja(ProdutoLojaId produtoLojaId) {
43
                this.produtoLojaId = produtoLojaId;
44
        }
45
 
46
        public ProdutoLoja(Produto produto, Loja loja) {
47
                produtoLojaId = new ProdutoLojaId();
48
                setProduto(produto);
49
                setLoja(loja);
50
        }
51
 
52
        @Override
53
        @Transient
54
        public Object getId() {
55
                return getProdutoLojaId();
56
        }
57
        @Override
58
        public void setId(Object id) {
59
                this.produtoLojaId = (ProdutoLojaId) id;
60
        }
61
 
62
        @EmbeddedId
63
        public ProdutoLojaId getProdutoLojaId() {
64
                return produtoLojaId;
65
        }
66
        public void setProdutoLojaId(ProdutoLojaId produtoLojaId) {
67
                this.produtoLojaId = produtoLojaId;
68
        }
69
 
70
        @ManyToOne
71
        @ForeignKey(name="fk_produtoloja_produto")
72
        @JoinColumn(name = "seq_produto", insertable=false, updatable=false, nullable = false)
73
        public Produto getProduto() {
74
                return produto;
75
        }
76
        public void setProduto(Produto produto) {
77
                if (VerificadorUtil.naoEstaNulo(produto)) {
78
                        produtoLojaId.setSequencialProduto(produto.getSequencial());
79
                }
80
                this.produto = produto;
81
        }
82
 
83
        @ManyToOne
84
        @ForeignKey(name="fk_produtoloja_loja")
85
        @JoinColumn(name = "seq_loja", insertable=false, updatable=false, nullable = false)
86
        public Loja getLoja() {
87
                return loja;
88
        }
89
        public void setLoja(Loja loja) {
90
                if (VerificadorUtil.naoEstaNulo(loja)) {
91
                        produtoLojaId.setSequencialLoja(loja.getSequencial());
92
                }
93
                this.loja = loja;
94
        }
95
 
96
        @Column(name="qtd_estoque")
97
        public Integer getQuantidadeEstoque() {
98
                return quantidadeEstoque;
99
        }
100
        public void setQuantidadeEstoque(Integer quantidadeEstoque) {
101
                this.quantidadeEstoque = quantidadeEstoque;
102
        }
103
 
104
        @Column(name="qtd_estoque_contagem")
105
        public Integer getQuantidadeEstoqueContagem() {
106
                return quantidadeEstoqueContagem;
107
        }
108
        public void setQuantidadeEstoqueContagem(Integer quantidadeEstoqueContagem) {
109
                this.quantidadeEstoqueContagem = quantidadeEstoqueContagem;
110
        }
111
 
112
        @Column(name="dat_contagem")
113
        public Date getDataContagem() {
114
                return dataContagem;
115
        }
116
        public void setDataContagem(Date dataContagem) {
117
                this.dataContagem = dataContagem;
118
        }
119
 
120
        @Column(name="dat_contagem_preparacao")
121
        public Date getDataContagemPreparacao() {
122
                return dataContagemPreparacao;
123
        }
124
        public void setDataContagemPreparacao(Date dataContagemPreparacao) {
125
                this.dataContagemPreparacao = dataContagemPreparacao;
126
        }
127
 
128
        @ManyToOne
129
        @ForeignKey(name="fk_produtoloja_usuario")
130
        @JoinColumn(name = "seq_usuario_contagem", nullable = false)
131
        public Usuario getUsuarioUltimaContagem() {
132
                return usuarioUltimaContagem;
133
        }
134
        public void setUsuarioUltimaContagem(Usuario usuarioUltimaContagem) {
135
                this.usuarioUltimaContagem = usuarioUltimaContagem;
136
        }
137
 
138
        @ManyToOne
139
        @ForeignKey(name="fk_produtoloja_usuariopreparacao")
140
        @JoinColumn(name = "seq_usuario_contagem_preparacao", nullable = false)
141
        public Usuario getUsuarioUltimaContagemPreparacao() {
142
                return usuarioUltimaContagemPreparacao;
143
        }
144
        public void setUsuarioUltimaContagemPreparacao(Usuario usuarioUltimaContagemPreparacao) {
145
                this.usuarioUltimaContagemPreparacao = usuarioUltimaContagemPreparacao;
146
        }
147
 
148
        @Column(name="dsc_localizacao")
149
        public String getLocalizacao() {
150
                return localizacao;
151
        }
152
        public void setLocalizacao(String localizacao) {
153
                this.localizacao = StringUtil.setarUpperCase(localizacao);
154
        }
155
 
156
        @Column(name="ind_contagem_solicitada")
157
        public Boolean getIndicadorContagemSolicitada() {
158
                return indicadorContagemSolicitada;
159
        }
160
        public void setIndicadorContagemSolicitada(Boolean indicadorContagemSolicitada) {
161
                this.indicadorContagemSolicitada = indicadorContagemSolicitada;
162
        }
163
 
164
        @Transient
165
        public Long getSequencialDoProduto() {
166
                return VerificadorUtil.naoEstaNulo(produto)? produto.getSequencial() : null;
167
        }
168
 
169
        @Transient
170
        public Long getSequencialDaLoja() {
171
                return VerificadorUtil.naoEstaNulo(loja)? loja.getSequencial() : null;
172
        }
173
 
174
        @Transient
175
        public Modelo getModeloDoProduto() {
176
                return VerificadorUtil.naoEstaNulo(produto)? VerificadorUtil.naoEstaNulo(produto.getModelo())? produto.getModelo() : null : null;
177
        }
178
 
179
        @Transient
180
        public String getNomeDoUsuarioUltimaContagem() {
181
                return VerificadorUtil.naoEstaNulo(getUsuarioUltimaContagem())? getUsuarioUltimaContagem().getNomeDaPessoa() : null;
182
        }
183
 
184
        @Transient
185
        public String getNomeDoUsuarioUltimaContagemPreparacao() {
186
                return VerificadorUtil.naoEstaNulo(getUsuarioUltimaContagemPreparacao())? getUsuarioUltimaContagemPreparacao().getNomeDaPessoa() : null;
187
        }
188
 
189
        @Transient
190
        public Boolean contagemFoiIniciada() {
191
                return getDataContagemPreparacao().after(getDataContagem());
192
        }
193
 
194
        @Override
195
        public int hashCode() {
196
                final int prime = 31;
197
                int result = 1;
198
                result = prime * result + ((produtoLojaId == null) ? 0 : produtoLojaId.hashCode());
199
                return result;
200
        }
201
 
202
        @Override
203
        public boolean equals(Object obj) {
204
                if (this == obj)
205
                        return true;
206
                if (obj == null)
207
                        return false;
208
                if (getClass() != obj.getClass())
209
                        return false;
210
                ProdutoLoja other = (ProdutoLoja) obj;
211
                if (produtoLojaId == null) {
212
                        if (other.produtoLojaId != null)
213
                                return false;
214
                } else if (!produtoLojaId.equals(other.produtoLojaId))
215
                        return false;
216
                return true;
217
        }
218
 
219
}