Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
1 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.IOException;
4
import java.io.Serializable;
5
import java.util.ArrayList;
6
import java.util.List;
7
 
8
import javax.inject.Inject;
9
import javax.inject.Named;
10
 
11
import org.primefaces.event.FileUploadEvent;
12
import org.primefaces.model.file.UploadedFile;
13
import org.springframework.context.annotation.Scope;
14
 
15
import br.com.ec.controller.managedbean.consultademanda.CompraConsultaPorDemanda;
16
import br.com.ec.controller.util.PdfUtil;
17
import br.com.ec.domain.model.Compra;
18
import br.com.ec.domain.model.CompraProduto;
19
import br.com.ec.domain.model.Fornecedor;
20
import br.com.ec.domain.model.FornecedorProduto;
21
import br.com.ec.domain.model.Loja;
22
import br.com.ec.domain.model.Modelo;
23
import br.com.ec.domain.model.NotaFiscal;
24
import br.com.ec.domain.model.Produto;
25
import br.com.ec.domain.model.Tributacao;
26
import br.com.ec.domain.model.tipos.TipoNotaFiscal;
27
import br.com.ec.domain.service.compra.CompraService;
28
import br.com.ec.domain.service.compraproduto.CompraProdutoService;
29
import br.com.ec.domain.service.fornecedor.FornecedorService;
30
import br.com.ec.domain.service.fornecedorproduto.FornecedorProdutoService;
31
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
32
import br.com.ec.domain.service.pedido.PedidoService;
33
import br.com.ec.domain.service.produto.ProdutoService;
34
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
35
import br.com.ec.domain.service.produtopedidocompra.ProdutoPedidoCompraService;
36
import br.com.ec.domain.shared.ConstantesSEC;
37
import br.edu.cesmac.core.consulta.ParametrosConsulta;
38
import br.edu.cesmac.core.exception.NegocioException;
39
import br.edu.cesmac.core.generic.GenericService;
40
import br.edu.cesmac.core.util.VerificadorUtil;
41
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
42
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandBean;
43
import br.edu.cesmac.web.generic.AbstractBean;
44
import br.edu.cesmac.web.message.LancadorMensagem;
45
import br.edu.cesmac.web.util.TipoOperacao;
46
 
