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.ArrayList;
import java.util.Date;
import java.util.List;

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.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;

@Entity
@Table(name="sec_lancamento", schema="sc_sec")
public class Lancamento implements Serializable, Cloneable {
         
        private static final long serialVersionUID = 1L;

        private Long sequencial;
        private Venda venda;
//      private Produto produto;
        private Double valorCompra;
        private Double valorVarejo;
        private Double valorVenda;
        private String observacao;
        private String observacaoNotaFiscal;
        private Date dataValidacaoVivo;
        private Date dataBaixaVivo;
        private Double valorRecebidoVivo;
        private Date dataRecebidoVivo;
        private Boolean ativo;
       
//      private Cupom cupom;
       
        private Integer quantidadeLancamento = 1;
        private String observacaoIMEI1;
        private String observacaoIMEI2;
       
        private String observacaoRestaurante = "COMPLETO";
        private String opcaoRestaurante = "";
        private List<String> opcoesRestaurante = new ArrayList<String>();

        @Id
        @SequenceGenerator(name = "sq_lancamento")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="seq_lancamento", nullable=false)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_lancamento_venda")
        @JoinColumn(name="seq_venda", referencedColumnName="seq_venda", insertable=true, updatable=false)
        public Venda getVenda() {
                return venda;
        }
        public void setVenda(Venda venda) {
                this.venda = venda;
        }
/*
        @ManyToOne
        @ForeignKey(name = "fk_lancamento_produto")
        @JoinColumn(name="seq_produto", referencedColumnName="seq_produto", insertable=true, updatable=false)
        public Produto getProduto() {
                return produto;
        }
        public void setProduto(Produto produto) {
                this.produto = produto;
        }
*/
     
        @Column(name="val_compra")
        public Double getValorCompra() {
                return valorCompra;
        }
        public void setValorCompra(Double valorCompra) {
                this.valorCompra = valorCompra;
        }

        @Column(name="val_varejo")
        public Double getValorVarejo() {
                return valorVarejo;
        }
        public void setValorVarejo(Double valorVarejo) {
                this.valorVarejo = valorVarejo;
        }

        @Column(name="val_venda")
        public Double getValorVenda() {
                return valorVenda;
        }
        public void setValorVenda(Double valorVenda) {
                this.valorVenda = valorVenda;
        }

        @Column(name="dsc_observacao")
        @Size(max = 1000, message = "Limite de caracteres ultrapassado: Observação")
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
        }
       
        @Column(name="dsc_observacao_notafiscal")
        @Size(max = 200, message = "Limite de caracteres ultrapassado: Observação da Nota Fiscal")
        public String getObservacaoNotaFiscal() {
                return observacaoNotaFiscal;
        }
        public void setObservacaoNotaFiscal(String observacaoNotaFiscal) {
                this.observacaoNotaFiscal = StringUtil.setarUpperCaseComTrim(observacaoNotaFiscal);
        }
       
        @Column(name="dat_validacao_vivo")
        public Date getDataValidacaoVivo() {
                return dataValidacaoVivo;
        }
        public void setDataValidacaoVivo(Date dataValidacaoVivo) {
                this.dataValidacaoVivo = dataValidacaoVivo;
        }
       
        @Column(name="dat_baixa_vivo")
        public Date getDataBaixaVivo() {
                return dataBaixaVivo;
        }
        public void setDataBaixaVivo(Date dataBaixaVivo) {
                this.dataBaixaVivo = dataBaixaVivo;
        }
       
        @Column(name="val_recebido_vivo")
        public Double getValorRecebidoVivo() {
                return valorRecebidoVivo;
        }
        public void setValorRecebidoVivo(Double valorRecebidoVivo) {
                this.valorRecebidoVivo = valorRecebidoVivo;
        }
       
        @Column(name="dat_recebido_vivo")
        public Date getDataRecebidoVivo() {
                return dataRecebidoVivo;
        }
        public void setDataRecebidoVivo(Date dataRecebidoVivo) {
                this.dataRecebidoVivo = dataRecebidoVivo;
        }

        @Column(name="ind_ativo", nullable=false)
        public Boolean getAtivo() {
                return ativo;
        }
        public void setAtivo(Boolean ativo) {
                this.ativo = ativo;
        }
