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.ArrayList;
5
import java.util.Date;
6
import java.util.List;
7
 
8
import javax.persistence.Column;
9
import javax.persistence.Entity;
10
import javax.persistence.GeneratedValue;
11
import javax.persistence.GenerationType;
12
import javax.persistence.Id;
13
import javax.persistence.JoinColumn;
14
import javax.persistence.ManyToOne;
15
import javax.persistence.Table;
16
import javax.persistence.Transient;
17
 
18
import org.hibernate.annotations.ForeignKey;
19
 
20
import br.com.ec.domain.shared.ConstantesSEC;
21
import br.edu.cesmac.core.util.StringUtil;
22
import br.edu.cesmac.core.util.VerificadorUtil;
23
 
24
@Entity
25
@Table(name="sec_lancamento", schema="sc_sec")
26
public class Lancamento implements Serializable, Cloneable {
27
 
28
        private static final long serialVersionUID = 1L;
29
 
30
        private Long sequencial;
31
        private Venda venda;
32
        private Produto produto;
33
        private Double valorCompra;
34
        private Double valorVarejo;
35
        private Double valorVenda;
36
        private String observacao;
37
        private String observacaoNotaFiscal;
38
        private Date dataValidacaoVivo;
39
        private Date dataBaixaVivo;
40
        private Double valorRecebidoVivo;
41
        private Date dataRecebidoVivo;
42
        private Boolean ativo;
43
 
44
        private Cupom cupom;
45
 
46
        private Integer quantidadeLancamento = 1;
47
        private String observacaoIMEI1;
48
        private String observacaoIMEI2;
49
 
50
        private String observacaoRestaurante = "COMPLETO";
51
        private String opcaoRestaurante = "";
52
        private List<String> opcoesRestaurante = new ArrayList<String>();
53
 
54
        @Id
55
        @GeneratedValue(strategy = GenerationType.IDENTITY)
56
        @Column(name="seq_lancamento", nullable=false)
57
        public Long getSequencial() {
58
                return sequencial;
59
        }
60
        public void setSequencial(Long sequencial) {
61
                this.sequencial = sequencial;
62
        }
63
 
64
        @ManyToOne
65
        @ForeignKey(name = "fk_lancamento_venda")
66
        @JoinColumn(name="seq_venda", referencedColumnName="seq_venda", insertable=true, updatable=false)
67
        public Venda getVenda() {
68
                return venda;
69
        }
70
        public void setVenda(Venda venda) {
71
                this.venda = venda;
72
        }
73
 
74
        @ManyToOne
75
        @ForeignKey(name = "fk_lancamento_produto")
76
        @JoinColumn(name="seq_produto", referencedColumnName="seq_produto", insertable=true, updatable=false)
77
        public Produto getProduto() {
78
                return produto;
79
        }
80
        public void setProduto(Produto produto) {
81
                this.produto = produto;
82
        }
83
 
84
        @Column(name="val_compra")
85
        public Double getValorCompra() {
86
                return valorCompra;
87
        }
88
        public void setValorCompra(Double valorCompra) {
89
                this.valorCompra = valorCompra;
90
        }
91
 
92
        @Column(name="val_varejo")
93
        public Double getValorVarejo() {
94
                return valorVarejo;
95
        }
96
        public void setValorVarejo(Double valorVarejo) {
97
                this.valorVarejo = valorVarejo;
98
        }
99
 
100
        @Column(name="val_venda")
101
        public Double getValorVenda() {
102
                return valorVenda;
103
        }
104
        public void setValorVenda(Double valorVenda) {
105
                this.valorVenda = valorVenda;
106
        }
107
 
108
        @Column(name="dsc_observacao")
109
        public String getObservacao() {
110
                return observacao;
111
        }
112
        public void setObservacao(String observacao) {
113
                this.observacao = StringUtil.setarUpperCase(observacao);
114
        }
115
 
116
        @Column(name="dsc_observacao_notafiscal")
117
        public String getObservacaoNotaFiscal() {
118
                return observacaoNotaFiscal;
119
        }
120
        public void setObservacaoNotaFiscal(String observacaoNotaFiscal) {
121
                this.observacaoNotaFiscal = StringUtil.setarUpperCase(observacaoNotaFiscal);
122
        }
123
 
124
        @Column(name="dat_validacao_vivo")
125
        public Date getDataValidacaoVivo() {
126
                return dataValidacaoVivo;
127
        }
128
        public void setDataValidacaoVivo(Date dataValidacaoVivo) {
129
                this.dataValidacaoVivo = dataValidacaoVivo;
130
        }
131
 
132
        @Column(name="dat_baixa_vivo")
133
        public Date getDataBaixaVivo() {
134
                return dataBaixaVivo;
135
        }
136
        public void setDataBaixaVivo(Date dataBaixaVivo) {
137
                this.dataBaixaVivo = dataBaixaVivo;
138
        }
139
 
140
        @Column(name="val_recebido_vivo")
141
        public Double getValorRecebidoVivo() {
142
                return valorRecebidoVivo;
143
        }
144
        public void setValorRecebidoVivo(Double valorRecebidoVivo) {
145
                this.valorRecebidoVivo = valorRecebidoVivo;
146
        }
147
 
148
        @Column(name="dat_recebido_vivo")
149
        public Date getDataRecebidoVivo() {
150
                return dataRecebidoVivo;
151
        }
152
        public void setDataRecebidoVivo(Date dataRecebidoVivo) {
153
                this.dataRecebidoVivo = dataRecebidoVivo;
154
        }
155
 
156
        @Column(name="ind_ativo", nullable=false)
157
        public Boolean getAtivo() {
158
                return ativo;
159
        }
160
        public void setAtivo(Boolean ativo) {
161
                this.ativo = ativo;
162
        }
163
 
164
        @ManyToOne
165
        @ForeignKey(name="fk_lancamento_cupom")
166
        @JoinColumn(name = "seq_cupom", nullable=true)
167
        public Cupom getCupom() {
168
                return cupom;
169
        }
170
        public void setCupom(Cupom cupom) {
171
                this.cupom = cupom;
172
        }
173
 
174
        @Transient
175
        public Integer getQuantidadeLancamento() {
176
                return quantidadeLancamento;
177
        }
178
        public void setQuantidadeLancamento(Integer quantidadeLancamento) {
179
                this.quantidadeLancamento = quantidadeLancamento;
180
        }
181
 
182
        @Transient
183
        public String getObservacaoIMEI1() {
184
                return observacaoIMEI1;
185
        }
186
        public void setObservacaoIMEI1(String observacaoIMEI1) {
187
                this.observacaoIMEI1 = observacaoIMEI1;
188
        }
189
 
190
        @Transient
191
        public String getObservacaoIMEI2() {
192
                return observacaoIMEI2;
193
        }
194
        public void setObservacaoIMEI2(String observacaoIMEI2) {
195
                this.observacaoIMEI2 = observacaoIMEI2;
196
        }
197
 
198
        @Transient
199
        public String getObservacaoRestaurante() {
200
                return observacaoRestaurante;
201
        }
202
        public void setObservacaoRestaurante(String observacaoRestaurante) {
203
                this.observacaoRestaurante = observacaoRestaurante;
204
        }
205
 
206
        @Transient
207
        public String getOpcaoRestaurante() {
208
                return opcaoRestaurante;
209
        }
210
        public void setOpcaoRestaurante(String opcaoRestaurante) {
211
                this.opcaoRestaurante = opcaoRestaurante;
212
        }
213
 
214
        @Transient
215
        public List<String> getOpcoesRestaurante() {
216
                return opcoesRestaurante;
217
        }
218
        public void setOpcoesRestaurante(List<String> opcoesRestaurante) {
219
                this.opcoesRestaurante = opcoesRestaurante;
220
        }
221
 
222
        @Override
223
        public int hashCode() {
224
                final int prime = 31;
225
                int result = 1;
226
                result = prime * result
227
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
228
                return result;
229
        }
230
 
231
        @Override
232
        public boolean equals(Object obj) {
233
                if (this == obj)
234
                        return true;
235
                if (obj == null)
236
                        return false;
237
                if (getClass() != obj.getClass())
238
                        return false;
239
                Lancamento other = (Lancamento) obj;
240
                if (sequencial == null) {
241
                        if (other.sequencial != null) {
242
                                return false;
243
                        } else {return false;}
244
                } else if (!sequencial.equals(other.sequencial))
245
                        return false;
246
                return true;
247
        }
248
 
249
        @Override
250
        public Lancamento clone() throws CloneNotSupportedException {
251
                return (Lancamento) super.clone();
252
        }
253
 
254
        @Transient
255
        public void preencher(Produto produtoSelecionado) {
256
                this.setProduto(produtoSelecionado);
257
                this.setValorCompra(produtoSelecionado.getValorCompra());
258
                if (produtoSelecionado.getProdutoEmPromocao()) {
259
                        this.setValorVarejo(produtoSelecionado.getValorVarejoPromocional());
260
                        this.setValorVenda(produtoSelecionado.getValorVarejoPromocional());
261
                } else {
262
                        this.setValorVarejo(produtoSelecionado.getValorVarejo());
263
                        this.setValorVenda(produtoSelecionado.getValorVarejo());
264
                }
265
        }
266
 
267
        @Transient
268
        public String tipoDoProduto() {
269
                return VerificadorUtil.naoEstaNulo(this.getProduto()) ? this.getProduto().getTipo() : "";
270
        }
271
 
272
        @Transient
273
        public Double valorDescontos() {
274
                if (VerificadorUtil.estaNulo(getValorVarejo())) {
275
                        return getValorVenda();
276
                }
277
                return getValorVarejo() - getValorVenda();
278
        }
279
 
280
        @Transient
281
        public Boolean comDescontos() {
282
                if (VerificadorUtil.naoEstaNulo(getValorVarejo()) && VerificadorUtil.naoEstaNulo(getValorVenda())) {
283
                        return getValorVarejo() > getValorVenda();
284
                }
285
                return false;
286
        }
287
 
288
        @Transient
289
        public Boolean comDescontosAcimaDoPermitido() {
290
                if (VerificadorUtil.naoEstaNulo(getValorVarejo()) && VerificadorUtil.naoEstaNulo(getValorVenda())) {
291
                        if (getProduto().getValorVarejo() < 100) {
292
                                Double valorDesconto = getValorVarejo() - getValorVenda();
293
                                return valorDesconto > ConstantesSEC.Venda.LIMITE_DESCONTO_ABAIXO_100;
294
                        } else {
295
                                Double percentualDesconto = 100 - (getValorVenda()*100/getValorVarejo());
296
                                return percentualDesconto > ConstantesSEC.Venda.LIMITE_PERCENTUAL_DESCONTO_ACIMA_100;
297
                        }
298
                }
299
                return false;
300
        }
301
 
302
        @Transient
303
        public String getDescricaoNotaFiscal() {
304
                StringBuilder descricaoCompleta = new StringBuilder();
305
                descricaoCompleta.append(this.getProduto().getDescricaoNotaFiscal(this.getObservacaoNotaFiscal()));
306
                return descricaoCompleta.toString().trim();
307
        }
308
 
309
        @Transient
310
        public String getDescricaoComanda() {
311
                StringBuilder descricaoCompleta = new StringBuilder();
312
                descricaoCompleta.append(this.getProduto().getDescricaoNotaFiscal(this.getObservacao()));
313
                return descricaoCompleta.toString().trim();
314
        }
315
 
316
        @Transient
317
        public Long getSequencialDoCupom() {
318
                return VerificadorUtil.naoEstaNulo(getCupom())? getCupom().getSequencial() : null;
319
        }
320
 
321
}