Subversion Repositories Integrator Subversion

Rev

Rev 170 | Rev 304 | 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.ArrayList;
5
import java.util.Date;
6
import java.util.HashSet;
7
import java.util.Set;
8
 
9
import javax.persistence.CascadeType;
10
import javax.persistence.Column;
11
import javax.persistence.Entity;
12
import javax.persistence.GeneratedValue;
13
import javax.persistence.GenerationType;
14
import javax.persistence.Id;
170 espaco 15
import javax.persistence.JoinColumn;
16
import javax.persistence.ManyToOne;
106 espaco 17
import javax.persistence.OneToMany;
18
import javax.persistence.SequenceGenerator;
19
import javax.persistence.Table;
20
import javax.persistence.Transient;
21
import javax.validation.Valid;
22
import javax.validation.constraints.Size;
23
 
170 espaco 24
import org.hibernate.annotations.ForeignKey;
106 espaco 25
import org.hibernate.validator.constraints.NotEmpty;
26
 
195 espaco 27
import br.com.ec.core.interfaces.Alterar;
28
import br.com.ec.core.interfaces.Cadastrar;
29
import br.com.ec.core.util.StringUtil;
30
import br.com.ec.core.util.VerificadorUtil;
106 espaco 31
import br.com.ec.domain.model.tipos.TipoEscolaridade;
32
import br.com.ec.domain.model.tipos.TipoEstadoCivil;
170 espaco 33
import br.com.ec.domain.model.tipos.TipoPessoa;
106 espaco 34
import br.com.ec.domain.model.tipos.TipoRacaCor;
35
import br.com.ec.domain.model.tipos.TipoSexo;
195 espaco 36
import br.com.ec.web.converters.FormatarUtil;
106 espaco 37
 