47
@Named
48
@Scope("view")
49
public class CompraBean extends AbstractBean<Compra> implements Serializable {
50
 
51
        private static final long serialVersionUID = 1L;
52
 
53
        private CompraProduto compraProdutoSelecionado;
54
        private Produto produtoSelecionado;
55
        private Integer quantidadeProdutoSelecionado;
56
        private String codigoProduto;
57
 
58
        private UploadedFile arquivoXml;
59
        private NotaFiscal notaFiscalImportada;
60
        private String tipoProdutoImportacao;
61
        private Tributacao tributacaoImportacao;
62
        private Modelo modeloProdutoImportacao;
63
        private String tipoProdutoEstilo;
64
 
65
        private CompraService compraService;
66
        private CompraProdutoService compraProdutoService;
67
        private ProdutoLojaService produtoLojaService;
68
        private ProdutoService produtoService;
69
        private FornecedorService fornecedorService;
70
        private FornecedorProdutoService fornecedorProdutoService;
71
        private NotaFiscalService notaFiscalService;
72
        private ProdutoPedidoCompraService produtoPedidoCompraService;
73
        private PedidoService pedidoService;
74
 
75
        private List<CompraProduto> listaCompraProdutos;
76
        private CompraConsultaPorDemanda lazy;
77
 
78
        private CompraProduto compraProdutoParaLocalizacao;
79
        private Boolean cadastrarParcelasImportadas;
80
 
81
        @Inject
82
        public CompraBean(CompraService compraService, CompraProdutoService compraProdutoService, ProdutoLojaService produtoLojaService,
83
                        ProdutoService produtoService, FornecedorService fornecedorService, NotaFiscalService notaFiscalService, FornecedorProdutoService fornecedorProdutoService,
84
                        ProdutoPedidoCompraService produtoPedidoCompraService, PedidoService pedidoService, CompraConsultaPorDemanda lazy) {
85
                this.compraService = compraService;
86
                this.compraProdutoService = compraProdutoService;
87
                this.produtoLojaService = produtoLojaService;
88
                this.produtoService = produtoService;
89
                this.fornecedorService = fornecedorService;
90
                this.fornecedorProdutoService = fornecedorProdutoService;
91
                this.notaFiscalService = notaFiscalService;
92
                this.produtoPedidoCompraService = produtoPedidoCompraService;
93
                this.pedidoService = pedidoService;
94
                this.lazy = lazy;
95
        }
96
 
97
        @Override
98
        public void preCarregamento() {
99
                entidade = new Compra();
100
                parametrosConsulta = new ParametrosConsulta<Compra>();
101
                parametrosConsulta.setEntidade(entidade);
102
        }
103
 
104
        @Override
105
        public void limparEntidade() {
106
                setArquivoXml(null);
107
                setNotaFiscalImportada(null);
108
                setCadastrarParcelasImportadas(false);
109
        }
110
 
111
        @Override
112
        public GenericService<Compra> getService() {
113
                return compraService;
114
        }
115
 
116
        @Override
117
        public Compra getEntidade() {
118
                return entidade;
119
        }
120
 
121
        @Override
122
        public Compra getId() {
123
                return getEntidade();
124
        }
125
 
126
        public List<CompraProduto> getListaCompraProdutos() {
127
                return listaCompraProdutos;
128
        }
129
        public void setListaCompraProdutos(List<CompraProduto> listaCompraProdutos) {
130
                this.listaCompraProdutos = listaCompraProdutos;
131
        }
132
 
133
        public CompraConsultaPorDemanda getLazy() {
134
                prepararConsultaDemanda();
135
                return lazy;
136
        }
137
        public void setLazy(CompraConsultaPorDemanda lazy) {
138
                this.lazy = lazy;
139
        }
140
        public void prepararConsultaDemanda() {
141
                lazy.setarParametrosConsulta(getParametrosConsulta());
142
        }
143
 
144
        public CompraProduto getCompraProdutoSelecionado() {
145
                return compraProdutoSelecionado;
146
        }
147
        public void setCompraProdutoSelecionado(CompraProduto compraProdutoSelecionado) {
148
                this.compraProdutoSelecionado = compraProdutoSelecionado;
149
        }
150
 
151
        public Produto getProdutoSelecionado() {
152
                return produtoSelecionado;
153
        }
154
        public void setProdutoSelecionado(Produto produtoSelecionado) {
155
                this.produtoSelecionado = produtoSelecionado;
156
        }
157
 
158
        public Integer getQuantidadeProdutoSelecionado() {
159
                return quantidadeProdutoSelecionado;
160
        }
161
        public void setQuantidadeProdutoSelecionado(Integer quantidadeProdutoSelecionado) {
162
                this.quantidadeProdutoSelecionado = quantidadeProdutoSelecionado;
163
        }
164
 
165
        public String getCodigoProduto() {
166
                return codigoProduto;
167
        }
168
        public void setCodigoProduto(String codigoProduto) {
169
                this.codigoProduto = codigoProduto;
170
        }
171
 
172
        public UploadedFile getArquivoXml() {
173
                return arquivoXml;
174
        }
175
        public void setArquivoXml(UploadedFile arquivoXml) {
176
                this.arquivoXml = arquivoXml;
177
        }
178
 
179
        public NotaFiscal getNotaFiscalImportada() {
180
                return notaFiscalImportada;
181
        }
182
        public void setNotaFiscalImportada(NotaFiscal notaFiscalImportada) {
183
                this.notaFiscalImportada = notaFiscalImportada;
184
        }
185
 
186
        public String getTipoProdutoImportacao() {
187
                return tipoProdutoImportacao;
188
        }
189
        public void setTipoProdutoImportacao(String tipoProdutoImportacao) {
190
                this.tipoProdutoImportacao = tipoProdutoImportacao;
191
        }
192
 
193
        public Tributacao getTributacaoImportacao() {
194
                return tributacaoImportacao;
195
        }
196
        public void setTributacaoImportacao(Tributacao tributacaoImportacao) {
197
                this.tributacaoImportacao = tributacaoImportacao;
198
        }
199
 
200
        public Modelo getModeloProdutoImportacao() {
201
                return modeloProdutoImportacao;
202
        }
203
        public void setModeloProdutoImportacao(Modelo modeloProdutoImportacao) {
204
                this.modeloProdutoImportacao = modeloProdutoImportacao;
205
        }
206
 
207
        public String getTipoProdutoEstilo() {
208
                return tipoProdutoEstilo;
209
        }
210
        public void setTipoProdutoEstilo(String tipoProdutoEstilo) {
211
                this.tipoProdutoEstilo = tipoProdutoEstilo;
212
        }
213
 
214
        public CompraProduto getCompraProdutoParaLocalizacao() {
215
                return compraProdutoParaLocalizacao;
216
        }
217
        public void setCompraProdutoParaLocalizacao(CompraProduto compraProdutoParaLocalizacao) {
218
                this.compraProdutoParaLocalizacao = compraProdutoParaLocalizacao;
219
        }
220
 
221
        public Boolean getCadastrarParcelasImportadas() {
222
                return cadastrarParcelasImportadas;
223
        }
224
        public void setCadastrarParcelasImportadas(Boolean cadastrarParcelasImportadas) {
225
                this.cadastrarParcelasImportadas = cadastrarParcelasImportadas;
226
        }
227
 
228
        @Override
229
        public void preConsultar() {
230
                setTipoOperacao(TipoOperacao.CONSULTAR);
231
                limparEntidade();
232
        }
233
 
234
        @Override
235
        public void preDetalhar(Compra compra) {
236
                super.preDetalhar(compra);
237
                prepararProdutosDaCompra(compra);
238
                setNotaFiscalImportada(null);
239
        }
240
 
241
        @Override
242
        public void preCadastrar() {
243
                super.preCadastrar();
244
                Compra compra = new Compra();
245
                compra.setIndicadorVerificada(false);
246
                compra.setIndicadorAtivo(true);
247
                compra.setLoja(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9));
248
                setEntidade(compra);
249
        }
