Subversion Repositories Integrator Subversion

Rev

Rev 252 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.Serializable;
4
import java.util.Calendar;
5
import java.util.GregorianCalendar;
6
import java.util.List;
7
 
8
import javax.inject.Inject;
9
import javax.inject.Named;
10
 
11
import org.springframework.context.annotation.Scope;
12
 
195 espaco 13
import br.com.ec.core.generic.GenericService;
14
import br.com.ec.core.util.VerificadorUtil;
106 espaco 15
import br.com.ec.domain.dto.ColaboradorDTO;
16
import br.com.ec.domain.model.AvaliacaoFuncionario;
17
import br.com.ec.domain.model.Usuario;
18
import br.com.ec.domain.model.Vigencia;
19
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
20
import br.com.ec.domain.service.usuario.UsuarioService;
21
import br.com.ec.domain.service.venda.VendaService;
22
import br.com.ec.domain.service.vendedor.VendedorService;
23
import br.com.ec.domain.service.vigencia.VigenciaService;
24
import br.com.ec.domain.shared.ConstantesSEC;
195 espaco 25
import br.com.ec.web.generic.AbstractBean;
106 espaco 26
 
27
@Named
28
@Scope("view")
29
public class ColaboradorVivoBean extends AbstractBean<ColaboradorDTO> implements Serializable {
30
 
31
        private static final long serialVersionUID = 1L;
32
 
33
        private UsuarioService usuarioService;
34
        private VendaService vendaService;
35
        private VendedorService vendedorService;
36
        private VigenciaService vigenciaService;
37
 
38
        private ColaboradorDTO resumoAntigo;
39
        private ColaboradorDTO resumoPromocaoInterna;
40
        private ColaboradorDTO resumoPromocaoInternaAnterior;
41
 
42
        private ContextoSeguranca contextoSeguranca;
43
 
44
        List<Vigencia> ultimasVigencias;
45
 
46
        @Inject
47
        public ColaboradorVivoBean(UsuarioService usuarioService, VendaService vendaService, VendedorService vendedorService,
48
                        VigenciaService vigenciaService, ContextoSeguranca contextoSeguranca) {
49
                this.usuarioService = usuarioService;
50
                this.vendaService = vendaService;
51
                this.vendedorService = vendedorService;
52
                this.vigenciaService = vigenciaService;
53
                this.contextoSeguranca = contextoSeguranca;
54
        }
55
 
56
        @Override
57
        public void preCarregamento() {
58
                setUltimasVigencias(vigenciaService.consultarUltimasVigencias());
59
                Usuario usuarioSelecionado = usuarioService.consultarPorId(contextoSeguranca.obterUsuario());
60
 
61
                if (!getUltimasVigencias().isEmpty()) {
62
                        if (getUltimasVigencias().size() >= 1) {
63
                                Vigencia primeiraVigencia = getUltimasVigencias().get(0);
64
                                ColaboradorDTO colaborador = new ColaboradorDTO();
65
                                colaborador.setUsuario(usuarioSelecionado);
66
                                colaborador.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), primeiraVigencia, null));
67
                                setEntidade(colaborador);
68
                                colaborador.getRankingVendedor().setPercentualMetaMensal(calcularPorcentagemDaMetaMensal());
69
                                colaborador.getRankingVendedor().setPercentualMetaDiaria(calcularPorcentagemDaMetaDiaria());
70
                        }
71
                        if (getUltimasVigencias().size() >= 2) {
72
                                Vigencia segundaVigencia = getUltimasVigencias().get(1);
73
                                ColaboradorDTO colaboradorAnterior = new ColaboradorDTO();
74
                                colaboradorAnterior.setUsuario(usuarioSelecionado);
75
                                colaboradorAnterior.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), segundaVigencia, null));
76
                                setResumoAntigo(colaboradorAnterior);
77
//                              colaboradorAnterior.getRankingVendedor().setPercentualMetaMensal(calcularPorcentagemDaMetaMensal());
78
//                              colaboradorAnterior.getRankingVendedor().setPercentualMetaDiaria(calcularPorcentagemDaMetaDiaria());
79
                        }
80
                }
