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.Serializable;
4
import java.util.Date;
5
import java.util.List;
6
 
7
import javax.inject.Inject;
8
import javax.inject.Named;
9
 
10
import org.apache.commons.lang.StringUtils;
11
import org.springframework.context.annotation.Scope;
12
 
13
import br.com.ec.controller.util.UtilBean;
14
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
15
import br.com.ec.domain.dto.ProdutoHistoricoDTO;
16
import br.com.ec.domain.dto.ProdutoHistoricoDetalhesDTO;
17
import br.com.ec.domain.model.EstoqueAuditoria;
18
import br.com.ec.domain.model.FornecedorProduto;
19
import br.com.ec.domain.model.Loja;
20
import br.com.ec.domain.model.Modelo;
21
import br.com.ec.domain.model.Produto;
22
import br.com.ec.domain.model.ProdutoLoja;
23
import br.com.ec.domain.model.ProdutoRelacionado;
24
import br.com.ec.domain.model.Usuario;
25
import br.com.ec.domain.model.tipos.TipoCorProduto;
26
import br.com.ec.domain.model.tipos.TipoEstiloProduto;
27
import br.com.ec.domain.model.tipos.TipoGenero;
28
import br.com.ec.domain.model.tipos.TipoGeneroProduto;
29
import br.com.ec.domain.model.tipos.TipoProduto;
30
import br.com.ec.domain.model.tipos.TipoProdutoAtendimentos;
31
import br.com.ec.domain.model.tipos.TipoProdutoCapas;
32
import br.com.ec.domain.model.tipos.TipoProdutoRemedios;
33
import br.com.ec.domain.service.fornecedorproduto.FornecedorProdutoService;
34
import br.com.ec.domain.service.perfil.PerfilService;
35
import br.com.ec.domain.service.produto.ProdutoService;
36
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
37
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
38
import br.com.ec.domain.service.usuario.UsuarioService;
39
import br.com.ec.domain.shared.ConstantesSEC;
40
import br.edu.cesmac.core.exception.NegocioException;
41
import br.edu.cesmac.core.generic.GenericService;
42
import br.edu.cesmac.core.util.DataUtils;
43
import br.edu.cesmac.core.util.VerificadorUtil;
44
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
45
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandBean;
46
import br.edu.cesmac.web.generic.AbstractBean;
47
import br.edu.cesmac.web.message.LancadorMensagem;
48
import br.edu.cesmac.web.util.TipoOperacao;
49
 
