Subversion Repositories Integrator Subversion

Rev

Rev 259 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.ec.core.generic.identidade.Identidade;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;

@Entity
@Table(name="sec_avaliacao_loja", schema="sc_sec")
public class AvaliacaoLoja implements Serializable, Identidade {

        private static final long serialVersionUID = 1L;

        private AvaliacaoLojaId avaliacaoLojaId;
        private Loja loja;
        private Avaliacao avaliacao;
        private String observacao;
        private Double valorMetaMensal;
        private Double valorMetaTicketMedio;
        private Double valorMargemContribuicao;
       
        private Double valorTotalVendido;
       
        public AvaliacaoLoja() {
                this.avaliacaoLojaId = new AvaliacaoLojaId();
        }
       
        public AvaliacaoLoja(AvaliacaoLojaId avalicaoLojaId) {
                this.avaliacaoLojaId = avalicaoLojaId;
        }
       
        public AvaliacaoLoja(Loja loja, Avaliacao avaliacao) {
                avaliacaoLojaId = new AvaliacaoLojaId();
                setAvaliacao(avaliacao);
                setLoja(loja);
        }

        @Override
        @Transient
        public Object getId() {
                return getAvaliacaoLojaId();
        }
        @Override
        public void setId(Object id) {
                this.avaliacaoLojaId = (AvaliacaoLojaId) id;
        }
       
        @EmbeddedId
        public AvaliacaoLojaId getAvaliacaoLojaId() {
                return avaliacaoLojaId;
        }
        public void setAvaliacaoLojaId(AvaliacaoLojaId avaliacaoLojaId) {
                this.avaliacaoLojaId = avaliacaoLojaId;
        }
       
        @ManyToOne
        @ForeignKey(name="fk_avalloja_avaliacao")
        @MapsId(value="sequencialAvaliacao")
        @JoinColumn(name = "seq_avaliacao", referencedColumnName="seq_avaliacao", insertable=false, updatable=false, nullable = false)
        public Avaliacao getAvaliacao() {
                return avaliacao;
        }
        public void setAvaliacao(Avaliacao avaliacao) {
                if (VerificadorUtil.naoEstaNulo(avaliacao)) {
                        avaliacaoLojaId.setSequencialAvaliacao(avaliacao.getSequencial());
                }
                this.avaliacao = avaliacao;
        }
       
        @ManyToOne
        @ForeignKey(name="fk_avalloja_loja")
        @MapsId(value="sequencialLoja")
        @JoinColumn(name = "seq_loja", referencedColumnName="seq_loja", insertable=false, updatable=false, nullable = false)
        public Loja getLoja() {
                return loja;
        }
        public void setLoja(Loja loja) {
                if (VerificadorUtil.naoEstaNulo(loja)) {
                        avaliacaoLojaId.setSequencialLoja(loja.getSequencial());
                }
                this.loja = loja;
        }
       
        @Column(name="dsc_observacao")
        @Size(max = 400, 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_meta_mensal")
        public Double getValorMetaMensal() {
                return valorMetaMensal;
        }
        public void setValorMetaMensal(Double valorMetaMensal) {
                this.valorMetaMensal = valorMetaMensal;
        }
       
        @Column(name="val_meta_ticketmedio")
        public Double getValorMetaTicketMedio() {
                return valorMetaTicketMedio;
        }
        public void setValorMetaTicketMedio(Double valorMetaTicketMedio) {
                this.valorMetaTicketMedio = valorMetaTicketMedio;
        }
       
        @Column(name="val_margem_contribuicao")
        public Double getValorMargemContribuicao() {
                return valorMargemContribuicao;
        }
        public void setValorMargemContribuicao(Double valorMargemContribuicao) {
                this.valorMargemContribuicao = valorMargemContribuicao;
        }
       
        @Transient
        public Double getValorTotalVendido() {
                return valorTotalVendido;
        }
        public void setValorTotalVendido(Double valorTotalVendido) {
                this.valorTotalVendido = valorTotalVendido;
        }
       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((avaliacaoLojaId == null) ? 0 : avaliacaoLojaId.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;
                AvaliacaoLoja other = (AvaliacaoLoja) obj;
                if (avaliacaoLojaId == null) {
                        if (other.avaliacaoLojaId != null)
                                return false;
                } else if (!avaliacaoLojaId.equals(other.avaliacaoLojaId))
                        return false;
                return true;
        }
       
        @Transient
        public Long getSequencialDaAvaliacao() {
                return VerificadorUtil.naoEstaNulo(getAvaliacao())? getAvaliacao().getSequencial() : null;
        }
       
        @Transient
        public Long getSequencialDaVigencia() {
                return VerificadorUtil.naoEstaNulo(getAvaliacao())? getAvaliacao().getSequencialDaVigencia() : null;
        }
       
        @Transient
        public Long getSequencialDaLoja() {
                return VerificadorUtil.naoEstaNulo(getAvaliacaoLojaId())? getAvaliacaoLojaId().getSequencialLoja() : null;
        }
       
        @Transient
        public Double retornarPercentualRealizado(Double totalVendas) {
                return retornarPercentual(totalVendas, getValorMetaMensal());
        }
       
        @Transient
        public Double retornarPercentual(Double total, Double meta) {
                return VerificadorUtil.naoEstaNulo(total) && VerificadorUtil.naoEstaNulo(meta)? meta > new Double(0.0) ? total / meta : new Double(0.0) : new Double(0.0);
        }
       
}