356 espaco 81
                /*
106 espaco 82
                ColaboradorDTO colaboradorPromocaoInterna = new ColaboradorDTO();
83
                colaboradorPromocaoInterna.setUsuario(usuarioSelecionado);
84
                colaboradorPromocaoInterna.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
85
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAtual()),
252 espaco 86
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAtual()),
87
                                ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS));
106 espaco 88
                setResumoPromocaoInterna(colaboradorPromocaoInterna);
89
 
90
                ColaboradorDTO colaboradorPromocaoInternaAnterior = new ColaboradorDTO();
91
                colaboradorPromocaoInternaAnterior.setUsuario(usuarioSelecionado);
92
                colaboradorPromocaoInternaAnterior.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
93
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAnterior()),
252 espaco 94
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAnterior()),
95
                                ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS_MES_ANTERIOR));
106 espaco 96
                setResumoPromocaoInternaAnterior(colaboradorPromocaoInternaAnterior);
356 espaco 97
                */
106 espaco 98
        }
99
 
100
        @Override
101
        public void limparEntidade() {
102
                setEntidade(new ColaboradorDTO());
103
        }
104
 
105
        @Override
106
        public GenericService<ColaboradorDTO> getService() {
107
                return null;
108
        }
109
 
110
        @Override
111
        public ColaboradorDTO getEntidade() {
112
                return entidade;
113
        }
114
 
115
        @Override
116
        public ColaboradorDTO getId() {
117
                return getEntidade();
118
        }
119
 
120
        public ColaboradorDTO getResumoAntigo() {
121
                return resumoAntigo;
122
        }
123
        public void setResumoAntigo(ColaboradorDTO resumoAntigo) {
124
                this.resumoAntigo = resumoAntigo;
125
        }
126
 
127
        public ColaboradorDTO getResumoPromocaoInterna() {
128
                return resumoPromocaoInterna;
129
        }
130
        public void setResumoPromocaoInterna(ColaboradorDTO resumoPromocaoInterna) {
131
                this.resumoPromocaoInterna = resumoPromocaoInterna;
132
        }
133
 
134
        public ColaboradorDTO getResumoPromocaoInternaAnterior() {
135
                return resumoPromocaoInternaAnterior;
136
        }
137
        public void setResumoPromocaoInternaAnterior(ColaboradorDTO resumoPromocaoInternaAnterior) {
138
                this.resumoPromocaoInternaAnterior = resumoPromocaoInternaAnterior;
139
        }
140
 
141
        public List<Vigencia> getUltimasVigencias() {
142
                return ultimasVigencias;
143
        }
144
        public void setUltimasVigencias(List<Vigencia> ultimasVigencias) {
145
                this.ultimasVigencias = ultimasVigencias;
146
        }
147
 
148
        /***************************************************************/
149
 
150
        public Double calcularPorcentagemDaMetaMensal() {
151
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
152
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
153
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : 0.0;
154
        }
155
 
156
        public Double calcularPorcentagemDaMetaDiaria() {
157
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
158
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
159
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
160
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : 0.0;
161
        }
162
 
163
        public String retornarEstiloMetaDiaria() {
164
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
165
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
166
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
167
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : "red-intense";
168
        }
169
 
170
        public String retornarEstiloMetaMensal() {
171
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
172
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
173
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : "red-intense";
174
        }
175
 
176
        private boolean verificarMetas(AvaliacaoFuncionario avaliacaoFuncionario) {
177
                if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario)) {
178
                        if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario.getValorMetaMensal())) {
179
                                return true;
180
                        }
181
                }
182
                return false;
183
        }
184
 
185
        private String retornarEstilo(Double valorMetaMensal, Double valorTotal) {
186
                if (VerificadorUtil.naoEstaNuloOuVazio(valorMetaMensal)) {
187
                        Double percentualRealizado = valorTotal * 100 / valorMetaMensal;
188
                        if (percentualRealizado < 75) {
189
                                return "red-intense";
190
                        } else {
191
                                if (percentualRealizado < 100) {
192
                                        return "blue-madison";
193
                                } else {
194
                                        if (percentualRealizado < 125) {
195
                                                return "green-haze";
196
                                        } else {
197
                                                return "green-seagreen";
198
                                        }
199
                                }
200
                        }
201
                }
202
                return "purple";
203
        }
204
 
205
        private Double consultarPorcentagem(Double valorTotal, Double valor) {
206
                if (VerificadorUtil.naoEstaNuloOuVazio(valorTotal) && VerificadorUtil.naoEstaNuloOuVazio(valor)) {
207
                        return (valor * 100 / valorTotal) / 100;
208
                }
209
                return 0.0;
210
        }
211
 
212
        public Integer getQuantidadeMinimaComissaoPromocaoInterna() {
213
                return ConstantesSEC.ProdutosPromocaoInterna.QUANTIDADE_MINIMA_RECEBIMENTO;
214
        }
215
 
216
}