250
 
251
        @Override
252
        public void cadastrar() {
253
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
254
                        public void execute() {
255
                                modificarEntidadeAntesDaOperacao();
256
                                getService().cadastrar(entidade);
257
                                limparEntidade();
258
                                modificarEntidadeDepoisDaOperacao();
259
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO));
260
                                preDetalhar(getEntidade());
261
                        }
262
                });
263
        }
264
 
265
        public void alterarDetalharCompra() {
266
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
267
                        public void execute() {
268
                                modificarEntidadeAntesDaOperacao();
269
                                getService().alterar(entidade);
270
                                limparEntidade();
271
                                modificarEntidadeDepoisDaOperacao();
272
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO));
273
                                preDetalhar(getEntidade());
274
                        }
275
                });
276
        }
277
 
278
        /***************************************************************/
279
 
280
        public Boolean verificarSeCompraTemProdutos(Compra compra) {
281
                CompraProduto compraProduto = new CompraProduto();
282
                compraProduto.setCompra(compra);
283
                Integer quantidadeProdutos = compraProdutoService.obterQuantidadeDeRegistrosPassandoEntidade(compraProduto);
284
                return quantidadeProdutos > 0? true : false;
285
        }
286
 
287
        public Double getValorTotalProdutos() {
288
                Double total = new Double(0);
289
                if (VerificadorUtil.naoEstaNulo(listaCompraProdutos)) {
290
                        for (CompraProduto compraProduto : getListaCompraProdutos()) {
291
                                if (VerificadorUtil.naoEstaNulo(compraProduto.getValorCompra()) && VerificadorUtil.naoEstaNulo(compraProduto.getQuantidade())) {
292
                                        total = total + compraProduto.getValorCompra() * compraProduto.getQuantidade();
293
                                }
294
                        }
295
                }
296
                return total;
297
        }
