Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
259 espaco 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
import java.util.Date;
5
 
6
import javax.persistence.Column;
7
import javax.persistence.Entity;
8
import javax.persistence.GeneratedValue;
9
import javax.persistence.GenerationType;
10
import javax.persistence.Id;
11
import javax.persistence.JoinColumn;
12
import javax.persistence.ManyToOne;
13
import javax.persistence.SequenceGenerator;
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
 
21
import br.com.ec.core.generic.identidade.Identidade;
22
import br.com.ec.core.interfaces.Alterar;
23
import br.com.ec.core.interfaces.Cadastrar;
24
import br.com.ec.core.util.DataUtils;
25
import br.com.ec.core.util.StringUtil;
26
import br.com.ec.core.util.VerificadorUtil;
27
 
28
@Entity
29
@Table(name="sec_parcela", schema="sc_sec")
30
public class Parcela implements Serializable, Identidade, Cloneable {
31
 
32
        private static final long serialVersionUID = 1L;
33
 
34
        private Long sequencial;
35
        private Conta conta;
36
        private ContaBancaria contaBancaria;
296 espaco 37
        private FormaPagamento formaPagamento;
259 espaco 38
        private Date dataEmissao;
39
        private Date dataVencimento;
40
        private Date dataPagamento;
41
        private Double valor;
42
        private String observacao;
43
        private Boolean indicadorOficial;
44
        private Boolean indicadorAtivo;
45
 
46
        private Boolean possuiLancamento = false;
47
 
48
        public Parcela() {}
49
 
50
        public Parcela(Conta conta, ContaBancaria contaBancaria, Date dataEmissao,
51
                        Date dataVencimento, Date dataPagamento, Double valor, String observacao, Boolean indicadorAtivo) {
52
                this.conta = conta;
53
                this.contaBancaria = contaBancaria;
54
                this.dataEmissao = dataEmissao;
55
                this.dataVencimento = dataVencimento;
56
                this.dataPagamento = dataPagamento;
57
                this.valor = valor;
58
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
59
                this.indicadorAtivo = indicadorAtivo;
60
        }
61
 
62
        @Override
63
        @Transient
64
        public Object getId() {
65
                return this.getSequencial();
66
        }
67
        @Override
68
        public void setId(Object id) {
69
                this.sequencial = (Long) id;
70
        }
71
 
72
        @Id
73
        @SequenceGenerator(name = "sq_parcela")
74
        @GeneratedValue(strategy = GenerationType.IDENTITY)
75
        @Column(name="seq_parcela", nullable=false)
76
        public Long getSequencial() {
77
                return sequencial;
78
        }
79
        public void setSequencial(Long sequencial) {
80
                this.sequencial = sequencial;
81
        }
82
 
83
        @ManyToOne
84
        @ForeignKey(name="fk_parcela_conta")
85
        @JoinColumn(name="seq_conta")
86
        public Conta getConta() {
87
                return conta;
88
        }
89
        public void setConta(Conta conta) {
90
                this.conta = conta;
91
        }
92
 
93
        @ManyToOne
94
        @ForeignKey(name="fk_parcela_contabancaria")
95
        @JoinColumn(name="cod_conta_bancaria")
96
        public ContaBancaria getContaBancaria() {
97
                return contaBancaria;
98
        }
99
        public void setContaBancaria(ContaBancaria contaBancaria) {
100
                this.contaBancaria = contaBancaria;
101
        }
102
 
296 espaco 103
        @ManyToOne
104
        @ForeignKey(name="fk_parcela_formapagamento")
105
        @JoinColumn(name="cod_formapagament")
106
        public FormaPagamento getFormaPagamento() {
107
                return formaPagamento;
108
        }
109
        public void setFormaPagamento(FormaPagamento formaPagamento) {
110
                this.formaPagamento = formaPagamento;
111
        }
112
 
259 espaco 113
        @Column(name="dth_emissao", nullable=false)
114
        public Date getDataEmissao() {
115
                return dataEmissao;
116
        }
117
        public void setDataEmissao(Date dataEmissao) {
118
                this.dataEmissao = dataEmissao;
119
        }
120
 
121
        @Column(name="dat_vencimento", nullable=true)
122
        public Date getDataVencimento() {
123
                return dataVencimento;
124
        }
125
        public void setDataVencimento(Date dataVencimento) {
126
                this.dataVencimento = dataVencimento;
127
        }
128
 
129
        @Column(name="dat_pagamento", nullable=true)
130
        public Date getDataPagamento() {
131
                return dataPagamento;
132
        }
133
        public void setDataPagamento(Date dataPagamento) {
134
                this.dataPagamento = dataPagamento;
135
        }
136
 
137
        @Column(name="val_valor", nullable=true)
138
        @NotNull(message = "Parâmetro obrigatório não preenchido: Valor da parcela", groups = {Cadastrar.class, Alterar.class})
139
        public Double getValor() {
140
                return valor;
141
        }
142
        public void setValor(Double valor) {
143
                this.valor = valor;
144
        }
145
 
146
        @Column(name="dsc_observacao")
147
        @Size(max = 400, message = "Limite de caracteres ultrapassado: Observação")
148
        public String getObservacao() {
149
                return observacao;
150
        }
151
        public void setObservacao(String observacao) {
152
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
153
        }
154
 
155
        @Column(name="ind_oficial")
156
        public Boolean getIndicadorOficial() {
157
                return indicadorOficial;
158
        }
159
        public void setIndicadorOficial(Boolean indicadorOficial) {
160
                this.indicadorOficial = indicadorOficial;
161
        }
162
 
163
        @Column(name="ind_ativo", nullable=false)
164
        public Boolean getIndicadorAtivo() {
165
                return indicadorAtivo;
166
        }
167
        public void setIndicadorAtivo(Boolean indicadorAtivo) {
168
                this.indicadorAtivo = indicadorAtivo;
169
        }
170
 
171
        @Transient
172
        public Boolean getPossuiLancamento() {
173
                return possuiLancamento;
174
        }
175
        public void setPossuiLancamento(Boolean possuiLancamento) {
176
                this.possuiLancamento = possuiLancamento;
177
        }
178
 
179
        @Override
180
        public int hashCode() {
181
                final int prime = 31;
182
                int result = 1;
183
                result = prime * result
184
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
185
                return result;
186
        }
187
 
188
        @Override
189
        public boolean equals(Object obj) {
190
                if (this == obj)
191
                        return true;
192
                if (obj == null)
193
                        return false;
194
                if (getClass() != obj.getClass())
195
                        return false;
196
                Parcela other = (Parcela) obj;
197
                if (sequencial == null) {
198
                        if (other.sequencial != null)
199
                                return false;
200
                } else if (!sequencial.equals(other.sequencial))
201
                        return false;
202
                return true;
203
        }
204
 
205
        @Transient
206
        public Boolean parcelaAVencerAlemDeTresDias() {
207
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(getDataVencimento(), DataUtils.getDataAtual()) > 3 ? true : false;
208
        }
209
 
210
        @Transient
211
        public Boolean parcelaAVencerAteTresDias() {
212
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(getDataVencimento(), DataUtils.getDataAtual()) < 3 &&
213
                                DataUtils.calcularDiferenceEmDiasEntreDuasDatas(getDataVencimento(), DataUtils.getDataAtual()) >= 0? true : false;
214
        }
215
 
216
        @Transient
217
        public Boolean parcelaVencida() {
218
                if (VerificadorUtil.naoEstaNulo(getDataVencimento())) {
219
                        Date dataVerificar = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -1);
220
                        return getDataVencimento().before(DataUtils.getDataComHorarioMaximo(dataVerificar));
221
                }
222
                return false;
223
        }
