Subversion Repositories Integrator Subversion

Rev

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

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