50
@Named
51
@Scope("view")
52
public class ProdutoBean extends AbstractBean<Produto> implements Serializable {
53
 
54
        private static final long serialVersionUID = 1L;
55
 
56
        private ProdutoService produtoService;
57
        private ProdutoLojaService produtoLojaService;
58
        private UsuarioService usuarioService;
59
        private PerfilService perfilService;
60
 
61
        private ContextoSeguranca contextoSeguranca;
62
 
63
        private Produto produtoSelecionado;
64
        private String senhaUsuario;
65
        private Loja lojaSelecionada;
66
        private Integer quantidadeEstoque;
67
        private String localizacao;
68
        private String codigoProdutoParaContagem;
69
        private ProdutoLoja produtoLojaSelecionado;
70
        private FornecedorProduto fornecedorProdutoParaVinculo;
71
        private ProdutoRelacionado produtoRelacionadoParaVinculo;
72
        private List<ProdutoHistoricoDTO> produtosHistorico;
73
        private List<ProdutoHistoricoDetalhesDTO> produtosHistoricoDetalhes;
74
 
75
        private Produto ultimoProdutoCadastrado;
76
        private String codigoProdutoParaDuplicar;
77
 
78
        private Usuario usuarioParaContagem;
79
 
80
        @Inject
81
        public ProdutoBean(ProdutoService produtoService, ProdutoLojaService produtoLojaService, UsuarioService usuarioService,
82
                        PerfilService perfilService, FornecedorProdutoService fornecedorProdutoService, ContextoSeguranca contextoSeguranca) {
83
                this.produtoService = produtoService;
84
                this.produtoLojaService = produtoLojaService;
85
                this.usuarioService = usuarioService;
86
                this.perfilService = perfilService;
87
                this.contextoSeguranca = contextoSeguranca;
88
        }
89
 
90
        @Override
91
        public void preCarregamento() {
92
                entidade = new Produto();
93
                parametrosConsulta = new ParametrosConsultaProdutoDTO();
94
                parametrosConsulta.setEntidade(entidade);
95
        }
96
 
97
        @Override
98
        public void limparEntidade() {
99
                setEntidade(new Produto());
100
                setCodigoProdutoParaDuplicar(null);
101
        }
102
 
103
        @Override
104
        public GenericService<Produto> getService() {
105
                return produtoService;
106
        }
107
 
108
        @Override
109
        public Produto getEntidade() {
110
                return entidade;
111
        }
112
 
113
        @Override
114
        public Produto getId() {
115
                return getEntidade();
116
        }
117
 
118
        @Override
119
        public void preConsultar() {
120
                setTipoOperacao(TipoOperacao.CONSULTAR);
121
        }
122
 
123
        @Override
124
        public void preCadastrar() {
125
                super.preCadastrar();
126
                prepararNovoProduto();
127
        }
128
 
129
        @Override
130
        public void preAlterar(Produto produto) {
131
                Produto produtoConsultado = produtoService.detalharProduto(produto);
132
                super.preAlterar(produtoConsultado);
133
        }
134
 
135
        public Produto getProdutoSelecionado() {
136
                return produtoSelecionado;
137
        }
138
        public void setProdutoSelecionado(Produto produtoSelecionado) {
139
                this.produtoSelecionado = produtoSelecionado;
140
        }
141
 
142
        public String getSenhaUsuario() {
143
                return senhaUsuario;
144
        }
145
        public void setSenhaUsuario(String senhaUsuario) {
146
                this.senhaUsuario = senhaUsuario;
147
        }
148
 
149
        public Loja getLojaSelecionada() {
150
                return lojaSelecionada;
151
        }
152
        public void setLojaSelecionada(Loja lojaSelecionada) {
153
                this.lojaSelecionada = lojaSelecionada;
154
        }
155
 
156
        public Integer getQuantidadeEstoque() {
157
                return quantidadeEstoque;
158
        }
159
        public void setQuantidadeEstoque(Integer quantidadeEstoque) {
160
                this.quantidadeEstoque = quantidadeEstoque;
161
        }
162
 
163
        public String getLocalizacao() {
164
                return localizacao;
165
        }
166
        public void setLocalizacao(String localizacao) {
167
                this.localizacao = localizacao;
168
        }
169
 
170
        public String getCodigoProdutoParaContagem() {
171
                return codigoProdutoParaContagem;
172
        }
173
        public void setCodigoProdutoParaContagem(String codigoProdutoParaContagem) {
174
                this.codigoProdutoParaContagem = codigoProdutoParaContagem;
175
        }
176
 
177
        public ProdutoLoja getProdutoLojaSelecionado() {
178
                return produtoLojaSelecionado;
179
        }
180
        public void setProdutoLojaSelecionado(ProdutoLoja produtoLojaSelecionado) {
181
                this.produtoLojaSelecionado = produtoLojaSelecionado;
182
        }
183
 
184
        public FornecedorProduto getFornecedorProdutoParaVinculo() {
185
                return fornecedorProdutoParaVinculo;
186
        }
187
        public void setFornecedorProdutoParaVinculo(FornecedorProduto fornecedorProdutoParaVinculo) {
188
                this.fornecedorProdutoParaVinculo = fornecedorProdutoParaVinculo;
189
        }
190
 
191
        public ProdutoRelacionado getProdutoRelacionadoParaVinculo() {
192
                return produtoRelacionadoParaVinculo;
193
        }
194
        public void setProdutoRelacionadoParaVinculo(ProdutoRelacionado produtoRelacionadoParaVinculo) {
195
                this.produtoRelacionadoParaVinculo = produtoRelacionadoParaVinculo;
196
        }
197
 
198
        public List<ProdutoHistoricoDTO> getProdutosHistorico() {
199
                return produtosHistorico;
200
        }
201
        public void setProdutosHistorico(List<ProdutoHistoricoDTO> produtosHistorico) {
202
                this.produtosHistorico = produtosHistorico;
203
        }
204
 
205
        public List<ProdutoHistoricoDetalhesDTO> getProdutosHistoricoDetalhes() {
206
                return produtosHistoricoDetalhes;
207
        }
208
        public void setProdutosHistoricoDetalhes(List<ProdutoHistoricoDetalhesDTO> produtosHistoricoDetalhes) {
209
                this.produtosHistoricoDetalhes = produtosHistoricoDetalhes;
210
        }
211
 
212
        public Produto getUltimoProdutoCadastrado() {
213
                return ultimoProdutoCadastrado;
214
        }
215
        public void setUltimoProdutoCadastrado(Produto ultimoProdutoCadastrado) {
216
                this.ultimoProdutoCadastrado = ultimoProdutoCadastrado;
217
        }
218
 
219
        public String getCodigoProdutoParaDuplicar() {
220
                return codigoProdutoParaDuplicar;
221
        }
222
        public void setCodigoProdutoParaDuplicar(String codigoProdutoParaDuplicar) {
223
                this.codigoProdutoParaDuplicar = codigoProdutoParaDuplicar;
224
        }
225
 
226
        public Usuario getUsuarioParaContagem() {
227
                return usuarioParaContagem;
228
        }
229
        public void setUsuarioParaContagem(Usuario usuarioParaContagem) {
230
                this.usuarioParaContagem = usuarioParaContagem;
231
        }
232
 
233
        /***************************************************************/
234
 
235
        public List<Produto> getConsultarTodas() {
236
                return produtoService.consultarTodos(new Produto());
237
        }
238
 
239
        public Integer consultarEstoque(Produto produto) {
240
                return produtoLojaService.consultarEstoqueProduto(produto);
241
        }
242
 
243
        public Integer consultarEstoquePorModelo(Modelo modelo) {
244
                return consultarEstoquePorModeloEeTipo(modelo, null);
245
        }
246
 
247
        public Integer consultarEstoquePorModeloEeTipo(Modelo modelo, String tipoProduto) {
248
                return produtoLojaService.consultarEstoqueModeloEeLoja(modelo, null, null, tipoProduto, null, null);
249
        }
250
 
251
        public Integer consultarEstoque(Produto produto, Long sequencialLoja) {
252
                return produtoLojaService.consultarEstoqueProdutoEeLoja(produto, new Loja(sequencialLoja));
253
        }
254
 
255
        public Integer consultarEstoquePorModeloEeLoja(Long sequencialModelo, Long sequencialLoja, String descricaoProduto, String tipoProduto, String genero, String tipoEstilo) {
256
                Modelo modelo = new Modelo();
257
                modelo.setSequencial(sequencialModelo);
258
                return produtoLojaService.consultarEstoqueModeloEeLoja(modelo, sequencialLoja, descricaoProduto, tipoProduto, tipoEstilo, genero);
259
        }
260
 
261
        public Date consultarDataContagem(Produto produto, Loja loja) {
262
                return produtoLojaService.consultarDataContagem(produto, loja);
263
        }
264
 
265
        public ProdutoLoja consultarProdutoLoja(Produto produto, Long sequencialLoja) {
266
                return produtoLojaService.consultarProdutoLoja(produto, new Loja(sequencialLoja));
267
        }
268
 
269
        public TipoProduto[] getTiposProduto() {
270
                return TipoProduto.values();
271
        }
272
 
273
        public TipoProdutoCapas[] getTiposProdutoCapas() {
274
                return TipoProdutoCapas.values();
275
        }
276
 
277
        public TipoProdutoRemedios[] getTiposProdutoRemedios() {
278
                return TipoProdutoRemedios.values();
279
        }
280
 
281
        public TipoProdutoAtendimentos[] getTiposProdutoAtendimentos() {
282
                return TipoProdutoAtendimentos.values();
283
        }
284
 
285
        public TipoGenero[] getTiposGenero() {
286
                return TipoGenero.values();
287
        }
288
 
289
        public TipoEstiloProduto[] getTiposEstilo() {
290
                return TipoEstiloProduto.values();
291
        }
292
 
293
        public TipoCorProduto[] getTiposCor() {
294
                return TipoCorProduto.values();
295
        }
296
 
297
        public TipoGeneroProduto[] getTiposGeneroProduto() {
298
                return TipoGeneroProduto.values();
299
        }
300
 
301
        public void prepararNovoProduto() {
302
                limparEntidade();
303
                getEntidade().prepararNovoProduto();
304
        }
305
 
306
        @Override
307
        public void cadastrar() {
308
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
309
                        public void execute() {
310
                                modificarEntidadeAntesDaOperacao();
311
                                getService().cadastrar(entidade);
312
                                String codigoProdutoCadastro = entidade.getCodigoProdutoPadrao();
313
                                setUltimoProdutoCadastrado(entidade);
314
                                limparEntidade();
315
                                modificarEntidadeDepoisDaOperacao();
316
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO) + " CÓDIGO GERADO: " + codigoProdutoCadastro);
317
                        }
