Subversion Repositories Integrator Subversion

Rev

Rev 106 | Rev 231 | Go to most recent revision | Details | Compare with Previous | 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.ArrayList;
5
import java.util.Collections;
6
import java.util.Comparator;
7
import java.util.Date;
8
import java.util.List;
9
 
10
import javax.persistence.CascadeType;
11
import javax.persistence.Column;
12
import javax.persistence.Entity;
13
import javax.persistence.GeneratedValue;
14
import javax.persistence.GenerationType;
15
import javax.persistence.Id;
16
import javax.persistence.JoinColumn;
17
import javax.persistence.ManyToOne;
18
import javax.persistence.OneToMany;
19
import javax.persistence.SequenceGenerator;
20
import javax.persistence.Table;
21
import javax.persistence.Transient;
22
import javax.validation.constraints.NotNull;
23
 
24
import org.hibernate.annotations.ForeignKey;
25
 
195 espaco 26
import br.com.ec.core.generic.identidade.Identidade;
27
import br.com.ec.core.interfaces.Alterar;
28
import br.com.ec.core.interfaces.Cadastrar;
29
import br.com.ec.core.util.VerificadorUtil;
106 espaco 30
import br.com.ec.domain.dto.TransferenciaProdutoDTO;
31
 
32
@Entity
33
@Table(name="sec_transferencia", schema="sc_sec")
34
public class Transferencia implements Serializable, Identidade {
35
 
36
        private static final long serialVersionUID = 1L;
37
 
38
        private Long sequencial;
39
        private Loja lojaSaida;
40
        private Loja lojaEntrada;
41
        private Date dataSolicitacao;
42
        private Boolean conferido;
43
        private Date dataFinalizacao;
44
        private NotaFiscal notaFiscalRemessa;
45
 
46
        private List<TransferenciaProduto> listaProdutos;
47
 
48
        private List<TransferenciaProdutoDTO> produtosDTO;
49
 
50
        @Override
51
        @Transient
52
        public Object getId() {
53
                return this.getSequencial();
54
        }
55
        @Override
56
        public void setId(Object id) {
57
                this.sequencial = (Long) id;
58
        }
59
 
60
        @Id
61
        @SequenceGenerator(name = "sq_transferencia")
62
        @GeneratedValue(strategy = GenerationType.IDENTITY)
63
        @Column(name="seq_transferencia", nullable=false)
64
        public Long getSequencial() {
65
                return sequencial;
66
        }
67
        public void setSequencial(Long sequencial) {
68
                this.sequencial = sequencial;
69
        }
70
 
71
        @ManyToOne
72
        @ForeignKey(name="fk_transferencia_loja_saida")
73
        @JoinColumn(name = "seq_loja_saida", nullable = false)
74
        @NotNull(message = "Parâmetro obrigatório não preenchido: Loja de saída", groups = {Cadastrar.class, Alterar.class})
75
        public Loja getLojaSaida() {
76
                return lojaSaida;
77
        }
78
        public void setLojaSaida(Loja lojaSaida) {
79
                this.lojaSaida = lojaSaida;
80
        }
81
 
82
        @ManyToOne
83
        @ForeignKey(name="fk_transferencia_loja_entrada")
84
        @JoinColumn(name = "seq_loja_entrada", nullable = false)
85
        @NotNull(message = "Parâmetro obrigatório não preenchido: Loja de destino", groups = {Cadastrar.class, Alterar.class})
86
        public Loja getLojaEntrada() {
87
                return lojaEntrada;
88
        }
89
        public void setLojaEntrada(Loja lojaEntrada) {
90
                this.lojaEntrada = lojaEntrada;
91
        }
92
 
93
        @NotNull(message = "Parâmetro obrigatório não preenchido: Data da Solicitação", groups = {Cadastrar.class, Alterar.class})
94
        @Column(name="dat_solicitacao")
95
        public Date getDataSolicitacao() {
96
                return dataSolicitacao;
97
        }
98
        public void setDataSolicitacao(Date dataSolicitacao) {
99
                this.dataSolicitacao = dataSolicitacao;
100
        }
101
 
102
        @NotNull(message = "Parâmetro obrigatório não preenchido: Transferência conferida", groups = {Cadastrar.class, Alterar.class})
103
        @Column(name="ind_conferido")
104
        public Boolean getConferido() {
105
                return conferido;
106
        }
107
        public void setConferido(Boolean conferido) {
108
                this.conferido = conferido;
109
        }
110
 
111
        @Column(name="dat_finalizacao")
112
        public Date getDataFinalizacao() {
113
                return dataFinalizacao;
114
        }
115
        public void setDataFinalizacao(Date dataFinalizacao) {
116
                this.dataFinalizacao = dataFinalizacao;
117
        }
118
 
119
        @ManyToOne
120
        @ForeignKey(name="fk_transferencia_notafiscalremessa")
121
        @JoinColumn(name = "seq_nota_fiscal")
122
        public NotaFiscal getNotaFiscalRemessa() {
123
                return notaFiscalRemessa;
124
        }
125
        public void setNotaFiscalRemessa(NotaFiscal notaFiscalRemessa) {
126
                this.notaFiscalRemessa = notaFiscalRemessa;
127
        }
128
 
129
        @OneToMany(mappedBy="transferencia", cascade=CascadeType.ALL, orphanRemoval=true)
130
        public List<TransferenciaProduto> getListaProdutos() {
131
                return listaProdutos;
132
        }
133
        public void setListaProdutos(List<TransferenciaProduto> listaProdutos) {
134
                this.listaProdutos = listaProdutos;
135
        }
136
 
137
        @Transient
138
        public List<TransferenciaProdutoDTO> getProdutosDTO() {
139
                return produtosDTO;
140
        }
141
        public void setProdutosDTO(List<TransferenciaProdutoDTO> produtosDTO) {
142
                this.produtosDTO = produtosDTO;
143
        }
144
 
145
        @Override
146
        public int hashCode() {
147
                final int prime = 31;
148
                int result = 1;
149
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
150
                return result;
151
        }
152
        @Override
153
        public boolean equals(Object obj) {
154
                if (this == obj)
155
                        return true;
156
                if (obj == null)
157
                        return false;
158
                if (getClass() != obj.getClass())
159
                        return false;
160
                Transferencia other = (Transferencia) obj;
161
                if (sequencial == null) {
162
                        if (other.sequencial != null)
163
                                return false;
164
                } else if (!sequencial.equals(other.sequencial))
165
                        return false;
166
                return true;
167
        }
168
 
169
        @Transient
170
        public Object getSequencialDaLojaEntrada() {
171
                return VerificadorUtil.naoEstaNulo(getLojaEntrada())? getLojaEntrada().getSequencial() : null;
172
        }
173
 
174
        @Transient
175
        public Object getSequencialDaLojaSaida() {
176
                return VerificadorUtil.naoEstaNulo(getLojaSaida())? getLojaSaida().getSequencial() : null;
177
        }
178
 
179
        @Transient
180
        public List<TransferenciaProduto> getProdutosOrdenados() {
181
                List<TransferenciaProduto> produtosOrdenados = null;
182
                if (VerificadorUtil.naoEstaNulo(getListaProdutos())) {
183
                        produtosOrdenados = new ArrayList<TransferenciaProduto>(getListaProdutos());
184
                        Collections.sort(produtosOrdenados, new Comparator<TransferenciaProduto>() {
185
                                public int compare(TransferenciaProduto p1, TransferenciaProduto p2) {
186
                                        return p1.getProduto().getDescricaoDoModelo().compareTo(p2.getProduto().getDescricaoDoModelo());
187
                                };
188
                        });
189
                }
190
                return produtosOrdenados;
191
        }
192
 
193
        public void adicionarProduto(TransferenciaProduto produto) {
194
                if (VerificadorUtil.estaNulo(getListaProdutos())) {
195
                        setListaProdutos(new ArrayList<TransferenciaProduto>());
196
                }
197
                getListaProdutos().add(produto);
198
        }
199
 
200
        public void removerProduto(TransferenciaProduto transferenciaProduto) {
201
                if (!VerificadorUtil.isListaNulaOuVazia(getListaProdutos())) {
202
                        getListaProdutos().remove(transferenciaProduto);
203
                }
204
        }
205
 
206
        public void removerProduto(TransferenciaProdutoDTO transferenciaProdutoDTO) {
207
                if (!VerificadorUtil.isListaNulaOuVazia(getProdutosDTO())) {
208
                        getProdutosDTO().remove(transferenciaProdutoDTO);
209
                }
210
        }
211
 
212
        public boolean verificarSeProdutoJaConstaNaLista(TransferenciaProduto transferenciaProduto) {
213
                if (VerificadorUtil.estaNulo(getListaProdutos())) {
214
                        setListaProdutos(new ArrayList<TransferenciaProduto>());
215
                }
216
                for (TransferenciaProduto item : getListaProdutos()) {
217
                        if (item.equals(transferenciaProduto)) {
218
                                return true;
219
                        }
220
                }
221
                return false;
222
        }
223
 
224
        public boolean verificarSeProdutoJaConstaNaLista(Long sequencialProduto) {
225
                if (VerificadorUtil.estaNulo(getProdutosDTO())) {
226
                        setProdutosDTO(new ArrayList<TransferenciaProdutoDTO>());
227
                }
228
                for (TransferenciaProdutoDTO item : getProdutosDTO()) {
229
                        if (item.getSequencialProduto().equals(sequencialProduto)) {
230
                                return true;
231
                        }
232
                }
233
                return false;
234
        }
235
 
236
        @Transient
237
        public Integer quantidadeProdutos() {
238
                Integer quantidadeTotal = 0;
239
                if (VerificadorUtil.naoEstaNuloOuVazio(getProdutosDTO())) {
240
                        for (TransferenciaProdutoDTO transferenciaProduto : getProdutosDTO()) {
241
                                if (transferenciaProduto.ehTipoProdutoCapa()) {
242
                                        quantidadeTotal = quantidadeTotal + transferenciaProduto.getQuantidade();
243
                                }
244
                        }
245
                }
246
                return quantidadeTotal;
247
        }
248
 
249
}