Subversion Repositories Integrator Subversion

Rev

Rev 705 | Rev 724 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
648 blopes 1
package br.com.ec.controller;
2
 
650 blopes 3
import java.io.IOException;
648 blopes 4
import java.io.Serializable;
722 blopes 5
import java.util.ArrayList;
6
import java.util.List;
648 blopes 7
 
650 blopes 8
import javax.annotation.PostConstruct;
648 blopes 9
import javax.inject.Inject;
10
import javax.inject.Named;
11
 
12
import org.springframework.context.annotation.Scope;
13
 
14
import br.com.ec.core.generic.GenericService;
650 blopes 15
import br.com.ec.core.util.VerificadorUtil;
16
import br.com.ec.domain.dto.AvaliacaoDTO;
655 blopes 17
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
664 blopes 18
import br.com.ec.domain.dto.AvaliacaoLojaDTO;
722 blopes 19
import br.com.ec.domain.dto.AvaliacaoLojaFuncionarioDTO;
659 blopes 20
import br.com.ec.domain.dto.LojaDTO;
657 blopes 21
import br.com.ec.domain.dto.UsuarioDTO;
659 blopes 22
import br.com.ec.domain.dto.VendedorDTO;
650 blopes 23
import br.com.ec.domain.dto.VigenciaDTO;
659 blopes 24
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
25
import br.com.ec.domain.dto.consulta.ParametrosPeriodoDTO;
648 blopes 26
import br.com.ec.domain.model.Avaliacao;
655 blopes 27
import br.com.ec.domain.model.AvaliacaoFuncionario;
656 blopes 28
import br.com.ec.domain.model.AvaliacaoFuncionarioId;
664 blopes 29
import br.com.ec.domain.model.AvaliacaoLoja;
30
import br.com.ec.domain.model.AvaliacaoLojaId;
722 blopes 31
import br.com.ec.domain.model.Funcionario;
32
import br.com.ec.domain.model.Loja;
33
import br.com.ec.domain.model.Vigencia;
659 blopes 34
import br.com.ec.domain.model.tipos.TipoFaixaComissao;
656 blopes 35
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
664 blopes 36
import br.com.ec.domain.service.AvaliacaoLojaService;
648 blopes 37
import br.com.ec.domain.service.AvaliacaoService;
659 blopes 38
import br.com.ec.domain.service.LojaService;
657 blopes 39
import br.com.ec.domain.service.UsuarioService;
659 blopes 40
import br.com.ec.domain.service.VendaService;
41
import br.com.ec.domain.service.VendedorService;
648 blopes 42
import br.com.ec.domain.service.VigenciaService;
43
import br.com.ec.web.exception.VerificadorLancamentoException;
44
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
45
import br.com.ec.web.generic.AbstractBean;
46
import br.com.ec.web.message.LancadorMensagem;
47
import br.com.ec.web.util.TipoOperacao;
48
 