318
                });
319
        }
320
 
321
        public void lancarAvaria(final EstoqueAuditoria estoqueAuditoria, final Loja loja) {
322
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
323
                        public void execute() {
324
                                Usuario usuario = verificarSenhaUsuario();
325
                                verificarSeTemPerfilVendedorOuSuperior(usuario);
326
                                produtoService.lancarAvaria(estoqueAuditoria, loja, estoqueAuditoria.getProduto(), usuario);
327
                                setSenhaUsuario("");
328
                                LancadorMensagem.lancarSucessoRedirecionandoTela("AVARIA CONFIRMADA COM SUCESSO!", "/sistema/informar_avaria.xhtml?sequencialLoja=" + loja.getSequencial());
329
                        }
330
                });
331
        }
332
 
333
        public void lancarAvaria(final EstoqueAuditoria estoqueAuditoria, final Loja loja, final Integer quantidadeParaAvaria) {
334
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
335
                        public void execute() {
336
                                Usuario usuario = verificarSenhaUsuario();
337
                                verificarSeTemPerfilVendedorOuSuperior(usuario);
338
                                for (int i = 0; i < quantidadeParaAvaria; i++) {
339
                                        produtoService.lancarAvaria(estoqueAuditoria, loja, estoqueAuditoria.getProduto(), usuario);
340
                                }
341
                                setSenhaUsuario("");
342
                                LancadorMensagem.lancarSucessoRedirecionandoTela("AVARIA CONFIRMADA COM SUCESSO!", "/sistema/informar_avaria.xhtml?sequencialLoja=" + loja.getSequencial());
343
                        }
344
                });