224
 
225
        @Transient
226
        public Boolean parcelaAhReceber() {
227
                return VerificadorUtil.naoEstaNulo(getConta())? getConta().ehContaAReceber() : false;
228
        }
229
 
230
        @Transient
231
        public Boolean parcelaAhPagar() {
232
                return VerificadorUtil.naoEstaNulo(getConta())? getConta().ehContaAPagar() : false;
233
        }
234
 
235
        @Transient
236
        public String corParcela() {
237
                return parcelaAhPagar()? "red" : "green";
238
        }
239
 
240
        @Transient
241
        public String descricaoDaLoja() {
242
                return VerificadorUtil.naoEstaNulo(getConta())? VerificadorUtil.naoEstaNulo(getConta().getLoja())? getConta().getLoja().getDescricao() : "" : "";
243
        }
244
 
245
        @Transient
246
        public Boolean formaDePagamentoEhDebito() {
247
                return VerificadorUtil.naoEstaNulo(getConta())? getConta().formaDePagamentoEhDebito() : false;
248
        }
249
 
250
        @Transient
251
        public Boolean formaDePagamentoEhCredito() {
252
                return VerificadorUtil.naoEstaNulo(getConta())? getConta().formaDePagamentoEhCredito() : false;
253
        }
254
 
255
        @Transient
256
        public String getDescricaoDaCategoria() {
257
                return VerificadorUtil.naoEstaNulo(getConta())? VerificadorUtil.naoEstaNulo(getConta().getCategoria())? getConta().getCategoria().getDescricao(): null: null;
258
        }
259
 
260
        @Transient
261
        public String getTipoDaCategoria() {
262
                return VerificadorUtil.naoEstaNulo(getConta())? VerificadorUtil.naoEstaNulo(getConta().getCategoria())? "(" + getConta().getCategoria().getTipo() + ")": null: null;
263
        }
264
 
265
        @Override
266
        public Parcela clone() throws CloneNotSupportedException {
267
                return (Parcela) super.clone();
268
        }
269
 
270
}