49
@Named
50
@Scope("view")
650 blopes 51
public class MetasAvaliacoesBean extends AbstractBean<Avaliacao> implements Serializable {
648 blopes 52
 
53
        private static final long serialVersionUID = 1L;
54
 
650 blopes 55
        private VigenciaDTO vigenciaSelecionada;
722 blopes 56
        private VigenciaDTO vigenciaSelecionadaParaImportar;
650 blopes 57
        private AvaliacaoDTO avaliacaoSelecionada;
58
 
664 blopes 59
        private AvaliacaoLoja avaliacaoLojaSelecionada;
656 blopes 60
        private AvaliacaoFuncionario participanteSelecionado;
657 blopes 61
        private UsuarioDTO usuarioParticipanteSelecionado;
659 blopes 62
        private LojaDTO lojaParticipanteSelecionado;
656 blopes 63
        private Long sequencialLojaSelecionada;
655 blopes 64
 
648 blopes 65
        private VigenciaService vigenciaService;
66
        private AvaliacaoService avaliacaoService;
664 blopes 67
        private AvaliacaoLojaService avaliacaoLojaService;
656 blopes 68
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
657 blopes 69
        private UsuarioService usuarioService;
659 blopes 70
        private LojaService lojaService;
71
        private VendaService vendaService;
72
        private VendedorService vendedorService;
648 blopes 73
 
74
        @Inject
656 blopes 75
        public MetasAvaliacoesBean(VigenciaService vigenciaService, AvaliacaoService avaliacaoService,
664 blopes 76
                        AvaliacaoLojaService avaliacaoLojaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService,
77
                        UsuarioService usuarioService, LojaService lojaService, VendaService vendaService,
78
                        VendedorService vendedorService) {
648 blopes 79
                this.vigenciaService = vigenciaService;
80
                this.avaliacaoService = avaliacaoService;
664 blopes 81
                this.avaliacaoLojaService = avaliacaoLojaService;
656 blopes 82
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
657 blopes 83
                this.usuarioService = usuarioService;
659 blopes 84
                this.lojaService = lojaService;
85
                this.vendaService = vendaService;
86
                this.vendedorService = vendedorService;
648 blopes 87
        }
88
 
89
        @Override
90
        public void preCarregamento() {
91
                limparEntidade();
92
        }
650 blopes 93
 
94
        @PostConstruct
95
        private void posCarregamento() {
656 blopes 96
                consultarMetasAvaliacoes();
650 blopes 97
        }
656 blopes 98
 
648 blopes 99
        @Override
100
        public void limparEntidade() {
650 blopes 101
                setEntidade(new Avaliacao());
648 blopes 102
        }
103
 
104
        @Override
650 blopes 105
        public GenericService<Avaliacao> getService() {
106
                return avaliacaoService;
648 blopes 107
        }
108
 
109
        @Override
650 blopes 110
        public Avaliacao getEntidade() {
648 blopes 111
                return entidade;
112
        }
113
 
114
        @Override
115
        public void preConsultar() {
116
                setTipoOperacao(TipoOperacao.CONSULTAR);
117
        }
118
 
119
        @Override
650 blopes 120
        public Avaliacao getId() {
648 blopes 121
                return getEntidade();
122
        }
123
 
650 blopes 124
        public VigenciaDTO getVigenciaSelecionada() {
125
                return vigenciaSelecionada;
126
        }
127
        public void setVigenciaSelecionada(VigenciaDTO vigenciaSelecionada) {
128
                this.vigenciaSelecionada = vigenciaSelecionada;
129
        }
130
 
722 blopes 131
        public VigenciaDTO getVigenciaSelecionadaParaImportar() {
132
                return vigenciaSelecionadaParaImportar;
133
        }
134
        public void setVigenciaSelecionadaParaImportar(VigenciaDTO vigenciaSelecionadaParaImportar) {
135
                this.vigenciaSelecionadaParaImportar = vigenciaSelecionadaParaImportar;
136
        }
137
 
650 blopes 138
        public AvaliacaoDTO getAvaliacaoSelecionada() {
139
                return avaliacaoSelecionada;
140
        }
141
        public void setAvaliacaoSelecionada(AvaliacaoDTO avaliacaoSelecionada) {
142
                this.avaliacaoSelecionada = avaliacaoSelecionada;
143
        }
144
 
664 blopes 145
        public AvaliacaoLoja getAvaliacaoLojaSelecionada() {
146
                return avaliacaoLojaSelecionada;
147
        }
148
        public void setAvaliacaoLojaSelecionada(AvaliacaoLoja avaliacaoLojaSelecionada) {
149
                this.avaliacaoLojaSelecionada = avaliacaoLojaSelecionada;
150
        }
151
 
656 blopes 152
        public AvaliacaoFuncionario getParticipanteSelecionado() {
655 blopes 153
                return participanteSelecionado;
154
        }
656 blopes 155
        public void setParticipanteSelecionado(AvaliacaoFuncionario participanteSelecionado) {
655 blopes 156
                this.participanteSelecionado = participanteSelecionado;
157
        }
158
 
656 blopes 159
        public Long getSequencialLojaSelecionada() {
160
                return sequencialLojaSelecionada;
161
        }
162
        public void setSequencialLojaSelecionada(Long sequencialLojaSelecionada) {
163
                this.sequencialLojaSelecionada = sequencialLojaSelecionada;
164
        }
165
 
657 blopes 166
        public UsuarioDTO getUsuarioParticipanteSelecionado() {
167
                return usuarioParticipanteSelecionado;
168
        }
169
        public void setUsuarioParticipanteSelecionado(UsuarioDTO usuarioParticipanteSelecionado) {
170
                this.usuarioParticipanteSelecionado = usuarioParticipanteSelecionado;
171
        }
172
 
659 blopes 173
        public LojaDTO getLojaParticipanteSelecionado() {
174
                return lojaParticipanteSelecionado;
175
        }
176
        public void setLojaParticipanteSelecionado(LojaDTO lojaParticipanteSelecionado) {
177
                this.lojaParticipanteSelecionado = lojaParticipanteSelecionado;
178
        }
179
 
648 blopes 180
        /***************************************************************/
181
 
659 blopes 182
        public TipoFaixaComissao[] getTiposFaixaComissao() {
183
                return TipoFaixaComissao.values();
184
        }
185
 
186
        public void atualizarValorComissao() {
187
                if (VerificadorUtil.naoEstaNuloOuVazio(getParticipanteSelecionado().getPorcentagemComissao())) {
188
                        getParticipanteSelecionado().setValorComissao(consultarVendasDoPeriodo(getParticipanteSelecionado()) * getParticipanteSelecionado().getPorcentagemComissao() / 100);
189
                }
190
        }
191
 
192
        private Double consultarVendasDoPeriodo(AvaliacaoFuncionario avaliacaoFuncionario) {
193
                ParametrosConsultaVendasDTO parametrosConsultaVendasDTO = new ParametrosConsultaVendasDTO();
194
                VendedorDTO vendedorDTO = vendedorService.consultarVendedorPorPessoa(avaliacaoFuncionario.getFuncionario().getSequencialDaPessoa());
195
                parametrosConsultaVendasDTO.setSequencialVendedor(vendedorDTO.getSequencial());
196
                ParametrosPeriodoDTO parametrosPeriodoDTO = new ParametrosPeriodoDTO();
197
                parametrosPeriodoDTO.setDataInicial(avaliacaoFuncionario.getAvaliacao().getVigencia().getDataInicio());
198
                parametrosPeriodoDTO.setDataFinal(avaliacaoFuncionario.getAvaliacao().getVigencia().getDataFim());
199
                parametrosConsultaVendasDTO.setParametrosPeriodoDTO(parametrosPeriodoDTO);
200
                parametrosConsultaVendasDTO.setIndicadorComissionado(true);
705 blopes 201
                return vendaService.obterValorTotalBrutoDeVendasRetirandoValorCuponsUtilizados(parametrosConsultaVendasDTO);
659 blopes 202
        }
203
 
664 blopes 204
        private Double consultarVendasDoPeriodo(AvaliacaoLoja avaliacaoLoja) {
205
                ParametrosConsultaVendasDTO parametrosConsultaVendasDTO = new ParametrosConsultaVendasDTO();
206
                ParametrosPeriodoDTO parametrosPeriodoDTO = new ParametrosPeriodoDTO();
207
                parametrosPeriodoDTO.setDataInicial(avaliacaoLoja.getAvaliacao().getVigencia().getDataInicio());
208
                parametrosPeriodoDTO.setDataFinal(avaliacaoLoja.getAvaliacao().getVigencia().getDataFim());
209
                parametrosConsultaVendasDTO.setSequencialLoja(avaliacaoLoja.getSequencialDaLoja());
210
                parametrosConsultaVendasDTO.setParametrosPeriodoDTO(parametrosPeriodoDTO);
211
                parametrosConsultaVendasDTO.setIndicadorComissionado(true);
705 blopes 212
                return vendaService.obterValorTotalBrutoDeVendasRetirandoValorCuponsUtilizados(parametrosConsultaVendasDTO);
664 blopes 213
        }
214
 
656 blopes 215
        private void consultarMetasAvaliacoes() {
216
                if (VerificadorUtil.estaNulo(vigenciaSelecionada)) {
217
                        if (VerificadorUtil.naoEstaNulo(getParametro("vigencia"))) {
218
                                setVigenciaSelecionada(vigenciaService.consultarVigencia(new Long(getParametro("vigencia").toString())));
219
                        }
220
                }
221
 
222
                AvaliacaoDTO avaliacaoDTO = avaliacaoService.consultarAvaliacao(getVigenciaSelecionada().getSequencial());
223
                if (VerificadorUtil.naoEstaNulo(avaliacaoDTO)) {
224
                        VigenciaDTO vigenciaDetalhada = vigenciaService.consultarVigencia(avaliacaoDTO.getVigenciaDTO().getSequencial());
225
                        setVigenciaSelecionada(vigenciaDetalhada);
226
                        // DETALHAR AVALIAÇÃO COMPLETA
227
                        AvaliacaoDTO avaliacaoDetalhada = avaliacaoService.consultarAvaliacaoCompleta(avaliacaoDTO.getSequencial());
228
                        setAvaliacaoSelecionada(avaliacaoDetalhada);
229
                }
230
        }
231
 
650 blopes 232
        public void redirecionarGestaoMensal() {
233
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
234
                        public void execute() {
235
                                try {
236
                                        LancadorMensagem.redirecionarTela("/sistema/gestao_mensal/gestao_mensal.xhtml");
237
                                } catch (IOException e) {
238
                                        e.printStackTrace();
239
                                }
240
                        }
241
                });
