Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
507 blopes 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
 
5
import javax.persistence.Column;
6
import javax.persistence.EmbeddedId;
7
import javax.persistence.Entity;
8
import javax.persistence.JoinColumn;
9
import javax.persistence.ManyToOne;
10
import javax.persistence.MapsId;
11
import javax.persistence.Table;
12
import javax.persistence.Transient;
13
import javax.validation.constraints.NotNull;
14
import javax.validation.constraints.Size;
15
 
16
import org.hibernate.annotations.ForeignKey;
17
 
18
import br.com.ec.core.generic.identidade.Identidade;
19
import br.com.ec.core.interfaces.Alterar;
20
import br.com.ec.core.interfaces.Cadastrar;
21
import br.com.ec.core.util.VerificadorUtil;
520 blopes 22
import br.com.ec.domain.dto.TransferenciaProdutoDTO;
507 blopes 23
 
24
@Entity
25
@Table(name="sec_transferencia_produto", schema="sc_sec")
26
public class TransferenciaProduto implements Serializable, Identidade {
27
 
28
        private static final long serialVersionUID = 1L;
29
 
30
        private TransferenciaProdutoId transferenciaProdutoId;
31
        private Transferencia transferencia;
32
        private Produto produto;
33
        private Usuario usuarioSaida;
34
        private Usuario usuarioEntrada;
35
        private Integer quantidadeTransferir;
36
        private Boolean indicadorRecebido;
37
        private String observacao;
38
        private Boolean indicadorAlterarEstoque;
39
 
40
        public TransferenciaProduto() {
41
                this.indicadorAlterarEstoque = true;
42
                this.transferenciaProdutoId = new TransferenciaProdutoId();
43
        }
44
 
45
        public TransferenciaProduto(TransferenciaProdutoId transferenciaProdutoId) {
46
                this.indicadorAlterarEstoque = true;
47
                this.transferenciaProdutoId = transferenciaProdutoId;
48
        }
49
 
50
        public TransferenciaProduto(Produto produto, Loja loja) {
51
                this.indicadorAlterarEstoque = true;
520 blopes 52
                this.transferenciaProdutoId = new TransferenciaProdutoId();
507 blopes 53
                setTransferencia(transferencia);
54
                setProduto(produto);
55
        }
56
 
57
        public TransferenciaProduto(Long sequencialProduto, Long sequencialTransferencia) {
58
                this.indicadorAlterarEstoque = true;
520 blopes 59
                this.transferenciaProdutoId = new TransferenciaProdutoId();
60
                this.transferenciaProdutoId.setSequencialProduto(sequencialProduto);
61
                this.transferenciaProdutoId.setSequencialTransferencia(sequencialTransferencia);
507 blopes 62
        }
63
 
520 blopes 64
        public TransferenciaProduto(TransferenciaProdutoDTO transferenciaProdutoDTO) {
65
                this.transferenciaProdutoId = new TransferenciaProdutoId();
66
                this.transferenciaProdutoId.setSequencialProduto(transferenciaProdutoDTO.getSequencialDoProduto());
67
                this.transferenciaProdutoId.setSequencialTransferencia(transferenciaProdutoDTO.getSequencialDaTransferencia());
68
                this.transferencia = new Transferencia(transferenciaProdutoDTO.getTransferenciaDTO());
69
                this.produto = new Produto(transferenciaProdutoDTO.getSequencialDoProduto());
70
                this.quantidadeTransferir = transferenciaProdutoDTO.getQuantidadeTransferir();
71
                this.indicadorRecebido = transferenciaProdutoDTO.getIndicadorRecebido();
72
                this.indicadorAlterarEstoque = transferenciaProdutoDTO.getIndicadorAlterarEstoque();
73
                if (VerificadorUtil.naoEstaNulo(transferenciaProdutoDTO.getUsuarioSaidaDTO())) {
74
                        this.usuarioSaida = new Usuario(transferenciaProdutoDTO.getUsuarioSaidaDTO());
75
                }
76
                if (VerificadorUtil.naoEstaNulo(transferenciaProdutoDTO.getUsuarioEntradaDTO())) {
77
                        this.usuarioEntrada = new Usuario(transferenciaProdutoDTO.getUsuarioEntradaDTO());
78
                }
79
        }
80
 
507 blopes 81
        @Override
82
        @Transient
83
        public Object getId() {
84
                return getTransferenciaProdutoId();
85
        }
86
        @Override
87
        public void setId(Object id) {
88
                this.transferenciaProdutoId = (TransferenciaProdutoId) id;
89
        }
90
 
91
        @EmbeddedId
92
        public TransferenciaProdutoId getTransferenciaProdutoId() {
93
                return transferenciaProdutoId;
94
        }
95
        public void setTransferenciaProdutoId(TransferenciaProdutoId transferenciaProdutoId) {
96
                this.transferenciaProdutoId = transferenciaProdutoId;
97
        }
98
 
99
        @ManyToOne
100
        @ForeignKey(name="fk_transfproduto_transferencia")
101
        @MapsId(value="sequencialTransferencia")
102
        @JoinColumn(name = "seq_transferencia", referencedColumnName="seq_transferencia", insertable=false, updatable=false, nullable = false)
103
        public Transferencia getTransferencia() {
104
                return transferencia;
105
        }
106
        public void setTransferencia(Transferencia transferencia) {
107
                if (VerificadorUtil.naoEstaNulo(transferencia)) {
108
                        transferenciaProdutoId.setSequencialTransferencia(transferencia.getSequencial());
109
                }
110
                this.transferencia = transferencia;
111
        }
112
 
113
        @ManyToOne
114
        @ForeignKey(name="fk_transfproduto_produto")
115
        @JoinColumn(name = "seq_produto", insertable=false, updatable=false, nullable = false)
116
        public Produto getProduto() {
117
                return produto;
118
        }
119
        public void setProduto(Produto produto) {
120
                if (VerificadorUtil.naoEstaNulo(produto)) {
121
                        transferenciaProdutoId.setSequencialProduto(produto.getSequencial());
122
                }
123
                this.produto = produto;
124
        }
125
 
126
        @ManyToOne
127
        @ForeignKey(name="fk_transfproduto_usuairo_saida")
128
        @JoinColumn(name = "seq_usuario_saida", nullable = true)
129
        public Usuario getUsuarioSaida() {
130
                return usuarioSaida;
131
        }
132
        public void setUsuarioSaida(Usuario usuarioSaida) {
133
                this.usuarioSaida = usuarioSaida;
134
        }
135
 
136
        @ManyToOne
137
        @ForeignKey(name="fk_transfproduto_usuairo_entrada")
138
        @JoinColumn(name = "seq_usuario_entrada", nullable = true)
139
        public Usuario getUsuarioEntrada() {
140
                return usuarioEntrada;
141
        }
142
        public void setUsuarioEntrada(Usuario usuarioEntrada) {
143
                this.usuarioEntrada = usuarioEntrada;
144
        }
145
 
146
        @Column(name="qtd_transferir")
147
        @NotNull(message = "Parâmetro obrigatório não preenchido: Quantidade para transferência", groups = {Cadastrar.class, Alterar.class})
148
        public Integer getQuantidadeTransferir() {
149
                return quantidadeTransferir;
150
        }
151
        public void setQuantidadeTransferir(Integer quantidadeTransferir) {
152
                this.quantidadeTransferir = quantidadeTransferir;
153
        }
154
 
155
        @Column(name="ind_recebido")
156
        @NotNull(message = "Parâmetro obrigatório não preenchido: Indicador de Recebido", groups = {Cadastrar.class, Alterar.class})
157
        public Boolean getIndicadorRecebido() {
158
                return indicadorRecebido;
159
        }
160
        public void setIndicadorRecebido(Boolean indicadorRecebido) {
161
                this.indicadorRecebido = indicadorRecebido;
162
        }
163
 
164
        @Column(name="dsc_observacao")
165
        @Size(max = 200, message = "Limite de caracteres ultrapassado: Observação")
166
        public String getObservacao() {
167
                return observacao;
168
        }
169
        public void setObservacao(String observacao) {
170
                this.observacao = observacao;
171
        }
172
 
173
        @Column(name="ind_alterar_estoque")
174
        public Boolean getIndicadorAlterarEstoque() {
175
                return indicadorAlterarEstoque;
176
        }
177
        public void setIndicadorAlterarEstoque(Boolean indicadorAlterarEstoque) {
178
                this.indicadorAlterarEstoque = indicadorAlterarEstoque;
179
        }
180
 
181
        @Transient
182
        public Long getSequencialDoTransferencia() {
183
                return VerificadorUtil.naoEstaNulo(transferencia)? transferencia.getSequencial() : null;
184
        }
185
 
186
        @Transient
187
        public Long getSequencialDoProduto() {
188
                return VerificadorUtil.naoEstaNulo(produto)? produto.getSequencial() : null;
189
        }
190
 
191
        @Override
192
        public int hashCode() {
193
                final int prime = 31;
194
                int result = 1;
195
                result = prime * result + ((transferenciaProdutoId == null) ? 0 : transferenciaProdutoId.hashCode());
196
                return result;
197
        }
198
 
199
        @Override
200
        public boolean equals(Object obj) {
201
                if (this == obj)
202
                        return true;
203
                if (obj == null)
204
                        return false;
205
                if (getClass() != obj.getClass())
206
                        return false;
207
                TransferenciaProduto other = (TransferenciaProduto) obj;
208
                if (transferenciaProdutoId == null) {
209
                        if (other.transferenciaProdutoId != null)
210
                                return false;
211
                } else if (!transferenciaProdutoId.equals(other.transferenciaProdutoId))
212
                        return false;
213
                return true;
214
        }
215
 
216
}