Subversion Repositories Integrator Subversion

Rev

Rev 430 | Rev 653 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.util.List;

import javax.persistence.Transient;

import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.tipos.TipoComissionamento;

public class AvaliacaoFuncionarioDTO {

        private AvaliacaoDTO avaliacaoDTO;
        private FuncionarioDTO funcionarioDTO;
       
        private Double porcentagemComissao;
        private String observacao;
        private Long pontuacao;
       
        private Double valorTotalVendido;
        private Double valorMetaMensal;
        private Double valorComissao;
       
        private List<AvaliacaoFuncionarioItemAvaliacaoDTO> itensAvaliacao;
       
        public AvaliacaoFuncionarioDTO() {}
       
        public AvaliacaoFuncionarioDTO(Long sequencialFuncionario, Long sequencialAvaliacao, Long sequencialVigencia, String descricaoVigencia,
                        String observacao, Long pontuacaoNegativa) {
                this.avaliacaoDTO = new AvaliacaoDTO(sequencialAvaliacao, null, descricaoVigencia);
                this.funcionarioDTO = new FuncionarioDTO(sequencialFuncionario, null, null);
               
                this.observacao = observacao;
                if (VerificadorUtil.naoEstaNulo(pontuacaoNegativa)) {
                        this.pontuacao = 10 - pontuacaoNegativa;
                } else {
                        this.pontuacao = new Long(10);
                }
        }
       
        public AvaliacaoFuncionarioDTO(Long sequencialPessoa, Long sequencialFuncionario, String nomeFuncionario, String emailFuncionario,
                        Integer codigoContabilidade, Long sequencialAvaliacao, Long sequencialVigencia, String descricaoVigencia, Double porcentagemComissao,
                        String observacao, Long pontuacao, Double valorComissao, Double valorMetaMensal) {
                this.avaliacaoDTO = new AvaliacaoDTO(sequencialAvaliacao, sequencialVigencia, descricaoVigencia);
                this.funcionarioDTO = new FuncionarioDTO(sequencialFuncionario, sequencialPessoa, nomeFuncionario, emailFuncionario, codigoContabilidade);
                this.porcentagemComissao = porcentagemComissao;
                this.observacao = observacao;
                this.pontuacao = pontuacao;
                this.valorComissao = valorComissao;
                this.valorMetaMensal = valorMetaMensal;
        }
       
        public AvaliacaoDTO getAvaliacaoDTO() {
                return avaliacaoDTO;
        }
        public void setAvaliacaoDTO(AvaliacaoDTO avaliacaoDTO) {
                this.avaliacaoDTO = avaliacaoDTO;
        }
       
        public FuncionarioDTO getFuncionarioDTO() {
                return funcionarioDTO;
        }
        public void setFuncionarioDTO(FuncionarioDTO funcionarioDTO) {
                this.funcionarioDTO = funcionarioDTO;
        }
       
        public Double getPorcentagemComissao() {
                return porcentagemComissao;
        }
        public void setPorcentagemComissao(Double porcentagemComissao) {
                this.porcentagemComissao = porcentagemComissao;
        }
       
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = observacao;
        }
       
        public Long getPontuacao() {
                return pontuacao;
        }
        public void setPontuacao(Long pontuacao) {
                this.pontuacao = pontuacao;
        }
       
        public Double getValorTotalVendido() {
                return valorTotalVendido;
        }
        public void setValorTotalVendido(Double valorTotalVendido) {
                this.valorTotalVendido = valorTotalVendido;
        }
       
        public Double getValorMetaMensal() {
                return valorMetaMensal;
        }
        public void setValorMetaMensal(Double valorMetaMensal) {
                this.valorMetaMensal = valorMetaMensal;
        }
       
        public Double getValorComissao() {
                return valorComissao;
        }
        public void setValorComissao(Double valorComissao) {
                this.valorComissao = valorComissao;
        }
       
        public List<AvaliacaoFuncionarioItemAvaliacaoDTO> getItensAvaliacao() {
                return itensAvaliacao;
        }
        public void setItensAvaliacao(List<AvaliacaoFuncionarioItemAvaliacaoDTO> itensAvaliacao) {
                this.itensAvaliacao = itensAvaliacao;
        }
       
        @Transient
        public Double retornarValorComissao(Double totalVendas, String tipoComissionamento) {
                if (VerificadorUtil.naoEstaNuloOuVazio(valorMetaMensal)) {
                        return totalVendas * retornarFaixaComissao(totalVendas, tipoComissionamento);
                }
                return 0.0;
        }
        /*
        @Transient
        public Double retornarValorComissao() {
                if (VerificadorUtil.naoEstaNulo(getFuncionario())) {
                        return retornarValorComissao(getValorTotalVendido(), getFuncionario().getTipoComissionamento());
                }
                return 0.0;
        }
        */

        @Transient
        public Double retornarFaixaComissao(Double totalVendas, String tipoComissionamento) {
                if (VerificadorUtil.naoEstaNuloOuVazio(valorMetaMensal)) {
                        Double percentualRealizado = totalVendas * 100 / valorMetaMensal;
                        if (TipoComissionamento.COMISSSIONAMENTO_ESPACO_CASE.getValor().equals(tipoComissionamento)) {
                                if (percentualRealizado < 75) {
                                        return 0.0;
                                } else if (percentualRealizado < 100) {
                                        return 0.01;
                                } else if (percentualRealizado < 125) {
                                        return 0.02;
                                }
                                return 0.025;
                        }
                        if (TipoComissionamento.COMISSSIONAMENTO_FARMACIA.getValor().equals(tipoComissionamento)) {
                                if (percentualRealizado < 75) {
                                        return 0.0;
                                } else if (percentualRealizado < 100) {
                                        return 0.025;
                                }
                                return 0.05;
                        }
                }
                return 0.0;
        }
        /*
        @Transient
        public Double retornarFaixaComissao() {
                if (VerificadorUtil.naoEstaNulo(getFuncionario())) {
                        return retornarFaixaComissao(getValorTotalVendido(), getFuncionario().getTipoComissionamento());
                }
                return 0.0;
        }
        */

        @Transient
        public Double retornarPercentualRealizado() {
                return retornarPercentual(getValorTotalVendido(), getValorMetaMensal());
        }
       
        @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);
        }

        @Transient
        public Integer getCodigoContabilidadeDoFuncionario() {
                return VerificadorUtil.naoEstaNulo(getFuncionarioDTO())? getFuncionarioDTO().getCodigoContabilidade() : null;
        }

        @Transient
        public Long getSequencialPessoaDoFuncionario() {
                return VerificadorUtil.naoEstaNulo(getFuncionarioDTO())? getFuncionarioDTO().getSequencialPessoaDoFuncionario() : null;
        }
       
        @Transient
        public Long getSequencialDoFuncionario() {
                return VerificadorUtil.naoEstaNulo(getFuncionarioDTO())? getFuncionarioDTO().getSequencialFuncionario() : null;
        }
       
        @Transient
        public Long getSequencialDaAvaliacao() {
                return VerificadorUtil.naoEstaNulo(getAvaliacaoDTO())? getAvaliacaoDTO().getSequencial() : null;
        }
       
        @Transient
        public String getNomeDaPessoa() {
                return VerificadorUtil.naoEstaNulo(getFuncionarioDTO())? getFuncionarioDTO().getNomeDaPessoa() : null;
        }

        @Transient
        public String getEmailDaPessoa() {
                return VerificadorUtil.naoEstaNulo(getFuncionarioDTO())? getFuncionarioDTO().getEmailDaPessoa() : null;
        }

}