298
 
299
        public Integer getQuantidadeTotalProdutos() {
300
                Integer total = 0;
301
                if (VerificadorUtil.naoEstaNulo(listaCompraProdutos)) {
302
                        for (CompraProduto compraProduto : getListaCompraProdutos()) {
303
                                total = total + compraProduto.getQuantidade();
304
                        }
305
                }
306
                return total;
307
        }
308
 
309
        public void prepararProdutosDaCompra(Compra compra) {
310
                setListaCompraProdutos(compraProdutoService.consultarProdutosDaCompra(compra));
311
                setProdutoSelecionado(null);
312
                setCodigoProduto("");
313
        }
314
 
315
        public void escolherProduto(Produto produto) {
316
                setProdutoSelecionado(produto);
317
                setQuantidadeProdutoSelecionado(0);
318
        }
319
 
320
        public void consultarProduto() {
321
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
322
                        public void execute() {
323
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProduto());
324
                                if (produtoSelecionado != null) {
325
                                        setProdutoSelecionado(produtoSelecionado);
326
                                        setQuantidadeProdutoSelecionado(0);
327
                                        adicionandoParametroArgsConfirmandoAcao(true);
328
                                } else {
329
                                        LancadorMensagem.lancarErro("Produto não encontrado");
330
                                }
331
                        }
332
                });
333
        }
334
 
335
        public void confirmarProdutoImportado(final CompraProduto compraProduto) {
336
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
337
                        public void execute() {
338
                                verificarParametros(compraProduto.getQuantidade());
339
                                verificarTributacao(compraProduto);
340
                                compraProduto.setValorCompra(compraProduto.getValorUnidadeComercial());
341
                                List<CompraProduto> listaCompraProduto = new ArrayList<CompraProduto>();
342
                                listaCompraProduto.add(compraProduto);
343
                                compraProdutoService.adicionarProdutosImportados(getEntidade(), listaCompraProduto,
344
                                                getTipoProdutoImportacao(), getTributacaoImportacao(), getModeloProdutoImportacao(), getTipoProdutoEstilo());
345
                                compraService.alterar(getEntidade());
346
                                getNotaFiscalImportada().getListaCompraProduto().remove(compraProduto);
347
                                prepararProdutosDaCompra(getEntidade());
348
                                LancadorMensagem.lancarSucesso("Produto importado com sucesso!");
349
                        }
350
                });
351
        }
352
 
353
        private void verificarTributacao(CompraProduto compraProduto) {
354
                if (compraProduto.getProduto().tipoProdutoTributado()) { // TODO: VERIFICANDO APENAS PRODUTOS DA ESPACO CASE
355
                        if (VerificadorUtil.estaNulo(compraProduto.getTributacaoDoProduto())) {
356
                                throw new NegocioException("Obrigatório informar: Tributação do produto.");
357
                        }
358
                }
359
        }
360
 
361
        public void adicionarProduto() {
362
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
363
                        public void execute() {
364
                                verificarParametros(getQuantidadeProdutoSelecionado());
365
                                verificarProdutoSelecionado();
366
                                CompraProduto compraProduto = new CompraProduto();
367
                                compraProduto.setCompra(compraService.consultarPorId(getEntidade()));
368
                                compraProduto.setProduto(getProdutoSelecionado());
369
                                compraProduto.setValorCompra(getProdutoSelecionado().getValorCompra());
370
                                compraProduto.setQuantidade(getQuantidadeProdutoSelecionado());
371
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(getQuantidadeProdutoSelecionado(), getProdutoSelecionado(), compraProduto.getLojaDaCompra());
372
                                compraProdutoService.cadastrar(compraProduto);
373
                                atualizarDadosDoProduto(compraProduto);
374
                                prepararProdutosDaCompra(getEntidade());
375
                                produtoPedidoCompraService.retirarPedido(compraProduto);
376
                                produtoService.verificarPedidosProdutoParaEntrarEmContato(compraProduto.getProduto(), compraProduto.getCompra().getSequencial());
377
                                adicionandoParametroArgsConfirmandoAcao(true);
378
                                LancadorMensagem.lancarSucesso("Produto adicionado com sucesso!");
379
                        }
380
                });
