Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
357 espaco 1
package br.com.ec.domain.service.impl;
2
 
740 blopes 3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.FileNotFoundException;
6
import java.io.IOException;
7
import java.io.InputStream;
654 blopes 8
import java.util.ArrayList;
740 blopes 9
import java.util.Iterator;
357 espaco 10
import java.util.List;
11
 
740 blopes 12
import javax.faces.context.FacesContext;
13
 
14
import org.apache.poi.hssf.usermodel.HSSFSheet;
15
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
16
import org.apache.poi.ss.usermodel.Cell;
17
import org.apache.poi.ss.usermodel.Row;
18
import org.primefaces.model.DefaultStreamedContent;
19
import org.primefaces.model.StreamedContent;
357 espaco 20
import org.springframework.beans.factory.annotation.Autowired;
21
import org.springframework.stereotype.Service;
22
 
23
import br.com.ec.core.exception.NegocioException;
24
import br.com.ec.core.generic.AbstractService;
25
import br.com.ec.core.generic.GenericRepository;
740 blopes 26
import br.com.ec.core.util.ArquivoUtil;
27
import br.com.ec.core.util.StringUtil;
357 espaco 28
import br.com.ec.core.util.VerificadorUtil;
29
import br.com.ec.core.validador.Validador;
648 blopes 30
import br.com.ec.domain.dto.AvaliacaoDTO;
650 blopes 31
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
32
import br.com.ec.domain.dto.AvaliacaoLojaDTO;
654 blopes 33
import br.com.ec.domain.dto.AvaliacaoLojaFuncionarioDTO;
740 blopes 34
import br.com.ec.domain.dto.FolhaPagamentoFuncionarioDTO;
654 blopes 35
import br.com.ec.domain.dto.FuncionarioDTO;
722 blopes 36
import br.com.ec.domain.dto.LojaDTO;
37
import br.com.ec.domain.dto.VigenciaDTO;
357 espaco 38
import br.com.ec.domain.model.Avaliacao;
722 blopes 39
import br.com.ec.domain.model.AvaliacaoFuncionario;
724 blopes 40
import br.com.ec.domain.model.AvaliacaoFuncionarioId;
722 blopes 41
import br.com.ec.domain.model.AvaliacaoLoja;
357 espaco 42
import br.com.ec.domain.model.AvaliacaoProduto;
722 blopes 43
import br.com.ec.domain.model.Funcionario;
44
import br.com.ec.domain.model.Loja;
357 espaco 45
import br.com.ec.domain.model.Produto;
722 blopes 46
import br.com.ec.domain.model.Vigencia;
740 blopes 47
import br.com.ec.domain.model.tipos.TipoComissionamento;
650 blopes 48
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
49
import br.com.ec.domain.service.AvaliacaoLojaService;
357 espaco 50
import br.com.ec.domain.service.AvaliacaoProdutoService;
51
import br.com.ec.domain.service.AvaliacaoService;
654 blopes 52
import br.com.ec.domain.service.FuncionarioService;
722 blopes 53
import br.com.ec.domain.service.LojaService;
357 espaco 54
import br.com.ec.domain.service.ProdutoService;
55
import br.com.ec.repository.AvaliacaoRepository;
56
 
