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