381
        }
382
 
383
        public void alterarCompraProduto() {
384
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
385
                        public void execute() {
386
                                Integer estoqueAntigo = getCompraProdutoSelecionado().getQuantidade();
387
                                verificarParametros(getQuantidadeProdutoSelecionado());
388
                                getCompraProdutoSelecionado().setQuantidade(getQuantidadeProdutoSelecionado());
389
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(estoqueAntigo * -1, getCompraProdutoSelecionado().getProduto(), getCompraProdutoSelecionado().getCompra().getLoja());
390
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(getCompraProdutoSelecionado().getQuantidade(), getCompraProdutoSelecionado().getProduto(), getCompraProdutoSelecionado().getCompra().getLoja());
391
                                compraProdutoService.alterar(getCompraProdutoSelecionado());
392
                                atualizarDadosDoProduto(getCompraProdutoSelecionado());
393
                                prepararProdutosDaCompra(getEntidade());
394
                                adicionandoParametroArgsConfirmandoAcao(true);
395
                                LancadorMensagem.lancarSucesso("Produto alterado com sucesso!");
396
                        }
397
                });
398
        }
399
 
400
        private void verificarParametros(Integer quantidade) {
401
                if (VerificadorUtil.estaNulo(quantidade) || quantidade <= 0) {
402
                        throw new NegocioException("Obrigatório informar: Quantidade comprada.");
403
                }
404
        }
405
 
406
        private void verificarProdutoSelecionado() {
407
                if (getProdutoSelecionado().getCodigo().equals("000000")) {
408
                        throw new NegocioException("PRODUTO NÃO PODE SER ADICIONADO");
409
                }
410
        }
411
 
412
        protected void atualizarDadosDoProduto(CompraProduto compraProduto) {
413
                Produto produto = compraProduto.getProduto();
414
                produto.setValorCompra(compraProduto.getValorCompra());
415
                produtoService.alterar(produto);
416
                fornecedorProdutoService.sincronizandoFornecedor(new FornecedorProduto(compraProduto.getCompra().getFornecedor(), compraProduto.getProduto(), compraProduto.getValorCompra(), compraProduto.getCodigoProdutoNotaFiscal()));
417
        }
418
 
419
        public void removerProduto(final CompraProduto compraProduto) {
420
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
421
                        public void execute() {
422
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(compraProduto.getQuantidade() * (-1), compraProduto.getProduto(), compraProduto.getCompra().getLoja());
423
                                compraProdutoService.excluir(compraProduto);
424
                                prepararProdutosDaCompra(getEntidade());
425
                                LancadorMensagem.lancarSucesso("Produto removido com sucesso!");
426
                        }
427
                });
428
        }
429
 
430
        public void cancelar(final Compra compra) {
431
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
432
                        public void execute() {
433
                                compra.setIndicadorAtivo(false);
434
                                compraService.alterar(compra);
435
                                LancadorMensagem.lancarSucesso("Compra cancelada com sucesso!");
436
                        }
437
                });
438
        }
439
 
440
        public void excluir(final Compra compra) {
441
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
442
                        public void execute() {
443
                                List<CompraProduto> produtosDacompra = compraProdutoService.consultarProdutosDaCompra(compra);
444
                                for (CompraProduto compraProduto : produtosDacompra) {
445
                                        produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(compraProduto.getQuantidade() * (-1), compraProduto.getProduto(), compraProduto.getCompra().getLoja());
446
                                        compraProdutoService.excluir(compraProduto);
447
                                }
448
                                compraService.excluir(compra);
449
                                LancadorMensagem.lancarSucesso("Compra excluída com sucesso!");
450
                        }
451
                });
452
        }
453
 
454
        public void ativar(final Compra compra) {
455
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
456
                        public void execute() {
457
                                compra.setIndicadorAtivo(true);
458
                                compraService.alterar(compra);
459
                                LancadorMensagem.lancarSucesso("Compra ativada com sucesso!");
460
                        }
461
                });
