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