Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.StringUtil;

@Entity
@Table(name="sec_compra", schema="sc_sec")
public class Compra implements Serializable {
         
        private static final long serialVersionUID = 1L;
       
        private Long sequencial;
        private Loja loja;
        private Fornecedor fornecedor;
        private Conta conta;
        private Date dataCompra;
        private Date dataEntrada;
        private String observacao;
        private Double valorTotal;
        private NotaFiscal notaFiscal;
        private Boolean indicadorVerificada;
        private Boolean indicadorAtivo;
       
//      private Set<CompraProduto> listaProdutosDaCompra;

        public Compra() {
//              listaProdutosDaCompra = new HashSet<CompraProduto>();
        }
       
        @Id
        @SequenceGenerator(name = "sq_compra")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="seq_compra", nullable=false)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_compra_loja")
        @JoinColumn(name="seq_loja", referencedColumnName="seq_loja")
        public Loja getLoja() {
                return loja;
        }
        public void setLoja(Loja loja) {
                this.loja = loja;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_compra_fornecedor")
        @JoinColumn(name="seq_fornecedor", referencedColumnName="seq_fornecedor", nullable=true)
        public Fornecedor getFornecedor() {
                return fornecedor;
        }
        public void setFornecedor(Fornecedor fornecedor) {
                this.fornecedor = fornecedor;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_compra_conta")
        @JoinColumn(name="seq_conta", referencedColumnName="seq_conta", nullable=true)
        public Conta getConta() {
                return conta;
        }
        public void setConta(Conta conta) {
                this.conta = conta;
        }
       
        @NotNull(message = "Parâmetro obrigatório não preenchido: Data da Compra", groups = {Cadastrar.class, Alterar.class})
        @Column(name="dat_compra", nullable=false)
        public Date getDataCompra() {
                return dataCompra;
        }
        public void setDataCompra(Date dataCompra) {
                this.dataCompra = dataCompra;
        }
       
        @Column(name="dat_entrada", nullable=false)
        public Date getDataEntrada() {
                return dataEntrada;
        }
        public void setDataEntrada(Date dataEntrada) {
                this.dataEntrada = dataEntrada;
        }
       
        @Column(name="dsc_observacao")
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Observação")
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
        }
       
        @Column(name="val_total")
        public Double getValorTotal() {
                return valorTotal;
        }
        public void setValorTotal(Double valorTotal) {
                this.valorTotal = valorTotal;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_compra_notafiscal")
        @JoinColumn(name="seq_nota_fiscal", referencedColumnName="seq_nota_fiscal")
        public NotaFiscal getNotaFiscal() {
                return notaFiscal;
        }
        public void setNotaFiscal(NotaFiscal notaFiscal) {
                this.notaFiscal = notaFiscal;
        }
       
        @Column(name="ind_ativo")
        public Boolean getIndicadorAtivo() {
                return indicadorAtivo;
        }
        public void setIndicadorAtivo(Boolean indicadorAtivo) {
                this.indicadorAtivo = indicadorAtivo;
        }
       
        @Column(name="ind_verificada")
        public Boolean getIndicadorVerificada() {
                return indicadorVerificada;
        }
        public void setIndicadorVerificada(Boolean indicadorVerificada) {
                this.indicadorVerificada = indicadorVerificada;
        }
       
        /*
        @OneToMany(mappedBy="compra", cascade=CascadeType.ALL, fetch=FetchType.LAZY, orphanRemoval=true)
        public Set<CompraProduto> getListaProdutosDaCompra() {
                return listaProdutosDaCompra;
        }
        public void setListaProdutosDaCompra(Set<CompraProduto> listaProdutosDaCompra) {
                this.listaProdutosDaCompra = listaProdutosDaCompra;
        }
        */

       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
                return result;
        }
       
        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Compra other = (Compra) obj;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                return true;
        }
       
}