Subversion Repositories Integrator Subversion

Rev

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