Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

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