Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

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