Subversion Repositories Integrator Subversion

Rev

Rev 106 | Go to most recent revision | 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
 
5
import javax.inject.Inject;
6
import javax.inject.Named;
7
 
8
import org.springframework.context.annotation.Scope;
9
 
128 espaco 10
import br.com.ec.controller.managedbean.consultademanda.PessoaConsultaPorDemanda;
106 espaco 11
import br.com.ec.domain.dto.ColaboradorDTO;
128 espaco 12
import br.com.ec.domain.dto.ParametrosConsultaPessoaDTO;
13
import br.com.ec.domain.model.Funcionario;
14
import br.com.ec.domain.model.Pessoa;
15
import br.com.ec.domain.model.tipos.TipoCategoria;
16
import br.com.ec.domain.model.tipos.TipoColaborador;
17
import br.com.ec.domain.service.funcionario.FuncionarioService;
106 espaco 18
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
19
import br.com.ec.domain.shared.ConstantesSEC;
20
import br.edu.cesmac.core.generic.GenericService;
21
import br.edu.cesmac.web.generic.AbstractBean;
22
 
23
@Named
24
@Scope("view")
25
public class ColaboradorBean extends AbstractBean<ColaboradorDTO> implements Serializable {
26
 
27
        private static final long serialVersionUID = 1L;
28
 
128 espaco 29
        private ParametrosConsultaPessoaDTO parametrosConsultaPessoaDTO;
30
        private PessoaConsultaPorDemanda lazy;
31
 
32
        private FuncionarioService funcionarioService;
33
 
34
        /*
106 espaco 35
        private UsuarioService usuarioService;
36
        private VendaService vendaService;
37
        private VendedorService vendedorService;
38
        private VigenciaService vigenciaService;
39
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
40
 
41
        private Vigencia vigenciaAtual;
42
        private Vigencia vigenciaAnterior;
43
        private ColaboradorDTO resumoAntigo;
44
        private ColaboradorDTO resumoPromocaoInterna;
45
        private ColaboradorDTO resumoPromocaoInternaAnterior;
46
 
47
        private ContextoSeguranca contextoSeguranca;
48
 
49
        List<Vigencia> ultimasVigencias;
50
 
51
        private BarChartModel historico;
52
        private BarChartModel historicoPercentual;
128 espaco 53
        */
106 espaco 54
 
55
        @Inject
128 espaco 56
        public ColaboradorBean(PessoaConsultaPorDemanda lazy,
57
                        FuncionarioService funcionarioService,
58
                        //UsuarioService usuarioService, VendaService vendaService, VendedorService vendedorService, 
59
                        //VigenciaService vigenciaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService, 
60
                        ContextoSeguranca contextoSeguranca) {
61
                this.lazy = lazy;
62
 
63
                this.funcionarioService = funcionarioService;
64
                /*
106 espaco 65
                this.usuarioService = usuarioService;
66
                this.vendaService = vendaService;
67
                this.vendedorService = vendedorService;
68
                this.vigenciaService = vigenciaService;
69
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
70
                this.contextoSeguranca = contextoSeguranca;
128 espaco 71
                */
106 espaco 72
        }
128 espaco 73
 
74
        @Override
75
        public ColaboradorDTO getId() {
76
                return getEntidade();
77
        }
78
 
79
        @Override
80
        public GenericService<ColaboradorDTO> getService() {
81
                return null;
82
        }
83
 
84
        @Override
85
        public void limparEntidade() {
86
                setEntidade(new ColaboradorDTO());
87
        }
106 espaco 88
 
128 espaco 89
        public ParametrosConsultaPessoaDTO getParametrosConsultaPessoaDTO() {
90
                return parametrosConsultaPessoaDTO;
91
        }
92
        public void setParametrosConsultaPessoaDTO(ParametrosConsultaPessoaDTO parametrosConsultaPessoaDTO) {
93
                this.parametrosConsultaPessoaDTO = parametrosConsultaPessoaDTO;
94
        }
95
 
96
        public PessoaConsultaPorDemanda getLazy() {
97
                return lazy;
98
        }
99
        public void setLazy(PessoaConsultaPorDemanda lazy) {
100
                this.lazy = lazy;
101
        }
102
        public void prepararConsultaDemanda() {
103
                lazy.setarParametrosConsulta(getParametrosConsultaPessoaDTO());
104
        }
105
 
106
        public TipoColaborador[] getTiposColaborador() {
107
                return TipoColaborador.values();
108
        }
109
 
106 espaco 110
        @Override
111
        public void preCarregamento() {
128 espaco 112
                parametrosConsultaPessoaDTO = new ParametrosConsultaPessoaDTO();
113
                parametrosConsultaPessoaDTO.setEntidade(new Pessoa());
114
                parametrosConsultaPessoaDTO.setConsultarColaboradores(ConstantesSEC.Pessoa.CONSULTAR_COLABORADORES_C);
115
                prepararConsultaDemanda();
116
                limparEntidade();
117
        }
118
 
119
        public Funcionario consultarFuncionarioPorPessoa(Pessoa pessoa) {
120
                return funcionarioService.consultarFuncionarioPorPessoa(pessoa);
121
        }
122
 
123
        /*
124
        @Override
125
        public void preCarregamento() {
106 espaco 126
                setUltimasVigencias(vigenciaService.consultarUltimasVigencias());
127
                Usuario usuarioSelecionado = usuarioService.consultarPorId(contextoSeguranca.obterUsuario());
128
 
129
                if (!getUltimasVigencias().isEmpty()) {
130
                        if (getUltimasVigencias().size() >= 1) {
131
                                setVigenciaAtual(retornarVigenciaDoPeriodo(getUltimasVigencias(), DataUtils.getDataAtual()));
132
                                ColaboradorDTO colaborador = new ColaboradorDTO();
133
                                colaborador.setUsuario(usuarioSelecionado);
134
                                colaborador.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), getVigenciaAtual(), true));
135
                                setEntidade(colaborador);
136
                                colaborador.getRankingVendedor().setPercentualMetaMensal(calcularPorcentagemDaMetaMensal());
137
                                colaborador.getRankingVendedor().setPercentualMetaMensalVivo(calcularPorcentagemDaMetaMensalVivo());
138
                                colaborador.getRankingVendedor().setPercentualMetaDiaria(calcularPorcentagemDaMetaDiaria());
139
                        }
140
                        if (getUltimasVigencias().size() >= 2) {
141
                                Date dataAnterior = DataUtils.acrescentarMeses(DataUtils.getDataAtual(), -1);
142
                                setVigenciaAnterior(retornarVigenciaDoPeriodo(getUltimasVigencias(), dataAnterior));
143
                                ColaboradorDTO colaboradorAnterior = new ColaboradorDTO();
144
                                colaboradorAnterior.setUsuario(usuarioSelecionado);
145
                                colaboradorAnterior.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), getVigenciaAnterior(), true));
146
                                setResumoAntigo(colaboradorAnterior);
147
                        }
148
                }
149
 
150
                ColaboradorDTO colaboradorPromocaoInterna = new ColaboradorDTO();
151
                colaboradorPromocaoInterna.setUsuario(usuarioSelecionado);
152
                colaboradorPromocaoInterna.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
153
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAtual()),
154
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAtual())));
155
                setResumoPromocaoInterna(colaboradorPromocaoInterna);
156
 
157
                ColaboradorDTO colaboradorPromocaoInternaAnterior = new ColaboradorDTO();
158
                colaboradorPromocaoInternaAnterior.setUsuario(usuarioSelecionado);
159
                colaboradorPromocaoInternaAnterior.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
160
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAnterior()),
161
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAnterior())));
162
                setResumoPromocaoInternaAnterior(colaboradorPromocaoInternaAnterior);
163
        }
164
 
165
        private Vigencia retornarVigenciaDoPeriodo(List<Vigencia> ultimasVigencias, Date dataAtual) {
166
                for (Vigencia vigencia : ultimasVigencias) {
167
                        if (vigencia.getDataInicio().before(dataAtual) && vigencia.getDataFim().after(dataAtual)) {
168
                                return vigencia;
169
                        }
170
                }
171
                return null;
172
        }
173
 
174
        @Override
175
        public GenericService<ColaboradorDTO> getService() {
176
                return null;
177
        }
178
 
179
        @Override
180
        public ColaboradorDTO getEntidade() {
181
                return entidade;
182
        }
183
 
184
        public Vigencia getVigenciaAtual() {
185
                return vigenciaAtual;
186
        }
187
        public void setVigenciaAtual(Vigencia vigenciaAtual) {
188
                this.vigenciaAtual = vigenciaAtual;
189
        }
190
 
191
        public Vigencia getVigenciaAnterior() {
192
                return vigenciaAnterior;
193
        }
194
        public void setVigenciaAnterior(Vigencia vigenciaAnterior) {
195
                this.vigenciaAnterior = vigenciaAnterior;
196
        }
197
 
198
        public ColaboradorDTO getResumoAntigo() {
199
                return resumoAntigo;
200
        }
201
        public void setResumoAntigo(ColaboradorDTO resumoAntigo) {
202
                this.resumoAntigo = resumoAntigo;
203
        }
204
 
205
        public ColaboradorDTO getResumoPromocaoInterna() {
206
                return resumoPromocaoInterna;
207
        }
208
        public void setResumoPromocaoInterna(ColaboradorDTO resumoPromocaoInterna) {
209
                this.resumoPromocaoInterna = resumoPromocaoInterna;
210
        }
211
 
212
        public ColaboradorDTO getResumoPromocaoInternaAnterior() {
213
                return resumoPromocaoInternaAnterior;
214
        }
215
        public void setResumoPromocaoInternaAnterior(ColaboradorDTO resumoPromocaoInternaAnterior) {
216
                this.resumoPromocaoInternaAnterior = resumoPromocaoInternaAnterior;
217
        }
218
 
219
        public List<Vigencia> getUltimasVigencias() {
220
                return ultimasVigencias;
221
        }
222
        public void setUltimasVigencias(List<Vigencia> ultimasVigencias) {
223
                this.ultimasVigencias = ultimasVigencias;
224
        }
225
 
226
        public BarChartModel getHistorico() {
227
                if (VerificadorUtil.estaNulo(historico)) {
228
                        consultarHistorico();
229
                }
230
                return historico;
231
        }
232
        public void setHistorico(BarChartModel historico) {
233
                this.historico = historico;
234
        }
235
 
236
        public BarChartModel getHistoricoPercentual() {
237
                if (VerificadorUtil.estaNulo(historicoPercentual)) {
238
                        consultarHistoricoPercentual();
239
                }
240
                return historicoPercentual;
241
        }
242
        public void setHistoricoPercentual(BarChartModel historicoPercentual) {
243
                this.historicoPercentual = historicoPercentual;
244
        }
245
 
246
        public Double calcularPorcentagemDaMetaMensal() {
247
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
248
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
249
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : 0.0;
250
        }
251
 
252
        public Double calcularPorcentagemDaMetaMensalVivo() {
253
                return verificarMetasVivo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
254
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensalVivo(),
255
                                        getEntidade().getRankingVendedor().getValorTotalVendidoVivo()) : 0.0;
256
        }
257
 
258
        public Double calcularPorcentagemDaMetaDiaria() {
259
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
260
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
261
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
262
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : 0.0;
263
        }
264
 
265
        public String retornarEstiloMetaDiaria() {
266
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
267
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
268
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
269
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : "red-intense";
270
        }
271
 
272
        public String retornarEstiloMetaMensal() {
273
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
274
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
275
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : "red-intense";
276
        }
277
 
278
        public String retornarEstiloMetaMensalVivo() {
279
                return verificarMetasVivo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
280
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensalVivo(),
281
                                        getEntidade().getRankingVendedor().getValorTotalVendidoVivo()) : "red-intense";
282
        }
283
 
284
        private boolean verificarMetas(AvaliacaoFuncionario avaliacaoFuncionario) {
285
                if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario)) {
286
                        if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario.getValorMetaMensal())) {
287
                                return true;
288
                        }
289
                }
290
                return false;
291
        }
292
 
293
        private boolean verificarMetasVivo(AvaliacaoFuncionario avaliacaoFuncionario) {
294
                if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario)) {
295
                        if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario.getValorMetaMensalVivo())) {
296
                                return true;
297
                        }
298
                }
299
                return false;
300
        }
301
 
302
        private String retornarEstilo(Double valorMetaMensal, Double valorTotal) {
303
                if (VerificadorUtil.naoEstaNuloOuVazio(valorMetaMensal)) {
304
                        Double percentualRealizado = valorTotal * 100 / valorMetaMensal;
305
                        if (percentualRealizado < 75) {
306
                                return "red-intense";
307
                        } else {
308
                                if (percentualRealizado < 100) {
309
                                        return "blue-madison";
310
                                } else {
311
                                        if (percentualRealizado < 125) {
312
                                                return "green-haze";
313
                                        } else {
314
                                                return "green-seagreen";
315
                                        }
316
                                }
317
                        }
318
                }
319
                return "purple";
320
        }
321
 
322
        private Double consultarPorcentagem(Double valorTotal, Double valor) {
323
                if (VerificadorUtil.naoEstaNuloOuVazio(valorTotal) && VerificadorUtil.naoEstaNuloOuVazio(valor)) {
324
                        return (valor * 100 / valorTotal) / 100;
325
                }
326
                return 0.0;
327
        }
328
 
329
        public Integer getQuantidadeMinimaComissaoPromocaoInterna() {
330
                return ConstantesSEC.ProdutosPromocaoInterna.QUANTIDADE_MINIMA_RECEBIMENTO;
331
        }
332
 
333
        public void consultarHistorico() {
334
                ParametrosRelatorioVendasDTO parametrosRelatorioVendas = new ParametrosRelatorioVendasDTO();
335
                parametrosRelatorioVendas.iniciarDatasAtuais();
336
                if (VerificadorUtil.naoEstaNulo(getEntidade())) {
337
                        parametrosRelatorioVendas.setVendedor(getEntidade().getRankingVendedor().getVendedor());
338
 
339
                        ParametrosConsultaVendasDTO parametrosConsulta = new ParametrosConsultaVendasDTO(parametrosRelatorioVendas);
340
                        historico = new BarChartModel();
341
                        historico.setShowPointLabels(true);
342
                        historico.setDatatipFormat("<span>R$ %2$d</span><span style='display:none;'>%2$d</span>");
343
                        historico.setShowDatatip(true);
344
                        historico.setTitle("");
345
                        Axis xAxis = historico.getAxis(AxisType.X);
346
                        xAxis.setLabel("MESES");
347
                        Axis yAxis = historico.getAxis(AxisType.Y);
348
                    yAxis.setLabel("VALORES");
349
                        Integer mesAtual = new Integer(parametrosRelatorioVendas.getMes());
350
                        Integer anoAtual = new Integer(parametrosRelatorioVendas.getAno());
351
                        Integer quantidadeMesesAnteriores = 13;
352
 
353
                        mesAtual = mesAtual - quantidadeMesesAnteriores + 1;
354
                        if (mesAtual <= 0) {
355
                                mesAtual = mesAtual + 12;
356
                                anoAtual--;
357
                        }
358
                        ChartSeries linha = new ChartSeries();
359
                        for (int mes = 1; mes <= quantidadeMesesAnteriores; quantidadeMesesAnteriores--) {
360
                                if (mesAtual == 13) {
361
                                        mesAtual = 1;
362
                                        anoAtual++;
363
                                }
364
                                Double valorAcumulado = new Double(0.0);
365
                                Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, mesAtual - 1, anoAtual));
366
                                parametrosConsulta.setDataInicial(dataInicial.getTime());
367
                                int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
368
                                parametrosConsulta.setDataFinal(DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, mesAtual - 1, anoAtual)).getTime());
369
                                parametrosConsulta.setIndicadorComissionado(true);
370
                                valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsulta);
371
                                String descricaoLinha = mesAtual.toString() + "/" + anoAtual;
372
                                linha.set(descricaoLinha, valorAcumulado);
373
                        mesAtual++;
374
                        }
375
                        historico.addSeries(linha);
376
                }
377
        }
378
 
379
        public void consultarHistoricoPercentual() {
380
                ParametrosRelatorioVendasDTO parametrosRelatorioVendas = new ParametrosRelatorioVendasDTO();
381
                parametrosRelatorioVendas.iniciarDatasAtuais();
382
                if (VerificadorUtil.naoEstaNulo(getEntidade())) {
383
                        parametrosRelatorioVendas.setVendedor(getEntidade().getRankingVendedor().getVendedor());
384
 
385
                        ParametrosConsultaVendasDTO parametrosConsulta = new ParametrosConsultaVendasDTO(parametrosRelatorioVendas);
386
                        historicoPercentual = new BarChartModel();
387
                        historicoPercentual.setShowPointLabels(true);
388
                        historicoPercentual.setDatatipFormat("<span>%2$d%</span><span style='display:none;'>%2$d</span>");
389
                        historicoPercentual.setShowDatatip(true);
390
                        historicoPercentual.setTitle("");
391
                        Axis xAxis = historicoPercentual.getAxis(AxisType.X);
392
                        xAxis.setLabel("MESES");
393
                        Axis yAxis = historicoPercentual.getAxis(AxisType.Y);
394
                    yAxis.setLabel("PERCENTUAIS");
395
                        Integer mesAtual = new Integer(parametrosRelatorioVendas.getMes());
396
                        Integer anoAtual = new Integer(parametrosRelatorioVendas.getAno());
397
                        Integer quantidadeMesesAnteriores = 13;
398
 
399
                        mesAtual = mesAtual - quantidadeMesesAnteriores + 1;
400
                        if (mesAtual <= 0) {
401
                                mesAtual = mesAtual + 12;
402
                                anoAtual--;
403
                        }
404
                        ChartSeries linha = new ChartSeries();
405
                        for (int mes = 1; mes <= quantidadeMesesAnteriores; quantidadeMesesAnteriores--) {
406
                                if (mesAtual == 13) {
407
                                        mesAtual = 1;
408
                                        anoAtual++;
409
                                }
410
                                Double valorAcumulado = new Double(0.0);
411
                                Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, mesAtual - 1, anoAtual));
412
                                parametrosConsulta.setDataInicial(dataInicial.getTime());
413
                                int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
414
                                parametrosConsulta.setDataFinal(DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, mesAtual - 1, anoAtual)).getTime());
415
                                parametrosConsulta.setIndicadorComissionado(true);
416
                                valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsulta);
417
                                String descricaoLinha = mesAtual.toString() + "/" + anoAtual;
418
 
419
                                AvaliacaoFuncionario avaliacaoFuncionario = avaliacaoFuncionarioService.consultarAvaliacaoFuncionarioPelaData(parametrosRelatorioVendas.getVendedor(), DataUtils.getDataComHorarioMinimo(parametrosConsulta.getDataFinal()));
420
                                Double percentualMetaMensal = 0.0;
421
                                if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario)) {
422
                                        percentualMetaMensal = avaliacaoFuncionario.retornarPercentualRealizado(valorAcumulado);
423
                                }
424
 
425
                                linha.set(descricaoLinha, percentualMetaMensal * 100);
426
                        mesAtual++;
427
                        }
428
                        historicoPercentual.addSeries(linha);
429
                }
430
        }
431
 
432
        public String produtosPromocaoInterna() {
433
                return ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS.replace("'", "");
434
        }
128 espaco 435
        */
106 espaco 436
}