Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

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