Subversion Repositories Integrator Subversion

Rev

Rev 197 | Rev 320 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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