345
        }
346
 
347
        public void lancarTroca(final EstoqueAuditoria estoqueAuditoria, final Loja loja) {
348
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
349
                        public void execute() {
350
                                Usuario usuario = verificarSenhaUsuario();
351
                                verificarSeTemPerfilVendedorOuSuperior(usuario);
352
                                produtoService.lancarTroca(estoqueAuditoria, loja, estoqueAuditoria.getProduto(), usuario);
353
                                setSenhaUsuario("");
354
                                LancadorMensagem.lancarSucessoRedirecionandoTela("TROCA CONFIRMADA COM SUCESSO!", "/sistema/informar_troca.xhtml?sequencialLoja=" + loja.getSequencial());
355
                        }
356
                });
357
        }
358
 
359
        private Usuario verificarSenhaUsuario() {
360
                return usuarioService.consultarUsuarioPorSenha(getSenhaUsuario());
361
        }
362
 
363
        private void verificarSeTemPerfilVendedorOuSuperior(Usuario usuario) {
364
                if (!perfilService.temPerfilVendedor(usuario)) {
365
                        throw new NegocioException("Sem permissão para esta operação");
366
                }
367
        }
368
 
369
        public void desativarProduto() {
370
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
371
                        public void execute() {
372
                                produtoService.desativarProduto(getEntidade());
373
                                limparEntidade();
374
                                LancadorMensagem.lancarSucesso("PRODUTO DESATIVADO COM SUCESSO!");
375
                        }
376
                });
377
        }
378
 
379
        public void ativarProduto() {
380
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
381
                        public void execute() {
382
                                produtoService.ativarProduto(getEntidade());
383
                                limparEntidade();
384
                                LancadorMensagem.lancarSucesso("PRODUTO ATIVADO COM SUCESSO!");
385
                        }
386
                });
387
        }
388
 
389
        public void alterarEstoque(final Produto produto, final Loja loja) {
390
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
391
                        public void execute() {
392
                                produtoLojaService.alterarEstoque(getQuantidadeEstoque(), produto, loja);
393
                                LancadorMensagem.lancarSucesso("ESTOQUE ALTERADO COM SUCESSO!");
394
                        }
395
                });
396
        }
397
 
398
        public void alterarLocalizacao(final Produto produto, final Loja loja) {
399
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
400
                        public void execute() {
401
                                produtoLojaService.alterarLocalizacao(getLocalizacao(), produto, loja);
402
                                LancadorMensagem.lancarSucesso("LOCALIZAÇÃO ALTERADA COM SUCESSO!");
403
                        }
404
                });
