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.Date;
5
import java.util.Random;
6
 
7
import javax.persistence.Column;
8
import javax.persistence.Entity;
9
import javax.persistence.GeneratedValue;
10
import javax.persistence.GenerationType;
11
import javax.persistence.Id;
12
import javax.persistence.JoinColumn;
13
import javax.persistence.ManyToOne;
14
import javax.persistence.Table;
15
import javax.persistence.Transient;
16
import javax.validation.constraints.NotNull;
17
import javax.validation.constraints.Size;
18
 
19
import org.hibernate.annotations.ForeignKey;
20
import org.hibernate.validator.constraints.NotEmpty;
21
 
22
import br.com.ec.domain.model.tipos.TipoCupom;
23
import br.edu.cesmac.core.interfaces.Alterar;
24
import br.edu.cesmac.core.interfaces.Cadastrar;
25
import br.edu.cesmac.core.util.DataUtils;
26
import br.edu.cesmac.core.util.StringUtil;
27
import br.edu.cesmac.core.util.VerificadorUtil;
28
 
29
@Entity
30
@Table(name="sec_cupom", schema="sc_sec")
31
public class Cupom implements Serializable, Cloneable {
32
 
33
        private static final long serialVersionUID = 1L;
34
 
35
        private Long sequencial;
36
        private String codigo;
37
        private String descricao;
38
        private String observacao;
39
        private String tipoCupom;
40
        private Double valor;
41
        private Double percentual;
42
        private Integer quantidadeUtilizada;
43
        private Date dataHoraUtilizado;
44
        private Date dataHoraValidade;
45
        private Date dataHoraEmissao;
46
        private Boolean limiteUtilizacao;
47
        private Boolean publico;
48
        private Boolean ativo;
49
 
50
        private Cliente cliente;
51
 
52
        private Lancamento lancamento;
53
 
54
        public Cupom() {}
55
 
56
        public Cupom(Lancamento lancamento) {
57
                this.lancamento = lancamento;
58
        }
59
 
60
        @Id
61
        @GeneratedValue(strategy = GenerationType.IDENTITY)
62
        @Column(name="seq_cupom", nullable=false)
63
        public Long getSequencial() {
64
                return sequencial;
65
        }
66
        public void setSequencial(Long sequencial) {
67
                this.sequencial = sequencial;
68
        }
69
 
70
        @Column(name="cod_cupom", nullable=false)
71
        @Size(max = 20, message = "Limite de caracteres ultrapassado: Código")
72
        @NotEmpty(message = "Parâmetro obrigatório não preenchido: Nome", groups = {Cadastrar.class, Alterar.class})
73
        public String getCodigo() {
74
                return codigo;
75
        }
76
        public void setCodigo(String codigo) {
77
                this.codigo = StringUtil.setarUpperCaseComTrim(codigo);
78
        }
79
 
80
        @Column(name="dsc_cupom", nullable=false)
81
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Descrição")
82
        public String getDescricao() {
83
                return descricao;
84
        }
85
        public void setDescricao(String descricao) {
86
                this.descricao = StringUtil.setarUpperCaseComTrim(descricao);
87
        }
88
 
89
        @Column(name="dsc_observacao", nullable=false)
90
        @Size(max = 1000, message = "Limite de caracteres ultrapassado: Observação")
91
        public String getObservacao() {
92
                return observacao;
93
        }
94
        public void setObservacao(String observacao) {
95
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
96
        }
97
 
98
        @Column(name="tip_cupom", nullable=false)
99
        @NotNull(message = "Parâmetro obrigatório não preenchido: Tipo do cupom", groups = {Cadastrar.class, Alterar.class})
100
        public String getTipoCupom() {
101
                return tipoCupom;
102
        }
103
        public void setTipoCupom(String tipoCupom) {
104
                this.tipoCupom = tipoCupom;
105
        }
106
        @Transient
107
        public String getDescricaoDoTipoCupom() {
108
                return VerificadorUtil.naoEstaNulo(tipoCupom)? TipoCupom.parse(tipoCupom).getDescricao() : "";
109
        }
110
 
111
        @Column(name="val_cupom")
112
        public Double getValor() {
113
                return valor;
114
        }
115
        public void setValor(Double valor) {
116
                this.valor = valor;
117
        }
118
 
119
        @Column(name="val_percentual_cupom")
120
        public Double getPercentual() {
121
                return percentual;
122
        }
123
        public void setPercentual(Double percentual) {
124
                this.percentual = percentual;
125
        }
126
 
127
        @Column(name="qtd_utilizado")
128
        public Integer getQuantidadeUtilizada() {
129
                return quantidadeUtilizada;
130
        }
131
        public void setQuantidadeUtilizada(Integer quantidadeUtilizada) {
132
                this.quantidadeUtilizada = quantidadeUtilizada;
133
        }
134
 
135
        @Column(name="dth_utilizado")
136
        public Date getDataHoraUtilizado() {
137
                return dataHoraUtilizado;
138
        }
139
        public void setDataHoraUtilizado(Date dataHoraUtilizado) {
140
                this.dataHoraUtilizado = dataHoraUtilizado;
141
        }
142
 
143
        @Column(name="dth_validade")
144
        public Date getDataHoraValidade() {
145
                return dataHoraValidade;
146
        }
147
        public void setDataHoraValidade(Date dataHoraValidade) {
148
                this.dataHoraValidade = dataHoraValidade;
149
        }
150
 
151
        @NotNull(message = "Informe a data de emissão", groups = {Cadastrar.class, Alterar.class})
152
        @Column(name="dth_emissao", nullable=false)
153
        public Date getDataHoraEmissao() {
154
                return dataHoraEmissao;
155
        }
156
        public void setDataHoraEmissao(Date dataHoraEmissao) {
157
                this.dataHoraEmissao = dataHoraEmissao;
158
        }
159
 
160
        @NotNull(message = "Informe se a utilização é limitada", groups = {Cadastrar.class, Alterar.class})
161
        @Column(name="ind_limite_utilizacao", nullable=false)
162
        public Boolean getLimiteUtilizacao() {
163
                return limiteUtilizacao;
164
        }
165
        public void setLimiteUtilizacao(Boolean limiteUtilizacao) {
166
                this.limiteUtilizacao = limiteUtilizacao;
167
        }
168
 
169
        @NotNull(message = "Informe se o cupom é público", groups = {Cadastrar.class, Alterar.class})
170
        @Column(name="ind_publico", nullable=false)
171
        public Boolean getPublico() {
172
                return publico;
173
        }
174
        public void setPublico(Boolean publico) {
175
                this.publico = publico;
176
        }
177
 
178
        @Column(name="ind_ativo", nullable=false)
179
        public Boolean getAtivo() {
180
                return ativo;
181
        }
182
        public void setAtivo(Boolean ativo) {
183
                this.ativo = ativo;
184
        }
185
 
186
        @Transient
187
        public String getValorCupomFormatado() {
188
                if (VerificadorUtil.naoEstaNulo(getValor())) {
189
                        return "R$ " + StringUtil.formatarValor(getValor());
190
                }
191
                if (VerificadorUtil.naoEstaNulo(getPercentual())) {
192
                        return StringUtil.formatarPercentual(getPercentual()/100);
193
                }
194
                return null;
195
        }
196
 
197
        @ManyToOne
198
        @ForeignKey(name="fk_cupom_cliente")
199
        @JoinColumn(name = "seq_cliente", nullable=true)
200
        public Cliente getCliente() {
201
                return cliente;
202
        }
203
        public void setCliente(Cliente cliente) {
204
                this.cliente = cliente;
205
        }
206
 
207
        @Transient
208
        public Lancamento getLancamento() {
209
                return lancamento;
210
        }
211
        public void setLancamento(Lancamento lancamento) {
212
                this.lancamento = lancamento;
213
        }
214
 
215
        @Override
216
        public int hashCode() {
217
                final int prime = 31;
218
                int result = 1;
219
                result = prime * result
220
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
221
                return result;
222
        }
223
 
224
        @Override
225
        public boolean equals(Object obj) {
226
                if (this == obj)
227
                        return true;
228
                if (obj == null)
229
                        return false;
230
                if (getClass() != obj.getClass())
231
                        return false;
232
                Cupom other = (Cupom) obj;
233
                if (sequencial == null) {
234
                        if (other.sequencial != null)
235
                                return false;
236
                } else if (!sequencial.equals(other.sequencial))
237
                        return false;
238
                return true;
239
        }
240
 
241
        @Override
242
        public Cupom clone() throws CloneNotSupportedException {
243
                return (Cupom) super.clone();
244
        }
245
 
246
        @Transient
247
        public String getNomeDoCliente() {
248
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getNome() : "";
249
        }
250
 
251
        @Transient
252
        public void gerarCodigo() {
253
                Random random = new Random();
254
                Integer codigoGerado = random.nextInt(999999);
255
                setCodigo(codigoGerado.toString());
256
        }
257
 
258
        @Transient
259
        public Boolean valido() {
260
                if (VerificadorUtil.naoEstaNulo(getDataHoraValidade())) {
261
                        return DataUtils.getDataAtual().before(getDataHoraValidade());
262
                }
263
                return getAtivo();
264
        }
265
 
266
}