/*     
        @ManyToOne
        @ForeignKey(name="fk_lancamento_cupom")
        @JoinColumn(name = "seq_cupom", nullable=true)
        public Cupom getCupom() {
                return cupom;
        }
        public void setCupom(Cupom cupom) {
                this.cupom = cupom;
        }
*/
     
        @Transient
        public Integer getQuantidadeLancamento() {
                return quantidadeLancamento;
        }
        public void setQuantidadeLancamento(Integer quantidadeLancamento) {
                this.quantidadeLancamento = quantidadeLancamento;
        }
       
        @Transient
        public String getObservacaoIMEI1() {
                return observacaoIMEI1;
        }
        public void setObservacaoIMEI1(String observacaoIMEI1) {
                this.observacaoIMEI1 = observacaoIMEI1;
        }
       
        @Transient
        public String getObservacaoIMEI2() {
                return observacaoIMEI2;
        }
        public void setObservacaoIMEI2(String observacaoIMEI2) {
                this.observacaoIMEI2 = observacaoIMEI2;
        }
       
        @Transient
        public String getObservacaoRestaurante() {
                return observacaoRestaurante;
        }
        public void setObservacaoRestaurante(String observacaoRestaurante) {
                this.observacaoRestaurante = observacaoRestaurante;
        }
       
        @Transient
        public String getOpcaoRestaurante() {
                return opcaoRestaurante;
        }
        public void setOpcaoRestaurante(String opcaoRestaurante) {
                this.opcaoRestaurante = opcaoRestaurante;
        }
       
        @Transient
        public List<String> getOpcoesRestaurante() {
                return opcoesRestaurante;
        }
        public void setOpcoesRestaurante(List<String> opcoesRestaurante) {
                this.opcoesRestaurante = opcoesRestaurante;
        }
       
        @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;
                Lancamento other = (Lancamento) obj;
                if (sequencial == null) {
                        if (other.sequencial != null) {
                                return false;
                        } else {return false;}
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                return true;
        }
       
        @Override
        public Lancamento clone() throws CloneNotSupportedException {
                return (Lancamento) super.clone();
        }
/*     
        @Transient
        public void preencher(Produto produtoSelecionado) {
                this.setProduto(produtoSelecionado);
                this.setValorCompra(produtoSelecionado.getValorCompra());
                if (produtoSelecionado.getProdutoEmPromocao()) {
                        this.setValorVarejo(produtoSelecionado.getValorVarejoPromocional());
                        this.setValorVenda(produtoSelecionado.getValorVarejoPromocional());
                } else {
                        this.setValorVarejo(produtoSelecionado.getValorVarejo());
                        this.setValorVenda(produtoSelecionado.getValorVarejo());
                }
        }
       
        @Transient
        public void preencherComPrecoPopular(Produto produtoSelecionado) {
                this.setProduto(produtoSelecionado);
                this.setValorCompra(produtoSelecionado.getValorCompra());
                this.setValorVarejo(produtoSelecionado.getValorVarejoPopular());
                this.setValorVenda(produtoSelecionado.getValorVarejoPopular());
        }
       
        @Transient
        public void preencherComPrecoAtacado(Produto produtoSelecionado) {
                this.setProduto(produtoSelecionado);
                this.setValorCompra(produtoSelecionado.getValorCompra());
                this.setValorVarejo(produtoSelecionado.getValorAtacado());
                this.setValorVenda(produtoSelecionado.getValorAtacado());
        }
       
        @Transient
        public String tipoDoProduto() {
                return VerificadorUtil.naoEstaNulo(this.getProduto()) ? this.getProduto().getTipo() : "";
        }
*/
     
        @Transient
        public Double valorDescontos() {
                if (VerificadorUtil.estaNulo(getValorVarejo())) {
                        return getValorVenda();
                }
                return getValorVarejo() - getValorVenda();
        }
       
        @Transient
        public String valorPercentualDescontos() {
                if (VerificadorUtil.estaNulo(getValorVarejo())) {
                        return "0%";
                }
                return StringUtil.formatarPercentual((getValorVarejo() - getValorVenda()) / getValorVarejo());
        }
       
        @Transient
        public Boolean comDescontos() {
                if (VerificadorUtil.naoEstaNulo(getValorVarejo()) && VerificadorUtil.naoEstaNulo(getValorVenda())) {
                        return getValorVarejo() > getValorVenda();
                }
                return false;
        }
/*     
        @Transient
        public Boolean comDescontosAcimaDoPermitido() {
                if (VerificadorUtil.naoEstaNulo(getValorVarejo()) && VerificadorUtil.naoEstaNulo(getValorVenda())) {
                        if (getProduto().getValorVarejo() < 100) {
                                Double valorDesconto = getValorVarejo() - getValorVenda();
                                return valorDesconto > ConstantesSEC.Venda.LIMITE_DESCONTO_ABAIXO_100;
                        } else {
                                Double percentualDesconto = 100 - (getValorVenda()*100/getValorVarejo());
                                return percentualDesconto > ConstantesSEC.Venda.LIMITE_PERCENTUAL_DESCONTO_ACIMA_100;
                        }
                }
                return false;
        }
       
        @Transient
        public String getDescricaoNotaFiscal() {
                StringBuilder descricaoCompleta = new StringBuilder();
                descricaoCompleta.append(this.getProduto().getDescricaoNotaFiscal(this.getObservacaoNotaFiscal()));
                return descricaoCompleta.toString().trim();
        }
       
        @Transient
        public String getDescricaoComanda() {
                StringBuilder descricaoCompleta = new StringBuilder();
                descricaoCompleta.append(this.getProduto().getDescricaoNotaFiscal(this.getObservacao()));
                return descricaoCompleta.toString().trim();
        }
       
        @Transient
        public Long getSequencialDoCupom() {
                return VerificadorUtil.naoEstaNulo(getCupom())? getCupom().getSequencial() : null;
        }
*/
     
}