Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.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.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);
147 espaco 289
                if (VerificadorUtil.naoEstaNulo(getListaCompraProdutos())) {
106 espaco 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
 
147 espaco 299
        public Double getValorTotalProdutosComIPI() {
300
                Double total = new Double(0);
301
                if (VerificadorUtil.naoEstaNulo(getListaCompraProdutos())) {
302
                        for (CompraProduto compraProduto : getListaCompraProdutos()) {
303
                                if (VerificadorUtil.naoEstaNulo(compraProduto.getValorCompra()) && VerificadorUtil.naoEstaNulo(compraProduto.getQuantidade())) {
304
                                        total = total + ((compraProduto.getValorCompra() + compraProduto.getProduto().calculoIPI()) * compraProduto.getQuantidade());
305
                                }
306
                        }
307
                }
308
                return total;
309
        }
310
 
106 espaco 311
        public Integer getQuantidadeTotalProdutos() {
312
                Integer total = 0;
313
                if (VerificadorUtil.naoEstaNulo(listaCompraProdutos)) {
314
                        for (CompraProduto compraProduto : getListaCompraProdutos()) {
315
                                total = total + compraProduto.getQuantidade();
316
                        }
317
                }
318
                return total;
319
        }
320
 
321
        public void prepararProdutosDaCompra(Compra compra) {
322
                setListaCompraProdutos(compraProdutoService.consultarProdutosDaCompra(compra));
323
                setProdutoSelecionado(null);
324
                setCodigoProduto("");
325
        }
326
 
327
        public void escolherProduto(Produto produto) {
328
                setProdutoSelecionado(produto);
329
                setQuantidadeProdutoSelecionado(0);
330
        }
331
 
332
        public void consultarProduto() {
333
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
334
                        public void execute() {
335
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProduto());
336
                                if (produtoSelecionado != null) {
337
                                        setProdutoSelecionado(produtoSelecionado);
338
                                        setQuantidadeProdutoSelecionado(0);
339
                                        adicionandoParametroArgsConfirmandoAcao(true);
340
                                } else {
341
                                        LancadorMensagem.lancarErro("Produto não encontrado");
342
                                }
343
                        }
344
                });
345
        }
346
 
347
        public void confirmarProdutoImportado(final CompraProduto compraProduto) {
348
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
349
                        public void execute() {
350
                                verificarParametros(compraProduto.getQuantidade());
351
                                verificarTributacao(compraProduto);
352
                                compraProduto.setValorCompra(compraProduto.getValorUnidadeComercial());
353
                                List<CompraProduto> listaCompraProduto = new ArrayList<CompraProduto>();
354
                                listaCompraProduto.add(compraProduto);
355
                                compraProdutoService.adicionarProdutosImportados(getEntidade(), listaCompraProduto,
356
                                                getTipoProdutoImportacao(), getTributacaoImportacao(), getModeloProdutoImportacao(), getTipoProdutoEstilo());
357
                                compraService.alterar(getEntidade());
358
                                getNotaFiscalImportada().getListaCompraProduto().remove(compraProduto);
359
                                prepararProdutosDaCompra(getEntidade());
360
                                LancadorMensagem.lancarSucesso("Produto importado com sucesso!");
361
                        }
362
                });
363
        }
364
 
365
        private void verificarTributacao(CompraProduto compraProduto) {
366
                if (compraProduto.getProduto().tipoProdutoTributado()) { // TODO: VERIFICANDO APENAS PRODUTOS DA ESPACO CASE
367
                        if (VerificadorUtil.estaNulo(compraProduto.getTributacaoDoProduto())) {
368
                                throw new NegocioException("Obrigatório informar: Tributação do produto.");
369
                        }
370
                }
371
        }
372
 
373
        public void adicionarProduto() {
374
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
375
                        public void execute() {
376
                                verificarParametros(getQuantidadeProdutoSelecionado());
377
                                verificarProdutoSelecionado();
378
                                CompraProduto compraProduto = new CompraProduto();
379
                                compraProduto.setCompra(compraService.consultarPorId(getEntidade()));
380
                                compraProduto.setProduto(getProdutoSelecionado());
381
                                compraProduto.setValorCompra(getProdutoSelecionado().getValorCompra());
382
                                compraProduto.setQuantidade(getQuantidadeProdutoSelecionado());
383
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(getQuantidadeProdutoSelecionado(), getProdutoSelecionado(), compraProduto.getLojaDaCompra());
384
                                compraProdutoService.cadastrar(compraProduto);
385
                                atualizarDadosDoProduto(compraProduto);
386
                                prepararProdutosDaCompra(getEntidade());
387
                                produtoPedidoCompraService.retirarPedido(compraProduto);
388
                                produtoService.verificarPedidosProdutoParaEntrarEmContato(compraProduto.getProduto(), compraProduto.getCompra().getSequencial());
389
                                adicionandoParametroArgsConfirmandoAcao(true);
390
                                LancadorMensagem.lancarSucesso("Produto adicionado com sucesso!");
391
                        }
392
                });