38
@Entity
39
@Table(name="sec_pessoa", schema="sc_sec")
40
public class Pessoa implements Serializable {
41
 
42
        private static final long serialVersionUID = 1L;
43
 
44
        private Long sequencial;
45
        private String nome;
170 espaco 46
        private String tipoPessoa;
47
        private String cpfCnpj;
48
        private String email;
49
        private String telefone;
50
        private String contato;
51
        private String observacao;
52
        private Set<PessoaPapel> papeis;
53
 
54
        //      PESSOA FÍSICA
106 espaco 55
        private String sexo;
56
        private String rg;
57
        private Date rgDataExpedicao;
58
        private String rgOrgaoEmissor;
170 espaco 59
        private Date dataNascimento;
106 espaco 60
        private String nacionalidade;
170 espaco 61
        private String localNascimento;
62
        private String UfNascimento;
106 espaco 63
        private String nomePai;
64
        private String nomeMae;
65
        private String tipoEstadoCivil;
66
        private String tipoRacaCor;
67
        private String tipoEscolaridade;
68
 
170 espaco 69
        //      PESSOA JURÍDICA
106 espaco 70
        private String nomeFantasia;
71
        private String razaoSocial;
72
        private String inscricaoEstadual;
170 espaco 73
        private Boolean inscricaoEstadualIsento;
106 espaco 74
        private String inscricaoMunicipal;
170 espaco 75
        private String tipoRegimeTributario;
106 espaco 76
 
170 espaco 77
        //      CLIENTE
78
        private Modelo modeloCliente;
79
        private Boolean indicadorNovidades;
80
 
81
        private Set<Endereco> enderecos;
82
        private Set<DadosBancarios> dadosBancarios;
83
 
106 espaco 84
        private boolean ativo;
85
 
170 espaco 86
        public Pessoa() {
87
//              setTipoPessoa(TipoPessoa.FISICA_F.getValor());
88
//              setInscricaoEstadualIsento(false);
89
                setPapeis(new HashSet<PessoaPapel>());
90
                setEnderecos(new HashSet<Endereco>());
91
                setDadosBancarios(new HashSet<DadosBancarios>());
92
        }
93
 
106 espaco 94
        @Id
95
        @SequenceGenerator(name = "sq_pessoa")
96
        @GeneratedValue(strategy=GenerationType.IDENTITY)
97
        @Column(name="seq_pessoa", nullable=false)
98
        public Long getSequencial() {
99
                return sequencial;
100
        }
101
        public void setSequencial(Long sequencial) {
102
                this.sequencial = sequencial;
103
        }
104
 
105
        @Column(name="dsc_nome")
106
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Nome")
107
        @NotEmpty(message="Obrigatório informar o nome", groups={Cadastrar.class, Alterar.class})
108
        public String getNome() {
109
                return nome;
110
        }
111
        public void setNome(String nome) {
112
                this.nome = StringUtil.setarUpperCaseComTrim(nome);
113
        }
114
 
170 espaco 115
        @Column(name="tip_pessoa")
116
        public String getTipoPessoa() {
117
                return tipoPessoa;
106 espaco 118
        }
170 espaco 119
        public void setTipoPessoa(String tipoPessoa) {
120
                this.tipoPessoa = tipoPessoa;
106 espaco 121
        }
170 espaco 122
        @Transient
123
        public String getDescricaoDoTipoDaPessoa() {
124
                return VerificadorUtil.naoEstaNulo(getTipoPessoa())? TipoPessoa.parse(getTipoPessoa()).getDescricao() : null;
125
        }
106 espaco 126
 
170 espaco 127
        @Column(name="dsc_cpf_cnpj")
128
        @Size(max = 20, message = "Limite de caracteres ultrapassado: CPF/CNPJ")
129
        public String getCpfCnpj() {
130
                return cpfCnpj;
106 espaco 131
        }
170 espaco 132
        public void setCpfCnpj(String cpfCnpj) {
133
                this.cpfCnpj = cpfCnpj;
106 espaco 134
        }
135
 
170 espaco 136
        @Column(name="dsc_email")
137
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Email")
138
        public String getEmail() {
139
                return email;
140
        }
141
        public void setEmail(String email) {
142
                this.email = email;
143
        }
144
 
145
        @Column(name="dsc_telefone")
146
        @Size(max = 11, message = "Limite de caracteres ultrapassado: Telefone")
147
        public String getTelefone() {
148
                return telefone;
149
        }
150
        public void setTelefone(String telefone) {
151
                this.telefone = telefone;
152
        }
153
 
154
        @Column(name="dsc_contato")
155
        public String getContato() {
156
                return contato;
157
        }
158
        public void setContato(String contato) {
159
                this.contato = contato;
160
        }
161
 
162
        @Column(name="dsc_observacao")
163
        @Size(max = 240, message = "Limite de caracteres ultrapassado: Observação")
164
        public String getObservacao() {
165
                return observacao;
166
        }
167
        public void setObservacao(String observacao) {
168
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
169
        }
170
 
171
        @Valid
172
        @OneToMany(mappedBy="pessoa", cascade=CascadeType.ALL, orphanRemoval=true)
173
        public Set<PessoaPapel> getPapeis() {
174
                return papeis;
175
        }
176
        public void setPapeis(Set<PessoaPapel> papeis) {
177
                this.papeis = papeis;
178
        }
179
 
106 espaco 180
        @Column(name="tip_sexo")
181
        public String getSexo() {
182
                return sexo;
183
        }
184
        public void setSexo(String sexo) {
185
                this.sexo = sexo;
186
        }
170 espaco 187
 
106 espaco 188
        @Column(name="dsc_rg")
189
        @Size(max = 20, message = "Limite de caracteres ultrapassado: RG")
190
        public String getRg() {
191
                return rg;
192
        }
193
        public void setRg(String rg) {
194
                this.rg = rg;
195
        }
196
 
170 espaco 197
        @Column(name="dsc_rg_orgaoemissor")
198
        @Size(max = 10, message = "Limite de caracteres ultrapassado: Orgão Emissor do RG")
199
        public String getRgOrgaoEmissor() {
200
                return rgOrgaoEmissor;
201
        }
202
        public void setRgOrgaoEmissor(String rgOrgaoEmissor) {
203
                this.rgOrgaoEmissor = rgOrgaoEmissor;
204
        }
205
 
106 espaco 206
        @Column(name="dsc_rg_dataexpedicao")
207
        public Date getRgDataExpedicao() {
208
                return rgDataExpedicao;
209
        }
210
        public void setRgDataExpedicao(Date rgDataExpedicao) {
211
                this.rgDataExpedicao = rgDataExpedicao;
212
        }
213
        @Transient
214
        public String getRgDataExpedicaoFormatada() {
215
                return VerificadorUtil.naoEstaNulo(getRgDataExpedicao())? FormatarUtil.retornarDataFormatada(getRgDataExpedicao()) : "";
216
        }
217
 
170 espaco 218
        @Column(name="dat_nascimento")
219
        public Date getDataNascimento() {
220
                return dataNascimento;
106 espaco 221
        }
170 espaco 222
        public void setDataNascimento(Date dataNascimento) {
223
                this.dataNascimento = dataNascimento;
106 espaco 224
        }
170 espaco 225
        @Transient
226
        public String getDataNascimentoFormatada() {
227
                return VerificadorUtil.naoEstaNulo(getDataNascimento())? FormatarUtil.retornarDataFormatada(getDataNascimento()) : "";
106 espaco 228
        }
229
 
170 espaco 230
        @Column(name="dsc_nacionalidade")
231
        @Size(max = 20, message = "Limite de caracteres ultrapassado: Nacionalidade")
232
        public String getNacionalidade() {
233
                return nacionalidade;
106 espaco 234
        }
170 espaco 235
        public void setNacionalidade(String nacionalidade) {
236
                this.nacionalidade = StringUtil.setarUpperCaseComTrim(nacionalidade);
106 espaco 237
        }
238
 
170 espaco 239
        @Column(name="dsc_nascimento_local")
240
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Local do Nascimento")
241
        public String getLocalNascimento() {
242
                return localNascimento;
106 espaco 243
        }
170 espaco 244
        public void setLocalNascimento(String localNascimento) {
245
                this.localNascimento = localNascimento;
106 espaco 246
        }
247
 
170 espaco 248
        @Column(name="dsc_nascimento_uf")
249
        @Size(max = 2, message = "Limite de caracteres ultrapassado: UF do Nascimento")
250
        public String getUfNascimento() {
251
                return UfNascimento;
106 espaco 252
        }
170 espaco 253
        public void setUfNascimento(String ufNascimento) {
254
                UfNascimento = ufNascimento;
106 espaco 255
        }
256
 
257
        @Column(name="dsc_nome_pai")
258
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Nome do Pai")
259
        public String getNomePai() {
260
                return nomePai;
261
        }
262
        public void setNomePai(String nomePai) {
263
                this.nomePai = StringUtil.setarUpperCaseComTrim(nomePai);
264
        }
265
 
266
        @Column(name="dsc_nome_mae")
267
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Nome da Mãe")
268
        public String getNomeMae() {
269
                return nomeMae;
270
        }
271
        public void setNomeMae(String nomeMae) {
272
                this.nomeMae = StringUtil.setarUpperCaseComTrim(nomeMae);
273
        }
274
 
275
        @Column(name="tip_estado_civil")
276
        public String getTipoEstadoCivil() {
277
                return tipoEstadoCivil;
278
        }
279
        public void setTipoEstadoCivil(String tipoEstadoCivil) {
280
                this.tipoEstadoCivil = tipoEstadoCivil;
281
        }
282
        @Transient
283
        public String getDescricaoDoEstadoCivil() {
284
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? TipoEstadoCivil.parse(getTipoEstadoCivil()).getDescricao() : null;
285
        }
286
 
287
        @Column(name="tip_raca_cor")
288
        public String getTipoRacaCor() {
289
                return tipoRacaCor;
290
        }
291
        public void setTipoRacaCor(String tipoRacaCor) {
292
                this.tipoRacaCor = tipoRacaCor;
293
        }
294
        @Transient
295
        public String getDescricaoDaRacaCor() {
296
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? TipoRacaCor.parse(getTipoRacaCor()).getDescricao() : null;
297
        }
298
 
299
        @Column(name="tip_escolaridade")
300
        public String getTipoEscolaridade() {
301
                return tipoEscolaridade;
302
        }
303
        public void setTipoEscolaridade(String tipoEscolaridade) {
304
                this.tipoEscolaridade = tipoEscolaridade;
305
        }
306
        @Transient
307
        public String getDescricaoDaEscolaridade() {
308
                return VerificadorUtil.naoEstaNulo(getTipoEscolaridade())? TipoEscolaridade.parse(getTipoEscolaridade()).getDescricao() : null;
309
        }
310
 
170 espaco 311
        @Column(name="dsc_nome_fantasia")
312
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Nome Fantasia")
313
        public String getNomeFantasia() {
314
                return nomeFantasia;
106 espaco 315
        }
170 espaco 316
        public void setNomeFantasia(String nomeFantasia) {
317
                this.nomeFantasia = StringUtil.setarUpperCaseComTrim(nomeFantasia);
106 espaco 318
        }
319
 
170 espaco 320
        @Column(name="dsc_razao_social")
321
        @Size(max = 240, message = "Limite de caracteres ultrapassado: Razão Social")
322
        public String getRazaoSocial() {
323
                return razaoSocial;
106 espaco 324
        }
170 espaco 325
        public void setRazaoSocial(String razaoSocial) {
326
                this.razaoSocial = razaoSocial;
106 espaco 327
        }
328
 
170 espaco 329
        @Column(name="dsc_inscricao_estadual")
330
        @Size(max = 15, message = "Limite de caracteres ultrapassado: Inscrição Estadual")
331
        public String getInscricaoEstadual() {
332
                return inscricaoEstadual;
106 espaco 333
        }
170 espaco 334
        public void setInscricaoEstadual(String inscricaoEstadual) {
335
                this.inscricaoEstadual = inscricaoEstadual;
106 espaco 336
        }
170 espaco 337
 
338
        @Column(name="ind_inscricao_estadual_isento")
339
        public Boolean getInscricaoEstadualIsento() {
340
                return inscricaoEstadualIsento;
106 espaco 341
        }
170 espaco 342
        public void setInscricaoEstadualIsento(Boolean inscricaoEstadualIsento) {
343
                this.inscricaoEstadualIsento = inscricaoEstadualIsento;
344
        }
106 espaco 345
 
170 espaco 346
        @Column(name="dsc_inscricao_municipal")
347
        @Size(max = 15, message = "Limite de caracteres ultrapassado: Inscrição Municipal")
348
        public String getInscricaoMunicipal() {
349
                return inscricaoMunicipal;
106 espaco 350
        }
170 espaco 351
        public void setInscricaoMunicipal(String inscricaoMunicipal) {
352
                this.inscricaoMunicipal = inscricaoMunicipal;
106 espaco 353
        }
354
 
170 espaco 355
        @Column(name="tip_regime_tributario")
356
        public String getTipoRegimeTributario() {
357
                return tipoRegimeTributario;
106 espaco 358
        }
170 espaco 359
        public void setTipoRegimeTributario(String tipoRegimeTributario) {
360
                this.tipoRegimeTributario = tipoRegimeTributario;
106 espaco 361
        }
362
 
170 espaco 363
        @ManyToOne
364
        @ForeignKey(name="fk_pessoa_modelo")
365
        @JoinColumn(name = "seq_modelo_cliente", nullable=true)
366
        public Modelo getModeloCliente() {
367
                return modeloCliente;
368
        }
369
        public void setModeloCliente(Modelo modeloCliente) {
370
                this.modeloCliente = modeloCliente;
371
        }
372
 
373
        @Column(name="ind_novidades")
374
        public Boolean getIndicadorNovidades() {
375
                return indicadorNovidades;
376
        }
377
        public void setIndicadorNovidades(Boolean indicadorNovidades) {
378
                this.indicadorNovidades = indicadorNovidades;
379
        }
380
 
106 espaco 381
        @Valid
382
        @OneToMany(mappedBy="pessoa", cascade=CascadeType.ALL, orphanRemoval=true)
383
        public Set<Endereco> getEnderecos() {
384
                return enderecos;
385
        }
386
        public void setEnderecos(Set<Endereco> enderecos) {
387
                this.enderecos = enderecos;
388
        }
389
 
390
        @Valid
391
        @OneToMany(mappedBy="pessoa", cascade=CascadeType.ALL, orphanRemoval=true)
392
        public Set<DadosBancarios> getDadosBancarios() {
393
                return dadosBancarios;
394
        }
395
 
396
        public void setDadosBancarios(Set<DadosBancarios> dadosBancarios) {
397
                this.dadosBancarios = dadosBancarios;
398
        }
399
 
400
        @Column(name="ind_ativo", nullable=false)
401
        public Boolean getAtivo() {
402
                return ativo;
403
        }
404
 
405
        public void setAtivo(Boolean ativo) {
406
                this.ativo = ativo;
407
        }
170 espaco 408
 
409
        /*******************************************************/
106 espaco 410
 
411
        @Override
412
        public int hashCode() {
413
                final int prime = 31;
414
                int result = 1;
415
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
416
                return result;
417
        }
418
 
419
        @Override
420
        public boolean equals(Object obj) {
421
                if (this == obj)
422
                        return true;
423
                if (obj == null)
424
                        return false;
425
                if (getClass() != obj.getClass())
426
                        return false;
427
                Pessoa other = (Pessoa) obj;
428
                if (sequencial == null) {
429
                        if (other.sequencial != null)
430
                                return false;
431
                } else if (!sequencial.equals(other.sequencial))
432
                        return false;
433
                return true;
434
        }
435
 
436
        @Transient
170 espaco 437
        public Boolean ehTipoPessoaFisica() {
438
                return getTipoPessoa().equals(TipoPessoa.FISICA_F.getValor());
439
        }
440
 
441
        @Transient
442
        public Boolean ehTipoPessoaJuridica() {
443
                return getTipoPessoa().equals(TipoPessoa.JURIDICA_J.getValor());
444
        }
445
 
446
        @Transient
106 espaco 447
        public String getCpfCnpjFormatado() {
448
                return VerificadorUtil.naoEstaNulo(getCpfCnpj())? FormatarUtil.retornarCpfCnpjFormatado(getCpfCnpj()) : "";
449
        }
450
 
451
        @Transient
452
        public Endereco getEnderecoPrincipal() {
453
                ArrayList<Endereco> enderecos = new ArrayList<>(getEnderecos());
454
                return VerificadorUtil.isListaNulaOuVazia(enderecos)? null : enderecos.get(0);
455
        }
456
 
457
        @Transient
458
        public Boolean getEstadoCivilEhSolteiro() {
459
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.SOLTEIRO_S.getValor()) : false;
460
        }
