Subversion Repositories Integrator Subversion

Rev

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

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