393
        }
394
 
395
        public void alterarCompraProduto() {
396
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
397
                        public void execute() {
398
                                Integer estoqueAntigo = getCompraProdutoSelecionado().getQuantidade();
399
                                verificarParametros(getQuantidadeProdutoSelecionado());
400
                                getCompraProdutoSelecionado().setQuantidade(getQuantidadeProdutoSelecionado());
401
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(estoqueAntigo * -1, getCompraProdutoSelecionado().getProduto(), getCompraProdutoSelecionado().getCompra().getLoja());
402
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(getCompraProdutoSelecionado().getQuantidade(), getCompraProdutoSelecionado().getProduto(), getCompraProdutoSelecionado().getCompra().getLoja());
403
                                compraProdutoService.alterar(getCompraProdutoSelecionado());
404
                                atualizarDadosDoProduto(getCompraProdutoSelecionado());
405
                                prepararProdutosDaCompra(getEntidade());
406
                                adicionandoParametroArgsConfirmandoAcao(true);
407
                                LancadorMensagem.lancarSucesso("Produto alterado com sucesso!");
408
                        }
409
                });
410
        }
411
 
412
        private void verificarParametros(Integer quantidade) {
413
                if (VerificadorUtil.estaNulo(quantidade) || quantidade <= 0) {
414
                        throw new NegocioException("Obrigatório informar: Quantidade comprada.");
415
                }
416
        }
417
 
418
        private void verificarProdutoSelecionado() {
419
                if (getProdutoSelecionado().getCodigo().equals("000000")) {
420
                        throw new NegocioException("PRODUTO NÃO PODE SER ADICIONADO");
421
                }
422
        }
423
 
424
        protected void atualizarDadosDoProduto(CompraProduto compraProduto) {
425
                Produto produto = compraProduto.getProduto();
426
                produto.setValorCompra(compraProduto.getValorCompra());
427
                produtoService.alterar(produto);
428
                fornecedorProdutoService.sincronizandoFornecedor(new FornecedorProduto(compraProduto.getCompra().getFornecedor(), compraProduto.getProduto(), compraProduto.getValorCompra(), compraProduto.getCodigoProdutoNotaFiscal()));
429
        }
430
 
431
        public void removerProduto(final CompraProduto compraProduto) {
432
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
433
                        public void execute() {
434
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(compraProduto.getQuantidade() * (-1), compraProduto.getProduto(), compraProduto.getCompra().getLoja());
435
                                compraProdutoService.excluir(compraProduto);
436
                                prepararProdutosDaCompra(getEntidade());
437
                                LancadorMensagem.lancarSucesso("Produto removido com sucesso!");
438
                        }
439
                });
440
        }
441
 
442
        public void cancelar(final Compra compra) {
443
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
444
                        public void execute() {
445
                                compra.setIndicadorAtivo(false);
446
                                compraService.alterar(compra);
447
                                LancadorMensagem.lancarSucesso("Compra cancelada com sucesso!");
448
                        }
449
                });
450
        }
451
 
452
        public void excluir(final Compra compra) {
453
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
454
                        public void execute() {
455
                                List<CompraProduto> produtosDacompra = compraProdutoService.consultarProdutosDaCompra(compra);
456
                                for (CompraProduto compraProduto : produtosDacompra) {
457
                                        produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(compraProduto.getQuantidade() * (-1), compraProduto.getProduto(), compraProduto.getCompra().getLoja());
458
                                        compraProdutoService.excluir(compraProduto);
459
                                }
460
                                compraService.excluir(compra);
461
                                LancadorMensagem.lancarSucesso("Compra excluída com sucesso!");
462
                        }
463
                });
464
        }
465
 
466
        public void ativar(final Compra compra) {
467
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
468
                        public void execute() {
469
                                compra.setIndicadorAtivo(true);
470
                                compraService.alterar(compra);
471
                                LancadorMensagem.lancarSucesso("Compra ativada com sucesso!");
472
                        }
473
                });