461
        @Transient
462
        public Boolean getEstadoCivilEhCasado() {
463
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.CASADO_C.getValor()) : false;
464
        }
465
        @Transient
466
        public Boolean getEstadoCivilEhDivorciado() {
467
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.DIVORCIADO_D.getValor()) : false;
468
        }
469
        @Transient
470
        public Boolean getEstadoCivilEhViuvo() {
471
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.VIUVO_V.getValor()) : false;
472
        }
473
        @Transient
474
        public Boolean getEstadoCivilEhUniaoEstavel() {
475
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.UNIAO_ESTAVEL_U.getValor()) : false;
476
        }
477
        @Transient
478
        public Boolean getEstadoCivilEhOutros() {
479
                return VerificadorUtil.naoEstaNulo(getTipoEstadoCivil())? getTipoEstadoCivil().equals(TipoEstadoCivil.OUTROS_O.getValor()) : false;
480
        }
481
 
482
        @Transient
483
        public Boolean getSexoEhMasculino() {
484
                return VerificadorUtil.naoEstaNulo(getSexo())? getSexo().equals(TipoSexo.MASCULINO.getValor()) : false;
485
        }
486
        @Transient
487
        public Boolean getSexoEhFeminino() {
488
                return VerificadorUtil.naoEstaNulo(getSexo())? getSexo().equals(TipoSexo.FEMININO.getValor()) : false;
489
        }
490
 
491
        @Transient
492
        public Boolean getRacaCorEhIndigena() {
493
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.INDIGENA.getValor()) : false;
494
        }
495
        @Transient
496
        public Boolean getRacaCorEhBranca() {
497
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.BRANCA.getValor()) : false;
498
        }
499
        @Transient
500
        public Boolean getRacaCorEhNegra() {
501
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.NEGRA.getValor()) : false;
502
        }
503
        @Transient
504
        public Boolean getRacaCorEhAmarela() {
505
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.AMARELA.getValor()) : false;
506
        }
507
        @Transient
508
        public Boolean getRacaCorEhParda() {
509
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.PARDA.getValor()) : false;
510
        }
511
        @Transient
512
        public Boolean getRacaCorEhNaoInformada() {
513
                return VerificadorUtil.naoEstaNulo(getTipoRacaCor())? getTipoRacaCor().equals(TipoRacaCor.NAO_INFORMADA.getValor()) : false;
514
        }
515
 
516
}