242
        }
243
 
664 blopes 244
        public void selecionarLoja(AvaliacaoLojaDTO avaliacaoLojaDTO) {
245
                AvaliacaoLojaId avaliacaoLojaId = new AvaliacaoLojaId();
246
                avaliacaoLojaId.setSequencialAvaliacao(avaliacaoLojaDTO.getAvaliacaoDTO().getSequencial());
247
                avaliacaoLojaId.setSequencialLoja(avaliacaoLojaDTO.getLojaDTO().getSequencial());
248
 
249
                AvaliacaoLoja avaliacaoLoja = avaliacaoLojaService.detalhar(avaliacaoLojaId);
250
                avaliacaoLoja.setValorTotalVendido(consultarVendasDoPeriodo(avaliacaoLoja));
251
                setAvaliacaoLojaSelecionada(avaliacaoLoja);
252
        }
253
 
655 blopes 254
        public void selecionarParticipante(AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO) {
656 blopes 255
                AvaliacaoFuncionarioId avaliacaoFuncionarioId = new AvaliacaoFuncionarioId();
256
                avaliacaoFuncionarioId.setSequencialAvaliacao(avaliacaoFuncionarioDTO.getSequencialDaAvaliacao());
657 blopes 257
                avaliacaoFuncionarioId.setSequencialFuncionario(avaliacaoFuncionarioDTO.getSequencialDoFuncionario());
664 blopes 258
 
657 blopes 259
                AvaliacaoFuncionario avaliacaoFuncionario = avaliacaoFuncionarioService.detalhar(avaliacaoFuncionarioId);
656 blopes 260
                setParticipanteSelecionado(avaliacaoFuncionario);
659 blopes 261
                LojaDTO lojaParticipanteSelecionado = lojaService.consultarLojaPeloId(avaliacaoFuncionario.getSequencialDaLoja());
262
                setLojaParticipanteSelecionado(lojaParticipanteSelecionado);
657 blopes 263
                setUsuarioParticipanteSelecionado(usuarioService.consultarPorPessoa(avaliacaoFuncionario.getFuncionario().getSequencialDaPessoa()));
659 blopes 264
                getParticipanteSelecionado().setValorTotalVendido(consultarVendasDoPeriodo(getParticipanteSelecionado()));
655 blopes 265
//              setItemSelecionado(new AvaliacaoFuncionarioItemAvaliacao());
266
//              getParticipanteSelecionado().setValorTotalVendidoVivo(consultarVendasVivoDoPeriodo(getParticipanteSelecionado()));
267
        }