474
        }
475
 
476
        public void uploadArquivoXml(final FileUploadEvent e) {
477
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
478
                        public void execute() {
140 espaco 479
                                NotaFiscal notaFiscal = notaFiscalService.importarXml(e.getFile(), getEntidade().getFornecedor());
126 espaco 480
                                preencherNotaFiscalImportada(notaFiscal);
481
                        }
482
                });
483
    }
484
 
485
        public void importarArquivoXmlImportado() {
486
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
487
                        public void execute() {
140 espaco 488
                                NotaFiscal notaFiscal = notaFiscalService.importarXml(getEntidade().getNotaFiscal().getTextoXml(), getEntidade().getFornecedor());
126 espaco 489
                                preencherNotaFiscalImportada(notaFiscal);
490
                        }
491
                });
492
        }
493
 
494
        private void preencherNotaFiscalImportada(final NotaFiscal notaFiscal) {
495
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
496
                        public void execute() {
106 espaco 497
                                setNotaFiscalImportada(notaFiscal);
498
                                if (VerificadorUtil.estaNulo(getEntidade().getConta())) {
499
                                        setCadastrarParcelasImportadas(true);
500
                                } else {
501
                                        setCadastrarParcelasImportadas(false);
502
                                }
503
                                adicionandoParametroArgsConfirmandoAcao(true);
504
                        }
505
                });
126 espaco 506
        }
106 espaco 507
 
508
        public void confirmarImportacaoXml() {
509
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
510
                        public void execute() {
511
                                NotaFiscal notaFiscalImportado = notaFiscalService.consultarPelaChaveEeTipo(getNotaFiscalImportada().getChave(), TipoNotaFiscal.NFE_RECEBIDA.getValor());
512
                                if (VerificadorUtil.naoEstaNulo(notaFiscalImportado)) {
513
                                        getEntidade().setNotaFiscal(notaFiscalImportado);
514
                                } else {
515
                                        notaFiscalService.alterar(getNotaFiscalImportada());
516
                                        getEntidade().setNotaFiscal(notaFiscalService.consultarPelaChaveEeTipo(getNotaFiscalImportada().getChave(), TipoNotaFiscal.NFE_RECEBIDA.getValor()));
517
                                }
518
                                if (getCadastrarParcelasImportadas()) {
519
                                        compraService.adicionarParcelasNaCompra(getEntidade(), getNotaFiscalImportada().getListaParcelas());
520
                                }
521
                                compraProdutoService.adicionarProdutosImportados(getEntidade(), getNotaFiscalImportada().getListaCompraProduto(),
522
                                                getTipoProdutoImportacao(), getTributacaoImportacao(), getModeloProdutoImportacao(), getTipoProdutoEstilo());
523
                                compraService.alterar(getEntidade());
524
                                prepararProdutosDaCompra(getEntidade());
525
                                setNotaFiscalImportada(null);
526
                                LancadorMensagem.lancarSucesso("Nota fiscal importada com sucesso.");
527
                        }
528
                });
529
        }
530
 
531
        public void cancelarImportacaoXml() {
532
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
533
                        public void execute() {
534
                                setNotaFiscalImportada(null);
535
                                LancadorMensagem.lancarSucesso("Importação da nota fiscal cancelada com sucesso.");
536
                        }
537
                });
538
        }
539
 
540
        public void zerarQuantidade() {
541
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
542
                        public void execute() {
543
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
544
                                        compraProdutoNotaFiscal.setQuantidade(0);
545
                                }
546
                                LancadorMensagem.lancarSucesso("Itens zerados com sucesso.");
547
                        }
548
                });
549
        }
550
 
551
        public void alterarParaSolicitarContagem() {
552
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
553
                        public void execute() {
554
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
555
                                        compraProdutoNotaFiscal.setIndicadorSolicitarContagem(true);
556
                                }
557
                                LancadorMensagem.lancarSucesso("Itens com solicitação de contagem ativada.");
558
                        }
559
                });
560
        }
561
 
562
        public void removerProdutosJaExistentes() {
563
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
564
                        public void execute() {
565
                                List<CompraProduto> listaProdutosNovos = new ArrayList<CompraProduto>();
566
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
567
                                        if (VerificadorUtil.estaNulo(compraProdutoNotaFiscal.getProduto().getSequencial())) {
568
                                                listaProdutosNovos.add(compraProdutoNotaFiscal);
569
                                        }
570
                                }
571
                                getNotaFiscalImportada().setListaCompraProduto(listaProdutosNovos);
572
                                LancadorMensagem.lancarSucesso("Produtos já cadastrados retirados com sucesso.");
573
                        }
