Subversion Repositories Integrator Subversion

Rev

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

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