57
@Service
58
public class AvaliacaoServiceImpl extends AbstractService<Avaliacao> implements AvaliacaoService {
59
 
60
        private AvaliacaoRepository avaliacaoRepository;
61
 
62
        private ProdutoService produtoService;
63
        private AvaliacaoProdutoService avaliacaoProdutoService;
650 blopes 64
        private AvaliacaoLojaService avaliacaoLojaService;
65
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
654 blopes 66
        private FuncionarioService funcionarioService;
722 blopes 67
        private LojaService lojaService;
357 espaco 68
 
69
        @Autowired
654 blopes 70
        public AvaliacaoServiceImpl(Validador validador, AvaliacaoRepository avaliacaoRepository,
71
                        ProdutoService produtoService, AvaliacaoProdutoService avaliacaoProdutoService,
72
                        AvaliacaoLojaService avaliacaoLojaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService,
722 blopes 73
                        FuncionarioService funcionarioService, LojaService lojaService) {
357 espaco 74
                super(validador);
75
                this.avaliacaoRepository = avaliacaoRepository;
76
                this.produtoService = produtoService;
77
                this.avaliacaoProdutoService = avaliacaoProdutoService;
650 blopes 78
                this.avaliacaoLojaService = avaliacaoLojaService;
79
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
654 blopes 80
                this.funcionarioService = funcionarioService;
722 blopes 81
                this.lojaService = lojaService;
357 espaco 82
        }
83
 
84
        @Override
85
        protected GenericRepository<Avaliacao> getRepository() {
86
                return avaliacaoRepository;
87
        }
88
 
89
        @Override
648 blopes 90
        public AvaliacaoDTO consultarAvaliacao(Long sequencialVigencia) {
91
                return avaliacaoRepository.consultarAvaliacao(sequencialVigencia);
92
        }
93
 
94
        @Override
357 espaco 95
        public List<AvaliacaoProduto> consultarProdutosPromocaoInterna(Long sequencialAvaliacao) {
96
                return avaliacaoRepository.consultarProdutosPromocaoInterna(sequencialAvaliacao);
97
        }
98
 
99
        @Override
100
        public void excluirProdutoPromocaoInterna(AvaliacaoProduto avaliacaoProduto) {
101
                avaliacaoRepository.excluirProdutoPromocaoInterna(avaliacaoProduto);
102
        }
103
 
104
        @Override
105
        public void cadastrarProdutoPromocaoInterna(Avaliacao avaliacao, String codigoProduto) {
106
                Produto produto = produtoService.consultarProdutoPorCodigo(codigoProduto);
107
                if (VerificadorUtil.estaNulo(produto)) {
108
                        throw new NegocioException("Produto não identificado");
109
                }
110
                AvaliacaoProduto avaliacaoProduto = new AvaliacaoProduto();
111
                avaliacaoProduto.setProduto(produto);
112
                avaliacaoProduto.setAvaliacao(avaliacaoRepository.consultarPorId(avaliacao));
113
                avaliacaoProdutoService.cadastrar(avaliacaoProduto);
114
        }
115
 
650 blopes 116
        @Override
117
        public AvaliacaoDTO consultarAvaliacaoCompleta(Long sequencialAvaliacao) {
654 blopes 118
                List<AvaliacaoLojaFuncionarioDTO> avaliacaoLojaFuncionarioDTOs = new ArrayList<AvaliacaoLojaFuncionarioDTO>();
650 blopes 119
                AvaliacaoDTO avaliacaoDetalhada = avaliacaoRepository.consultarAvaliacaoDetalhada(sequencialAvaliacao);
120
 
121
                // CONSULTAR AVALIAÇÕES DAS LOJAS
122
                List<AvaliacaoLojaDTO> avaliacoesLojas = avaliacaoLojaService.consultarAvaliacaoLojaDaAvaliacao(avaliacaoDetalhada.getSequencial());
123
 
124
                // CONSULTAR AVALIAÇÕES DOS FUNCIONÁRIOS
125
                for (AvaliacaoLojaDTO avaliacaoLojaDTO : avaliacoesLojas) {
654 blopes 126
                        AvaliacaoLojaFuncionarioDTO avaliacaoLojaFuncionarioDTO = new AvaliacaoLojaFuncionarioDTO();
127
                        avaliacaoLojaFuncionarioDTO.setLoja(avaliacaoLojaDTO);
660 blopes 128
                        avaliacaoLojaFuncionarioDTO.setObservacao(avaliacaoLojaDTO.getObservacao());
129
                        avaliacaoLojaFuncionarioDTO.setValorMetaMensal(avaliacaoLojaDTO.getValorMetaMensal());
130
                        avaliacaoLojaFuncionarioDTO.setValorMargemContribuicao(avaliacaoLojaDTO.getValorMargemContribuicao());
653 blopes 131
 
654 blopes 132
                        List<AvaliacaoFuncionarioDTO> avaliacaoFuncionarioDTOs = avaliacaoFuncionarioService.consultarAvaliacoesFuncionarioDaLoja(avaliacaoLojaDTO.getAvaliacaoDTO().getSequencial(), avaliacaoLojaDTO.getLojaDTO().getSequencial());
133
                        // CONSULTAR DADOS COMPLETOS (FUNCIONARIO E USUARIO)
134
                        for (AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO : avaliacaoFuncionarioDTOs) {
135
                                FuncionarioDTO funcionarioDTOConsultado = funcionarioService.consultar(avaliacaoFuncionarioDTO.getSequencialDoFuncionario());
136
                                avaliacaoFuncionarioDTO.setFuncionarioDTO(funcionarioDTOConsultado);
137
                        }
138
 
139
                        avaliacaoLojaFuncionarioDTO.setFuncionarios(avaliacaoFuncionarioDTOs);
140
                        avaliacaoLojaFuncionarioDTOs.add(avaliacaoLojaFuncionarioDTO);
650 blopes 141
                }
142
 
654 blopes 143
                avaliacaoDetalhada.setAvaliacoesLojas(avaliacaoLojaFuncionarioDTOs);
144
                return avaliacaoDetalhada;
650 blopes 145
        }
146
 
722 blopes 147
        @Override
148
        public void importarAvaliacaoAnterior(VigenciaDTO vigencia, VigenciaDTO vigenciaSelecionadaParaImportar) {
149
                Avaliacao avaliacaoNova = new Avaliacao();
150
                avaliacaoNova.setVigencia(new Vigencia(vigencia.getSequencial()));
151
                this.cadastrar(avaliacaoNova);
152
 
153
                AvaliacaoDTO avaliacaoAnterior = this.consultarAvaliacao(vigenciaSelecionadaParaImportar.getSequencial());
154
                avaliacaoAnterior = this.consultarAvaliacaoCompleta(avaliacaoAnterior.getSequencial());
155
 
156
                List<AvaliacaoLoja> lojasParticipantesNovas = new ArrayList<AvaliacaoLoja>();
157
                List<AvaliacaoFuncionario> participantesNovos = new ArrayList<AvaliacaoFuncionario>();
158
                for (AvaliacaoLojaFuncionarioDTO avaliacaoLojaFuncionarioDTO : avaliacaoAnterior.getAvaliacoesLojas()) {
159
                        AvaliacaoLoja avaliacaoLojaNovo = new AvaliacaoLoja();
160
                        avaliacaoLojaNovo.setAvaliacao(avaliacaoNova);
161
                        avaliacaoLojaNovo.setLoja(new Loja(avaliacaoLojaFuncionarioDTO.getLoja().getLojaDTO().getSequencial()));
162
                        avaliacaoLojaNovo.setValorMetaMensal(avaliacaoLojaFuncionarioDTO.getValorMetaMensal());
163
                        avaliacaoLojaNovo.setValorMargemContribuicao(avaliacaoLojaFuncionarioDTO.getValorMargemContribuicao());
164
                        lojasParticipantesNovas.add(avaliacaoLojaNovo);
165
                        for (AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO : avaliacaoLojaFuncionarioDTO.getFuncionarios()) {
166
                                AvaliacaoFuncionario avaliacaoFuncionarioNovo = new AvaliacaoFuncionario();
167
                                avaliacaoFuncionarioNovo.setAvaliacao(avaliacaoNova);
168
                                avaliacaoFuncionarioNovo.setFuncionario(new Funcionario(avaliacaoFuncionarioDTO.getSequencialDoFuncionario()));
169
                                avaliacaoFuncionarioNovo.setLoja(new Loja(avaliacaoFuncionarioDTO.getSequencialDaLoja()));
170
                                avaliacaoFuncionarioNovo.setValorMetaMensal(avaliacaoFuncionarioDTO.getValorMetaMensal());
171
                                participantesNovos.add(avaliacaoFuncionarioNovo);
172
                        }
173
                }
174
                avaliacaoNova.getParticipantes().addAll(participantesNovos);
175
                avaliacaoNova.getLojasParticipantes().addAll(lojasParticipantesNovas);
176
 
177
                this.alterar(avaliacaoNova);
178
        }
179
 
180
        @Override
181
        public void adicionarLojaNaAvaliacao(AvaliacaoDTO avaliacao, LojaDTO lojaParticipante) {
724 blopes 182
                // VERIFICAR SE LOJA JÁ CONTA NA AVALIAÇÃO
183
                for (AvaliacaoLojaFuncionarioDTO avaliacaoLojaFuncionarioDTO : avaliacao.getAvaliacoesLojas()) {
184
                        if (avaliacaoLojaFuncionarioDTO.getLoja().getLojaDTO().getSequencial().equals(lojaParticipante.getSequencial())) {
185
                                throw new NegocioException("LOJA JÁ PRESENTE NA AVALIAÇÃO");
186
                        }
187
                }
722 blopes 188
                AvaliacaoLoja avaliacaoLoja = new AvaliacaoLoja();
189
                avaliacaoLoja.setAvaliacao(consultarPorId(new Avaliacao(avaliacao.getSequencial())));
190
                avaliacaoLoja.setLoja(lojaService.consultarPorId(new Loja(lojaParticipante.getSequencial())));
191
                avaliacaoLojaService.cadastrar(avaliacaoLoja);
192
        }
193
 
724 blopes 194
        @Override
195
        public void removerLojaDaAvaliacao(AvaliacaoDTO avaliacao, LojaDTO lojaParticipante) {
196
                AvaliacaoLoja avaliacaoLoja = new AvaliacaoLoja();
197
                avaliacaoLoja.setAvaliacao(consultarPorId(new Avaliacao(avaliacao.getSequencial())));
198
                avaliacaoLoja.setLoja(lojaService.consultarPorId(new Loja(lojaParticipante.getSequencial())));
199
                avaliacaoLoja = avaliacaoLojaService.consultarPorId(avaliacaoLoja);
200
                avaliacaoLojaService.excluir(avaliacaoLoja);
201
        }
202
 
203
        @Override
204
        public void adicionarParticipanteNaAvaliacao(AvaliacaoDTO avaliacao, LojaDTO lojaParticipante, FuncionarioDTO funcionarioParticipante) {
205
                // VERIFICAR SE PARTICIPANTE JÁ CONTA NA AVALIAÇÃO
206
                for (AvaliacaoLojaFuncionarioDTO avaliacaoLojaFuncionarioDTO : avaliacao.getAvaliacoesLojas()) {
207
                        for (AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO : avaliacaoLojaFuncionarioDTO.getFuncionarios()) {
208
                                if (avaliacaoFuncionarioDTO.getFuncionarioDTO().getSequencialFuncionario().equals(funcionarioParticipante.getSequencialFuncionario())) {
209
                                        throw new NegocioException("FUNCIONÁRIO JÁ PRESENTE NA AVALIAÇÃO");
210
                                }
211
                        }
212
                }
213
                AvaliacaoFuncionario avaliacaoFuncionario = new AvaliacaoFuncionario();
214
                avaliacaoFuncionario.setAvaliacao(consultarPorId(new Avaliacao(avaliacao.getSequencial())));
215
                avaliacaoFuncionario.setLoja(lojaService.consultarPorId(new Loja(lojaParticipante.getSequencial())));
216
                Funcionario funcionario = new Funcionario(funcionarioParticipante.getSequencialFuncionario());
217
                avaliacaoFuncionario.setFuncionario(funcionarioService.consultarPorId(funcionario));
218
                avaliacaoFuncionarioService.cadastrar(avaliacaoFuncionario);
219
        }
220
 
221
        @Override
222
        public void removerParticipanteDaAvaliacao(AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO) {
223
                AvaliacaoFuncionarioId avaliacaoFuncionarioId = new AvaliacaoFuncionarioId();
224
                avaliacaoFuncionarioId.setSequencialAvaliacao(avaliacaoFuncionarioDTO.getSequencialDaAvaliacao());
225
                avaliacaoFuncionarioId.setSequencialFuncionario(avaliacaoFuncionarioDTO.getSequencialDoFuncionario());
226
                avaliacaoFuncionarioService.excluir(avaliacaoFuncionarioId);
227
        }
228
 
740 blopes 229
        @Override
230
        public StreamedContent emitirRelatorioImportacaoFolhaPagamento(AvaliacaoDTO avaliacao) {
231
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
232
 
233
                try {
234
                        String caminhoArquivo = "/arquivos_padrao/folhadepagamento_contabilidade.xls";
235
                        InputStream arquivo = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(caminhoArquivo);
236
                        HSSFWorkbook workbook = new HSSFWorkbook(arquivo);
237
                        HSSFSheet sheet = workbook.getSheetAt(0);
238
 
239
                        Iterator rowIterator = sheet.rowIterator();
240
                        while (rowIterator.hasNext()) {
241
                                Row row = (Row) rowIterator.next();
242
                                if (row.getRowNum() < 11) {
243
                                        continue;
244
                                } else {
245
                                        Iterator cellIterator = row.cellIterator();
246
                                        Integer codigoFolha = null;
247
                                        while (cellIterator.hasNext()) {
248
                                                Boolean atualizar = true;
249
                                                Cell cell = (Cell) cellIterator.next();
250
                                                switch (cell.getColumnIndex()) {
251
                                                        case 1:
252
                                                                Integer tipoCelula = cell.getCellType();
253
                                                                if (tipoCelula.equals(Cell.CELL_TYPE_NUMERIC)) {
254
                                                                        Double codigo = cell.getNumericCellValue();
255
                                                                        codigoFolha = codigo.intValue();
256
                                                                } else {
257
                                                                        atualizar = false;
258
                                                                }
259
                                                                break;
260
                                                        case 3:
261
                                                                if (atualizar) {
262
                                                                        for (AvaliacaoLojaFuncionarioDTO avaliacaoLojaDTO : avaliacao.getAvaliacoesLojas()) {
263
                                                                                for (AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO : avaliacaoLojaDTO.getFuncionarios()) {
264
                                                                                        if (VerificadorUtil.estaNulo(avaliacaoFuncionarioDTO.getFuncionarioDTO().getCodigoContabilidade())) {
265
                                                                                                throw new NegocioException("Participante " + avaliacaoFuncionarioDTO.getFuncionarioDTO().getNomeDaPessoa() + " sem código contábil cadastrado");
266
                                                                                        }
267
                                                                                        if (avaliacaoFuncionarioDTO.getFuncionarioDTO().getCodigoContabilidade().equals(codigoFolha)) {
268
                                                                                                Double valorComissao = avaliacaoFuncionarioDTO.getValorComissao();
269
                                                                                                if (VerificadorUtil.estaNulo(valorComissao)) {
270
                                                                                                        throw new NegocioException("Obrigatório informar todas as comissões");
271
                                                                                                }
272
                                                                                                String valor = StringUtil.formatarValorComDoisDigitos(valorComissao.toString());
273
                                                                                                cell.setCellValue(valor.replace(".", ","));
274
                                                                                                break;
275
                                                                                        }
276
                                                                                }
277
                                                                        }
278
                                                                }
279
                                                                break;
280
                                                }
281
                                        }
282
                                }
283
                        }
284
 
285
                        try {
286
                        workbook.write(baos);
287
                        return DefaultStreamedContent.builder()
288
                                .name("folha_pagamento")
289
                                .contentType(ArquivoUtil.retornarContentTypeArquivo("xls"))
290
                                .stream(() -> new java.io.ByteArrayInputStream(baos.toByteArray()))
291
                                .build();
292
                } catch (FileNotFoundException e) {
293
                        e.printStackTrace();
294
                } catch (IOException e) {
295
                        e.printStackTrace();
296
                } finally {
297
                                baos.close();
298
                                arquivo.close();
299
                                workbook.close();
300
                        }
301
                } catch (FileNotFoundException e) {
302
                        e.printStackTrace();
303
                } catch (NegocioException ne) {
304
                        throw new NegocioException(ne.getMessage());
305
                } catch (Exception e) {
306
                        e.printStackTrace();
307
                }
308
 
309
                return null;
310
                /*
311
                try {
312
                        List<byte[]> arquivos = new ArrayList<byte[]>();
313
                        for (FolhaPagamentoFuncionarioDTO funcionarioFolhaPagamento : folhaPagamentoDTO.getFuncionarios()) {
314
                                arquivos.add(funcionarioFolhaPagamento.getArquivo().getArquivo());
315
                        }
316
                        ByteArrayInputStream input = new ByteArrayInputStream(ArquivoUtil.compactarArquivos(arquivos, "recibo"));
317
                        return DefaultStreamedContent.builder().contentType(ArquivoUtil.retornarContentTypeArquivo("zip")).name("recibos.zip").stream(() -> input).build();
318
                } catch (IOException e) {
319
                        e.printStackTrace();
320
                }
321
                return null;
322
                */
323
        }
324
 
357 espaco 325
        /*
326
        @Override
327
        public Avaliacao detalhar(Avaliacao avaliacao) {
328
                return avaliacaoRepository.detalhar(avaliacao);
329
        }
330
 
331
        @Override
332
        public Avaliacao consultarAvaliacaoDaVigencia(Vigencia vigencia) {
333
                return avaliacaoRepository.consultarAvaliacaoDaVigencia(vigencia);
334
        }
335
 
336
        @Override
337
        public List<Avaliacao> consultarAvaliacoesDivulgadas() {
338
                return avaliacaoRepository.consultarAvaliacoesDivulgadas();
339
        }
340
 
341
        @Override
342
        public void solicitarReavaliacao(RankingVendedorDTO rankingVendedor, String solicitacao) {
343
                StringBuilder conteudo = new StringBuilder();
344
                conteudo.append("SOLICITANTE: " + rankingVendedor.getVendedor().getNomeDaPessoa() + "\n");
345
                conteudo.append("DATA DA SOLICITAÇÃO: " + DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM/yyyy 'às' HH:mm", DataUtils.getDataAtual()) + "\n");
346
                conteudo.append("OBSERVAÇÕES: \n");
347
                conteudo.append(solicitacao);
348
 
349
                Pendencia pendencia = new Pendencia();
350
                pendencia.setDescricao("SOLICITAÇÃO DE REAVALIAÇÃO: " + rankingVendedor.getVendedor().getNomeDaPessoa());
351
                pendencia.setUsuario(usuarioService.consultarUsuarioPorPessoa(rankingVendedor.getVendedor().getPessoa()));
352
                pendencia.setData(DataUtils.getDataAtual());
353
                if (VerificadorUtil.estaNulo(rankingVendedor.getVendedor().getLoja())) {
354
                        pendencia.setLoja(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9.longValue()));
355
                } else {
356
                        pendencia.setLoja(rankingVendedor.getVendedor().getLoja());
357
                }
358
                Perfil perfilRh = new Perfil();
359
                perfilRh.setCodigo(ConstantesSEC.PERFIL_RECURSOS_HUMANOS_11);
360
                pendencia.setPerfil(perfilRh);
361
                pendenciaService.cadastrar(pendencia);
362
 
363
                new GerenciadorEmailImpl()
364
                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_SUPERVISAO)
365
                        .comAssunto("SOLICITAÇÃO DE REAVALIAÇÃO")
366
                        .comConteudo(conteudo.toString())
367
                        .enviar();
368
        }
369
 
370
        @Override
371
        public byte[] emitirRelatorioImportacaoFolhaPagamento(ServletContext contexto, Avaliacao avaliacao, Long empresa) {
372
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
373
 
374
                try {
375
                        String caminhoArquivo = "/arquivos/modelos/Relatório de Importação - Folha de Pagamento Espaço Case.xls";
376
                        InputStream arquivo = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(caminhoArquivo);
377
                        HSSFWorkbook workbook = new HSSFWorkbook(arquivo);
378
                        HSSFSheet sheet = workbook.getSheetAt(0);
379
 
380
                        Iterator rowIterator = sheet.rowIterator();
381
                        while (rowIterator.hasNext()) {
382
                                Row row = (Row) rowIterator.next();
383
                                if (row.getRowNum() < 11) {
384
                                        continue;
385
                                } else {
386
                                        Iterator cellIterator = row.cellIterator();
387
                                        Integer codigoFolha = null;
388
                                        while (cellIterator.hasNext()) {
389
                                                Boolean atualizar = true;
390
                                                Cell cell = (Cell) cellIterator.next();
391
                                                switch (cell.getColumnIndex()) {
392
                                                        case 1:
393
                                                                Integer tipoCelula = cell.getCellType();
394
                                                                if (tipoCelula.equals(Cell.CELL_TYPE_NUMERIC)) {
395
                                                                        Double codigo = cell.getNumericCellValue();
396
                                                                        codigoFolha = codigo.intValue();
397
                                                                } else {
398
                                                                        atualizar = false;
399
                                                                }
400
                                                                break;
401
                                                        case 3:
402
                                                                if (atualizar) {
403
                                                                        for (AvaliacaoFuncionario avaliacaoFunc : avaliacao.getParticipantes()) {
404
                                                                                if (VerificadorUtil.estaNulo(avaliacaoFunc.getFuncionario().getCodigoContabilidade())) {
405
                                                                                        throw new NegocioException("Participante " + avaliacaoFunc.getFuncionario().getNomeDaPessoa() + " sem código contábil cadastrado");
406
                                                                                }
407
                                                                                if (avaliacaoFunc.getFuncionario().getTipoComissionamento().equals(TipoComissionamento.parse(empresa).getValor()) &&
408
                                                                                        avaliacaoFunc.getFuncionario().getCodigoContabilidade().equals(codigoFolha)) {
409
                                                                                        Double valorComissao = avaliacaoFunc.getValorComissao();
410
                                                                                        if (VerificadorUtil.estaNulo(valorComissao)) {
411
                                                                                                throw new NegocioException("Obrigatório informar todas as comissões");
412
                                                                                        }
413
                                                                                        String valor = StringUtil.formatarValorComDoisDigitos(valorComissao.toString());
414
                                                                                        cell.setCellValue(valor.replace(".", ","));
415
                                                                                        break;
416
                                                                                }
417
                                                                        }
418
                                                                }
419
                                                                break;
420
                                                }
421
                                        }
422
                                }
423
                        }
424
 
425
                        try {
426
                        workbook.write(baos);
427
                        return baos.toByteArray();
428
                } catch (FileNotFoundException e) {
429
                        e.printStackTrace();
430
                } catch (IOException e) {
431
                        e.printStackTrace();
432
                } finally {
433
                                baos.close();
434
                                arquivo.close();
435
                                workbook.close();
436
                        }
437
                } catch (FileNotFoundException e) {
438
                        e.printStackTrace();
439
                } catch (NegocioException ne) {
440
                        throw new NegocioException(ne.getMessage());
441
                } catch (Exception e) {
442
                        e.printStackTrace();
443
                }
444
 
445
        return null;
446
        }
447
        */
448
}