405
        }
406
 
407
        public void adicionarEstoque(final Produto produto, final Loja loja) {
408
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
409
                        public void execute() {
410
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(1, produto, loja);
411
                                LancadorMensagem.lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
412
                        }
413
                });
414
        }
415
 
416
        public void retirarEstoque(final Produto produto, final Loja loja) {
417
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
418
                        public void execute() {
419
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(-1, produto, loja);
420
                                LancadorMensagem.lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
421
                        }
422
                });
423
        }
424
 
425
        public Integer quantidadeDias(Date dataInicial) {
426
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), dataInicial);
427
        }
428
 
429
        public void iniciarContagem() {
430
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
431
                        public void execute() {
432
                                setUsuarioParaContagem(usuarioService.consultarUsuarioPorSenha(getSenhaUsuario()));
433
                                setSenhaUsuario("");
434
                        }
435
                });
436
        }
437
 
438
        public void sairContagem() {
439
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
440
                        public void execute() {
441
                                setUsuarioParaContagem(null);
442
                        }
443
                });
444
        }
445
 
446
        public String verificarStatusContagem(Produto produto, Loja loja) {
447
                ProdutoLoja produtoLoja = produtoLojaService.consultarProdutoLoja(produto, loja);
448
                if (VerificadorUtil.naoEstaNulo(produtoLoja)) {
449
                        if (produtoLoja.getIndicadorContagemSolicitada()) {
450
                                return ConstantesSEC.StatusContagem.CONTAGEM_SOLICITADA_STYLE_CLASS;
451
                        }
452
                }
453
                return UtilBean.statusContagem(consultarDataContagem(produto, loja));
454
        }
455
 
456
        public String statusContagem(Date dataVerificar) {
457
                return UtilBean.statusContagem(dataVerificar);
458
        }
459
 
460
        public void prepararParaContagem(Produto produto, Loja loja) {
461
                setProdutoLojaSelecionado(produtoLojaService.consultarProdutoLoja(produto, loja));
462
                setQuantidadeEstoque(getProdutoLojaSelecionado().getQuantidadeEstoque());
463
                setLocalizacao(getProdutoLojaSelecionado().getLocalizacao());
464
        }
465
 
466
        public void prepararParaContagemPorCodigo(final Loja loja) {
467
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
468
                        public void execute() {
469
                                Produto produtoConsultado = produtoService.consultarProdutoPorCodigoParaContagem(StringUtils.trim(getCodigoProdutoParaContagem()), loja);
470
                                ((ParametrosConsultaProdutoDTO)parametrosConsulta).setLojaSelecionadaParaContagem(getLojaSelecionada());
471
                                setProdutoLojaSelecionado(produtoLojaService.consultarProdutoLoja(produtoConsultado, loja));
472
                                setQuantidadeEstoque(getProdutoLojaSelecionado().getQuantidadeEstoque());
473
                                setLocalizacao(getProdutoLojaSelecionado().getLocalizacao());
474
                                adicionandoParametroArgsConfirmandoAcao(true);
475
                        }
476
                });
477
        }
478
 
479
        public void realizarContagem() {
480
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
481
                        public void execute() {
482
                                verificarSeTemPerfilVendedorOuSuperior(getUsuarioParaContagem());
483
                                produtoService.realizarContagem(getProdutoLojaSelecionado(), getQuantidadeEstoque(), getLocalizacao(), getUsuarioParaContagem(), false);
484
                                setCodigoProdutoParaContagem("");
485
                                LancadorMensagem.lancarSucesso("CONTAGEM REALIZADA COM SUCESSO! CÓDIGO: " + getProdutoLojaSelecionado().getProduto().getCodigoProdutoPadrao());
486
                        }
487
                });
488
        }
489
 
490
        public void realizarContagemRedirecionandoTela() {
491
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
492
                        public void execute() {
493
                                verificarSeTemPerfilVendedorOuSuperior(contextoSeguranca.obterUsuario());
494
                                produtoService.realizarContagem(getProdutoLojaSelecionado(), getQuantidadeEstoque(), getLocalizacao(), contextoSeguranca.obterUsuario(), false);
495
                                LancadorMensagem.lancarSucessoRedirecionandoTela("CONTAGEM REALIZADA COM SUCESSO!", "/sistema/contagem/contagem-loja.xhtml?sequencialLoja=" + getProdutoLojaSelecionado().getSequencialDaLoja());
496
                        }
497
                });