268
 
656 blopes 269
 
270
        public void alterarMetaAvaliacao() {
271
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
272
                        public void execute() {
659 blopes 273
                                avaliacaoFuncionarioService.alterarMetaAvaliacao(getParticipanteSelecionado(), getLojaParticipanteSelecionado());
656 blopes 274
                                consultarMetasAvaliacoes();
664 blopes 275
                                LancadorMensagem.lancarSucesso("META/AVALIAÇÃO DO PARTICIPANTE ALTERADA COM SUCESSO");
656 blopes 276
                        }
277
                });
278
        }
279
 
664 blopes 280
        public void alterarMetaAvaliacaoLoja() {
281
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
282
                        public void execute() {
283
                                avaliacaoLojaService.alterar(getAvaliacaoLojaSelecionada());
284
                                consultarMetasAvaliacoes();
285
                                LancadorMensagem.lancarSucesso("META DA LOJA ALTERADA COM SUCESSO");
286
                        }
287
                });
288
        }
289
 
722 blopes 290
        public void importarAvaliacaoAnterior() {
291
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
292
                        public void execute() {
293
                                avaliacaoService.importarAvaliacaoAnterior(getVigenciaSelecionada(), getVigenciaSelecionadaParaImportar());
294
                                consultarMetasAvaliacoes();
295
                                LancadorMensagem.lancarSucesso("AVALIAÇÃO ANTERIOR IMPORTADA COM SUCESSO");
296
                        }
297
                });
298
        }
299
 
300
        public void adicionarLojaNaAvaliacao() {
301
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
302
                        public void execute() {
303
                                avaliacaoService.adicionarLojaNaAvaliacao(getAvaliacaoSelecionada(), getLojaParticipanteSelecionado());
304
                                consultarMetasAvaliacoes();
305
                                LancadorMensagem.lancarSucesso("LOJA ADICIONADA NA AVALIAÇÃO COM SUCESSO");
306
                        }
307
                });
308
        }
309
 
648 blopes 310
}