574
                });
575
        }
576
 
577
        public void removerProdutosJaIncluidosNaCompra() {
578
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
579
                        public void execute() {
580
                                List<CompraProduto> listaProdutosNaoIncluidos = new ArrayList<CompraProduto>();
581
                                for (CompraProduto compraProdutoNotaFiscal : getNotaFiscalImportada().getListaCompraProduto()) {
582
                                        Boolean produtoIncluido = false;
583
                                        for (CompraProduto compraProdutoIncluido : getListaCompraProdutos()) {
584
                                                if (VerificadorUtil.estaNulo(compraProdutoNotaFiscal.getProduto().getCodigo())) {
585
                                                        break;
586
                                                }
587
                                                if (compraProdutoNotaFiscal.getProduto().getCodigo().equals(compraProdutoIncluido.getProduto().getCodigo())) {
588
                                                        produtoIncluido = true;
589
                                                        break;
590
                                                }
591
                                        }
592
                                        if (!produtoIncluido) {
593
                                                listaProdutosNaoIncluidos.add(compraProdutoNotaFiscal);
594
                                        }
595
                                }
596
 
597
                                getNotaFiscalImportada().setListaCompraProduto(listaProdutosNaoIncluidos);
598
                                LancadorMensagem.lancarSucesso("Produtos já incluídos retirados com sucesso.");
599
                        }
600
                });
601
        }
602
 
603
        public void removerTodos() {
604
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
605
                        public void execute() {
606
                                getNotaFiscalImportada().getListaCompraProduto().clear();
607
                                LancadorMensagem.lancarSucesso("Itens removidos com sucesso.");
608
                        }
609
                });
610
        }
611
 
612
        public void removerProdutoImportado(final CompraProduto compraProduto) {
613
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
614
                        public void execute() {
615
                                getNotaFiscalImportada().getListaCompraProduto().remove(compraProduto);
616
                                LancadorMensagem.lancarSucesso("Produto removido com sucesso!");
617
                        }
618
                });
619
        }
620
 
621
        public void localizarProduto(final Produto produtoLocalizado) {
622
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
623
                        public void execute() {
624
                                getNotaFiscalImportada().getListaCompraProduto().remove(getCompraProdutoParaLocalizacao());
625
 
626
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEAN())) {
627
                                        produtoLocalizado.setCodigoEAN(getCompraProdutoParaLocalizacao().getProduto().getCodigoEAN());
628
                                }
629
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEANTributado())) {
630
                                        produtoLocalizado.setCodigoEANTributado(getCompraProdutoParaLocalizacao().getProduto().getCodigoEANTributado());
631
                                }
632
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoNCM())) {
633
                                        produtoLocalizado.setCodigoNCM(getCompraProdutoParaLocalizacao().getProduto().getCodigoNCM());
634
                                }
635
                                if (VerificadorUtil.naoEstaNuloOuVazio(getCompraProdutoParaLocalizacao().getProduto().getCodigoEST())) {
636
                                        produtoLocalizado.setCodigoEST(getCompraProdutoParaLocalizacao().getProduto().getCodigoEST());
637
                                }
638
                                getCompraProdutoParaLocalizacao().setProduto(produtoLocalizado);
639
                                getCompraProdutoParaLocalizacao().setValorCompra(produtoLocalizado.getValorCompra());
640
                                getNotaFiscalImportada().getListaCompraProduto().add(getCompraProdutoParaLocalizacao());
641
                                LancadorMensagem.lancarSucesso("Produto localizado com sucesso!");
642
                        }
643
                });
644
        }
645
 
646
        private String recuperarTexto(String contemLinha, byte[] arquivo) {
647
                try {
648
                        String[] linhas = PdfUtil.extrairPDFEmLinhas(arquivo);
649
                        boolean capturar = false;
650
                        for (String linha : linhas) {
651
                                if (capturar) {
652
                                        return linha.trim();
653
                                }
654
                                if (linha.contains(contemLinha)) {
655
                                        capturar = true;
656
                                }
657
                        }
658
                } catch (IOException e) {
659
                        e.printStackTrace();
660
                }
661
                return "";
662
        }
663
 
664
        public List<Fornecedor> consultarFornecedorPorNomeOuCnpj(String campo) {
665
                return fornecedorService.consultarFornecedorPorNomeOuCnpj(campo);
666
        }
667
 
668
}