462
        }
463
 
464
        public void uploadArquivoXml(final FileUploadEvent e) {
465
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
466
                        public void execute() {
467
                                NotaFiscal notaFiscal = notaFiscalService.importarXml(e.getFile());
468
                                setNotaFiscalImportada(notaFiscal);
469
                                if (VerificadorUtil.estaNulo(getEntidade().getConta())) {
470
                                        setCadastrarParcelasImportadas(true);
471
                                } else {
472
                                        setCadastrarParcelasImportadas(false);
473
                                }
474
                                adicionandoParametroArgsConfirmandoAcao(true);
475
                        }
476
                });
477
    }
478
 
479
        public void confirmarImportacaoXml() {
480
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
481
                        public void execute() {
482
                                NotaFiscal notaFiscalImportado = notaFiscalService.consultarPelaChaveEeTipo(getNotaFiscalImportada().getChave(), TipoNotaFiscal.NFE_RECEBIDA.getValor());
483
                                if (VerificadorUtil.naoEstaNulo(notaFiscalImportado)) {
484
                                        getEntidade().setNotaFiscal(notaFiscalImportado);
485
                                } else {
486
                                        notaFiscalService.alterar(getNotaFiscalImportada());
487
                                        getEntidade().setNotaFiscal(notaFiscalService.consultarPelaChaveEeTipo(getNotaFiscalImportada().getChave(), TipoNotaFiscal.NFE_RECEBIDA.getValor()));
488
                                }
489
                                if (getCadastrarParcelasImportadas()) {
490
                                        compraService.adicionarParcelasNaCompra(getEntidade(), getNotaFiscalImportada().getListaParcelas());
491
                                }
492
                                compraProdutoService.adicionarProdutosImportados(getEntidade(), getNotaFiscalImportada().getListaCompraProduto(),
493
                                                getTipoProdutoImportacao(), getTributacaoImportacao(), getModeloProdutoImportacao(), getTipoProdutoEstilo());
494
                                compraService.alterar(getEntidade());
495
                                prepararProdutosDaCompra(getEntidade());
496
                                setNotaFiscalImportada(null);
497
                                LancadorMensagem.lancarSucesso("Nota fiscal importada com sucesso.");
498
                        }
499
                });
500
        }
501
 
502
        public void cancelarImportacaoXml() {
503
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
504
                        public void execute() {
505
                                setNotaFiscalImportada(null);
506
                                LancadorMensagem.lancarSucesso("Importação da nota fiscal cancelada com sucesso.");
507
                        }
508
                });
509
        }
510
 
511
        public void zerarQuantidade() {
512
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
513
                        public void execute() {
514
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
515
                                        compraProdutoNotaFiscal.setQuantidade(0);
516
                                }
517
                                LancadorMensagem.lancarSucesso("Itens zerados com sucesso.");
518
                        }
519
                });
520
        }
521
 
522
        public void alterarParaSolicitarContagem() {
523
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
524
                        public void execute() {
525
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
526
                                        compraProdutoNotaFiscal.setIndicadorSolicitarContagem(true);
527
                                }
528
                                LancadorMensagem.lancarSucesso("Itens com solicitação de contagem ativada.");
529
                        }
530
                });
531
        }
532
 
533
        public void removerProdutosJaExistentes() {
534
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
535
                        public void execute() {
536
                                List<CompraProduto> listaProdutosNovos = new ArrayList<CompraProduto>();
537
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
538
                                        if (VerificadorUtil.estaNulo(compraProdutoNotaFiscal.getProduto().getSequencial())) {
539
                                                listaProdutosNovos.add(compraProdutoNotaFiscal);
540
                                        }
541
                                }
542
                                getNotaFiscalImportada().setListaCompraProduto(listaProdutosNovos);
543
                                LancadorMensagem.lancarSucesso("Produtos já cadastrados retirados com sucesso.");
544
                        }
545
                });
546
        }
547
 
