Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Blame | Compare with Previous | 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.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;
import org.hibernate.validator.constraints.NotEmpty;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.tipos.TipoEmitirNotaFiscal;

@Entity
@Table(name="sec_loja", schema="sc_sec")
public class Loja implements Serializable {
         
        private static final long serialVersionUID = 1L;
       
        private Long sequencial;
        private Integer ordenador;
        private Pessoa pessoaJuridica;
        private String descricao;
        private String dvr;
        private Maquineta maquineta;
        private String internet;
        private Date dataAbertura;
        private Date dataAberturaOficial;
        private Date dataFechamento;
        private Date dataFechamentoOficial;
        private String tipoEmitirNotaFiscal;
        private Double fundoCaixa;
        private Boolean receberNotaFiscalRemessa;
        private String descricaoCertificado;
        private String senhaCertificado;
        private String idToken;
        private String cscToken;
        private Integer limitadorProdutos;
        private String observacao;
        private Boolean ativo;
       
        private String colorComissao;
        private Double metaMensal;
        private Double metaDiariaLiquida;
        private Double totalVendasNoMes;
       
        public Loja() {}
       
        public Loja(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        public Loja(Long sequencial, String descricao) {
                this.sequencial = sequencial;
                this.descricao = descricao;
        }
       
        @Id
        @SequenceGenerator(name = "sq_loja")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="seq_loja", nullable=false)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        @Column(name="num_ordem")
        public Integer getOrdenador() {
                return ordenador;
        }
        public void setOrdenador(Integer ordenador) {
                this.ordenador = ordenador;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_loja_pessoa")
        @JoinColumn(name="seq_pessoa", referencedColumnName="seq_pessoa", insertable=true, updatable=true)
        public Pessoa getPessoaJuridica() {
                return pessoaJuridica;
        }
        public void setPessoaJuridica(Pessoa pessoaJuridica) {
                this.pessoaJuridica = pessoaJuridica;
        }

        @Column(name="dsc_loja")
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Descrição da Loja")
        @NotNull(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
        @NotEmpty(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
        public String getDescricao() {
                return descricao;
        }
        public void setDescricao(String descricao) {
                this.descricao = StringUtil.setarUpperCaseComTrim(descricao);
        }
       
        @Column(name="dsc_dvr")
        @Size(max = 30, message = "Limite de caracteres ultrapassado: DVR")
        public String getDvr() {
                return dvr;
        }
        public void setDvr(String dvr) {
                this.dvr = dvr;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_loja_maquineta")
        @JoinColumn(name="seq_maquineta", referencedColumnName="seq_maquineta", insertable=true, updatable=true)
        public Maquineta getMaquineta() {
                return maquineta;
        }
        public void setMaquineta(Maquineta maquineta) {
                this.maquineta = maquineta;
        }
       
        @Column(name="dsc_internet")
        @Size(max = 50, message = "Limite de caracteres ultrapassado: Descrição da Internet")
        public String getInternet() {
                return internet;
        }
        public void setInternet(String internet) {
                this.internet = internet;
        }
       
        @Column(name="dat_abertura")
        public Date getDataAbertura() {
                return dataAbertura;
        }
        public void setDataAbertura(Date dataAbertura) {
                this.dataAbertura = dataAbertura;
        }
       
        @Column(name="dat_abertura_oficial")
        public Date getDataAberturaOficial() {
                return dataAberturaOficial;
        }
        public void setDataAberturaOficial(Date dataAberturaOficial) {
                this.dataAberturaOficial = dataAberturaOficial;
        }
       
        @Column(name="dat_fechamento")
        public Date getDataFechamento() {
                return dataFechamento;
        }
        public void setDataFechamento(Date dataFechamento) {
                this.dataFechamento = dataFechamento;
        }
       
        @Column(name="dat_fechamento_oficial")
        public Date getDataFechamentoOficial() {
                return dataFechamentoOficial;
        }
        public void setDataFechamentoOficial(Date dataFechamentoOficial) {
                this.dataFechamentoOficial = dataFechamentoOficial;
        }
       
        @Column(name="tip_emitir_nfe", nullable=false)
        @NotNull(message="Obrigatório informar o tipo de emissão da nota fiscal", groups={Cadastrar.class, Alterar.class})
        public String getTipoEmitirNotaFiscal() {
                return tipoEmitirNotaFiscal;
        }
        public void setTipoEmitirNotaFiscal(String tipoEmitirNotaFiscal) {
                this.tipoEmitirNotaFiscal = tipoEmitirNotaFiscal;
        }
        @Transient
        public String getDescricaoDoTipoEmitirNotaFiscal() {
                return VerificadorUtil.naoEstaNuloOuVazio(getTipoEmitirNotaFiscal())? TipoEmitirNotaFiscal.parse(getTipoEmitirNotaFiscal()).getDescricao() : null;
        }
       
        @Column(name="val_fundo_caixa")
        public Double getFundoCaixa() {
                return fundoCaixa;
        }
        public void setFundoCaixa(Double fundoCaixa) {
                this.fundoCaixa = fundoCaixa;
        }
       
        @NotNull(message="Obrigatório informar se receberá NF Remessa", groups={Cadastrar.class, Alterar.class})
        @Column(name="ind_receber_nf_remessa", nullable=false)
        public Boolean getReceberNotaFiscalRemessa() {
                return receberNotaFiscalRemessa;
        }
        public void setReceberNotaFiscalRemessa(Boolean receberNotaFiscalRemessa) {
                this.receberNotaFiscalRemessa = receberNotaFiscalRemessa;
        }
       
        @Column(name="dsc_certificado")
        @Size(max = 50, message = "Limite de caracteres ultrapassado: Descrição do Certificado")
        public String getDescricaoCertificado() {
                return descricaoCertificado;
        }
        public void setDescricaoCertificado(String descricaoCertificado) {
                this.descricaoCertificado = StringUtil.setarUpperCaseComTrim(descricaoCertificado);
        }
       
        @Column(name="dsc_senha_certificado")
        @Size(max = 10, message = "Limite de caracteres ultrapassado: Senha do Certificado")
        public String getSenhaCertificado() {
                return senhaCertificado;
        }
        public void setSenhaCertificado(String senhaCertificado) {
                this.senhaCertificado = senhaCertificado;
        }
       
        @Column(name="dsc_idtoken")
        @Size(max = 10, message = "Limite de caracteres ultrapassado: Descrição do Token")
        public String getIdToken() {
                return idToken;
        }
        public void setIdToken(String idToken) {
                this.idToken = StringUtil.setarUpperCaseComTrim(idToken);
        }
       
        @Column(name="dsc_csctoken")
        @Size(max = 50, message = "Limite de caracteres ultrapassado: CSC do Token")
        public String getCscToken() {
                return cscToken;
        }
        public void setCscToken(String cscToken) {
                this.cscToken = StringUtil.setarUpperCaseComTrim(cscToken);
        }
       
        @Column(name="qtd_limitador_produtos")
        public Integer getLimitadorProdutos() {
                return limitadorProdutos;
        }
        public void setLimitadorProdutos(Integer limitadorProdutos) {
                this.limitadorProdutos = limitadorProdutos;
        }
       
        @Column(name="dsc_observacao")
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = observacao;
        }
       
        @Column(name="ind_ativo", nullable=false)
        public Boolean getAtivo() {
                return ativo;
        }
        public void setAtivo(Boolean ativo) {
                this.ativo = ativo;
        }
       
        @Transient
        public Double percentualRealizadoMetaMensal(Double valorTotalVendido, Double metaMensal) {
                if (VerificadorUtil.naoEstaNulo(valorTotalVendido) && VerificadorUtil.naoEstaNulo(metaMensal)) {
                        if (metaMensal > new Double(0.0)) {
                                return valorTotalVendido / metaMensal;
                        }
                }
                return new Double (0.0);
        }
       
        @Transient
        public String getColorComissao() {
                return colorComissao;
        }
        public void setColorComissao(String colorComissao) {
                this.colorComissao = colorComissao;
        }
       
        @Transient
        public Double getMetaMensal() {
                return metaMensal;
        }
        public void setMetaMensal(Double metaMensal) {
                this.metaMensal = metaMensal;
        }
       
        @Transient
        public Double getMetaDiariaLiquida() {
                return metaDiariaLiquida;
        }
        public void setMetaDiariaLiquida(Double metaDiariaLiquida) {
                this.metaDiariaLiquida = metaDiariaLiquida;
        }
       
        @Transient
        public Double getTotalVendasNoMes() {
                return totalVendasNoMes;
        }
        public void setTotalVendasNoMes(Double totalVendasNoMes) {
                this.totalVendasNoMes = totalVendasNoMes;
        }
       
        @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;
                Loja other = (Loja) obj;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                return true;
        }
       
        /*
        @Transient
        public Boolean emissaoNotaFiscalPermitida() {
                if (this.getSequencial().equals(ConstantesSEC.SEQUENCIAL_LOJA_VIVO_4) ||
                                this.getSequencial().equals(ConstantesSEC.SEQUENCIAL_LOJA_FARMACIA_7) ||
                                this.getSequencial().equals(ConstantesSEC.SEQUENCIAL_ESTOQUE_9)) {
                        return false;
                }
                return true;
        }
        */

       
        @Transient
        public Boolean emissaoNotaFiscalPermitida() {
                return !TipoEmitirNotaFiscal.NAO_PERMITIR_EMISSAO.getValor().equals(getTipoEmitirNotaFiscal());
        }
       
        @Transient
        public Boolean emissaoNotaFiscalEletronica() {
                return TipoEmitirNotaFiscal.EMITIR_NOTA_ELETRONICA.getValor().equals(getTipoEmitirNotaFiscal());
        }
       
        @Transient
        public String getDescricaoMaquineta() {
                return VerificadorUtil.naoEstaNulo(getMaquineta()) ? getMaquineta().descricaoCompleta() : null;
        }
       
}