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