548
        public void removerProdutosJaIncluidosNaCompra() {
549
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
550
                        public void execute() {
551
                                List<CompraProduto> listaProdutosNaoIncluidos = new ArrayList<CompraProduto>();
552
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
553
                                        Boolean produtoIncluido = false;
554
                                        for (CompraProduto compraProdutoIncluido : getListaCompraProdutos()) {
555
                                                if (VerificadorUtil.estaNulo(compraProdutoNotaFiscal.getProduto().getCodigo())) {
556
                                                        break;
557
                                                }
558
                                                if (compraProdutoNotaFiscal.getProduto().getCodigo().equals(compraProdutoIncluido.getProduto().getCodigo())) {
559
                                                        produtoIncluido = true;
560
                                                        break;
561
                                                }
562
                                        }
563
                                        if (!produtoIncluido) {
564
                                                listaProdutosNaoIncluidos.add(compraProdutoNotaFiscal);
565
                                        }
566
                                }
567
 
568
                                getNotaFiscalImportada().setListaCompraProduto(listaProdutosNaoIncluidos);
569
                                LancadorMensagem.lancarSucesso("Produtos já incluídos retirados com sucesso.");
570
                        }
571
                });
572
        }
573
 
574
        public void removerTodos() {
575
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
576
                        public void execute() {
577
                                getNotaFiscalImportada().getListaCompraProduto().clear();
578
                                LancadorMensagem.lancarSucesso("Itens removidos com sucesso.");
579
                        }
580
                });
581
        }
582
 
583
        public void removerProdutoImportado(final CompraProduto compraProduto) {
584
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
585
                        public void execute() {
586
                                getNotaFiscalImportada().getListaCompraProduto().remove(compraProduto);
587
                                LancadorMensagem.lancarSucesso("Produto removido com sucesso!");
588
                        }
589
                });
590
        }
591
 
592
        public void localizarProduto(final Produto produtoLocalizado) {
593
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
594
                        public void execute() {
595
                                getNotaFiscalImportada().getListaCompraProduto().remove(getCompraProdutoParaLocalizacao());
596
 
597
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEAN())) {
598
                                        produtoLocalizado.setCodigoEAN(getCompraProdutoParaLocalizacao().getProduto().getCodigoEAN());
599
                                }
600
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEANTributado())) {
601
                                        produtoLocalizado.setCodigoEANTributado(getCompraProdutoParaLocalizacao().getProduto().getCodigoEANTributado());
602
                                }
603
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoNCM())) {
604
                                        produtoLocalizado.setCodigoNCM(getCompraProdutoParaLocalizacao().getProduto().getCodigoNCM());
605
                                }
606
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEST())) {
607
                                        produtoLocalizado.setCodigoEST(getCompraProdutoParaLocalizacao().getProduto().getCodigoEST());
608
                                }
609
                                getCompraProdutoParaLocalizacao().setProduto(produtoLocalizado);
610
                                getCompraProdutoParaLocalizacao().setValorCompra(produtoLocalizado.getValorCompra());
611
                                getNotaFiscalImportada().getListaCompraProduto().add(getCompraProdutoParaLocalizacao());
612
                                LancadorMensagem.lancarSucesso("Produto localizado com sucesso!");
613
                        }
614
                });
615
        }
616
 
617
        private String recuperarTexto(String contemLinha, byte[] arquivo) {
618
                try {
619
                        String[] linhas = PdfUtil.extrairPDFEmLinhas(arquivo);
620
                        boolean capturar = false;
621
                        for (String linha : linhas) {
622
                                if (capturar) {
623
                                        return linha.trim();
624
                                }
625
                                if (linha.contains(contemLinha)) {
626
                                        capturar = true;
627
                                }
628
                        }
629
                } catch (IOException e) {
630
                        e.printStackTrace();
631
                }
632
                return "";
633
        }
634
 
635
        public List<Fornecedor> consultarFornecedorPorNomeOuCnpj(String campo) {
636
                return fornecedorService.consultarFornecedorPorNomeOuCnpj(campo);
637
        }
638
 
639
}