498
        }
499
 
500
        public Produto detalharProduto(Produto produto) {
501
                Produto produtoDetalhado = produtoService.detalharProduto(produto);
502
                produtoDetalhado.setDataUltimaVenda(produtoService.dataUltimaVenda(produtoDetalhado));
503
                return produtoDetalhado;
504
        }
505
 
506
        public void consultarHistorico(Produto produto) {
507
                setProdutoSelecionado(produtoService.detalharProduto(produto));
508
                setProdutosHistorico(produtoService.consultarHistorico(getProdutoSelecionado(), 12));
509
        }
510
 
511
        public void detalharHistorico(ProdutoHistoricoDTO produtoHistorico) {
512
                setProdutosHistoricoDetalhes(produtoService.detalharHistorico(produtoHistorico));
513
        }
514
 
515
        public Integer quantidadeProdutosParaRetirarDoOnline(Loja loja) {
516
                return produtoService.quantidadeProdutosParaRetirarDoOnline(loja);
517
        }
518
 
519
        public void prepararNovoFornecedor() {
520
                setFornecedorProdutoParaVinculo(new FornecedorProduto());
521
        }
522
 
523
        public void vincularNovoFornecedor() {
524
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
525
                        public void execute() {
526
                                getFornecedorProdutoParaVinculo().setProduto(getEntidade());
527
                                getEntidade().getFornecedores().add(getFornecedorProdutoParaVinculo());
528
                                setFornecedorProdutoParaVinculo(null);
529
                        }
530
                });
531
        }
532
 
533
        public void excluirVinculo(final FornecedorProduto fornecedorProduto) {
534
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
535
                        public void execute() {
536
                                getEntidade().getFornecedores().remove(fornecedorProduto);
537
                        }
538
                });
539
        }
540
 
541
        public void prepararNovoRelacionado() {
542
                ProdutoRelacionado produtoRelacionado = new ProdutoRelacionado();
543
                produtoRelacionado.setProdutoRelacionado(new Produto());
544
                setProdutoRelacionadoParaVinculo(produtoRelacionado);
545
        }
546
 
547
        public void consultarProdutoRelacionado() {
548
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
549
                        public void execute() {
550
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getProdutoRelacionadoParaVinculo().getProdutoRelacionado().getCodigo());
551
                                if (VerificadorUtil.naoEstaNulo(produtoSelecionado)) {
552
                                        getProdutoRelacionadoParaVinculo().setProdutoRelacionado(produtoSelecionado);
553
                                }
554
                        }
555
                });
556
        }
557
 
558
        public void vincularNovoRelacionado() {
559
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
560
                        public void execute() {
561
                                getProdutoRelacionadoParaVinculo().setProduto(getEntidade());
562
                                getEntidade().getRelacionados().add(getProdutoRelacionadoParaVinculo());
563
                                setProdutoRelacionadoParaVinculo(null);
564
                        }
565
                });
566
        }
567
 
568
        public void excluirRelacionado(final ProdutoRelacionado produtoRelacionado) {
569
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
570
                        public void execute() {
571
                                getEntidade().getRelacionados().remove(produtoRelacionado);
572
                                getEntidade().getRelacionadosReverse().remove(produtoRelacionado);
573
                        }
574
                });
575
        }
576
 
577
        public void recuperarUltimoCadastro() {
578
                getUltimoProdutoCadastrado().setSequencial(null);
579
                setEntidade(getUltimoProdutoCadastrado());
580
        }
581
 
582
        public void duplicarProduto() {
583
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
584
                        public void execute() {
585
                                if (VerificadorUtil.estaNuloOuVazio(getCodigoProdutoParaDuplicar())) {
586
                                        LancadorMensagem.lancarErro("INFORMAR CÓDIGO DO PRODUTO");
587
                                } else {
588
                                        Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProdutoParaDuplicar());
589
                                        if (produtoSelecionado.getCodigo().equals("000000")) {
590
                                                LancadorMensagem.lancarErro("PRODUTO NÃO ENCONTRADO");
591
                                        } else {
592
                                                getEntidade().prepararDadosParaDuplicacao(produtoSelecionado);
593
                                                LancadorMensagem.lancarSucesso("OPERAÇÃO REALIZADA COM SUCESSO");
594
                                        }
595
                                }
596
                        }
597
                });
598
        }
599
 
600
}