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 cpfFuncionario,
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, cpfFuncionario, 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;
}
*/
public Double retornarPercentualRealizado
() {
return retornarPercentual
(getValorTotalVendido
(), getValorMetaMensal
());
}
public Double retornarPercentualRealizado
(Double totalVendas
) {
return retornarPercentual
(totalVendas, getValorMetaMensal
());
}
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);
}
public Integer getCodigoContabilidadeDoFuncionario
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getCodigoContabilidade() :
null;
}
public Long getSequencialPessoaDoFuncionario
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getSequencialPessoaDoFuncionario() :
null;
}
public Long getSequencialDoFuncionario
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getSequencialFuncionario() :
null;
}
public Long getSequencialDaAvaliacao
() {
return VerificadorUtil.
naoEstaNulo(getAvaliacaoDTO
())? getAvaliacaoDTO
().
getSequencial() :
null;
}
public String getCpfCnpjDoFuncionario
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getCpfCnpjDaPessoa() :
null;
}
public String getNomeDaPessoa
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getNomeDaPessoa() :
null;
}
public String getEmailDaPessoa
() {
return VerificadorUtil.
naoEstaNulo(getFuncionarioDTO
())? getFuncionarioDTO
().
getEmailDaPessoa() :
null;
}
}