Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.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;
195 espaco 14
import br.com.ec.core.exception.NegocioException;
15
import br.com.ec.core.generic.GenericService;
16
import br.com.ec.core.util.DataUtils;
17
import br.com.ec.core.util.VerificadorUtil;
106 espaco 18
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
19
import br.com.ec.domain.dto.ProdutoHistoricoDTO;
20
import br.com.ec.domain.dto.ProdutoHistoricoDetalhesDTO;
21
import br.com.ec.domain.model.EstoqueAuditoria;
22
import br.com.ec.domain.model.FornecedorProduto;
23
import br.com.ec.domain.model.Loja;
24
import br.com.ec.domain.model.Modelo;
25
import br.com.ec.domain.model.Produto;
26
import br.com.ec.domain.model.ProdutoLoja;
27
import br.com.ec.domain.model.ProdutoRelacionado;
28
import br.com.ec.domain.model.Usuario;
29
import br.com.ec.domain.model.tipos.TipoCorProduto;
30
import br.com.ec.domain.model.tipos.TipoEstiloProduto;
31
import br.com.ec.domain.model.tipos.TipoGenero;
32
import br.com.ec.domain.model.tipos.TipoGeneroProduto;
33
import br.com.ec.domain.model.tipos.TipoProduto;
34
import br.com.ec.domain.model.tipos.TipoProdutoAtendimentos;
35
import br.com.ec.domain.model.tipos.TipoProdutoCapas;
36
import br.com.ec.domain.model.tipos.TipoProdutoRemedios;
37
import br.com.ec.domain.service.fornecedorproduto.FornecedorProdutoService;
38
import br.com.ec.domain.service.perfil.PerfilService;
39
import br.com.ec.domain.service.produto.ProdutoService;
40
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
41
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
42
import br.com.ec.domain.service.usuario.UsuarioService;
43
import br.com.ec.domain.shared.ConstantesSEC;
195 espaco 44
import br.com.ec.web.exception.VerificadorLancamentoException;
45
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
46
import br.com.ec.web.generic.AbstractBean;
47
import br.com.ec.web.message.LancadorMensagem;
48
import br.com.ec.web.util.TipoOperacao;
106 espaco 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);
404 espaco 338
                                produtoService.lancarAvarias(estoqueAuditoria, loja, estoqueAuditoria.getProduto(), usuario, quantidadeParaAvaria);
106 espaco 339
                                setSenhaUsuario("");
340
                                LancadorMensagem.lancarSucessoRedirecionandoTela("AVARIA CONFIRMADA COM SUCESSO!", "/sistema/informar_avaria.xhtml?sequencialLoja=" + loja.getSequencial());
341
                        }
342
                });
343
        }
344
 
345
        public void lancarTroca(final EstoqueAuditoria estoqueAuditoria, final Loja loja) {
346
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
347
                        public void execute() {
348
                                Usuario usuario = verificarSenhaUsuario();
349
                                verificarSeTemPerfilVendedorOuSuperior(usuario);
350
                                produtoService.lancarTroca(estoqueAuditoria, loja, estoqueAuditoria.getProduto(), usuario);
351
                                setSenhaUsuario("");
352
                                LancadorMensagem.lancarSucessoRedirecionandoTela("TROCA CONFIRMADA COM SUCESSO!", "/sistema/informar_troca.xhtml?sequencialLoja=" + loja.getSequencial());
353
                        }
354
                });
355
        }
356
 
357
        private Usuario verificarSenhaUsuario() {
358
                return usuarioService.consultarUsuarioPorSenha(getSenhaUsuario());
359
        }
360
 
361
        private void verificarSeTemPerfilVendedorOuSuperior(Usuario usuario) {
362
                if (!perfilService.temPerfilVendedor(usuario) &&
305 espaco 363
                        !perfilService.temPerfilLojistica(usuario) &&
364
                        !perfilService.temPerfilCompras(usuario) &&
106 espaco 365
                        !perfilService.temPerfilRecursosHumanos(usuario)) {
366
                        throw new NegocioException("Sem permissão para esta operação");
367
                }
368
        }
369
 
370
        public void desativarProduto() {
371
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
372
                        public void execute() {
373
                                produtoService.desativarProduto(getEntidade());
374
                                limparEntidade();
375
                                LancadorMensagem.lancarSucesso("PRODUTO DESATIVADO COM SUCESSO!");
376
                        }
377
                });
378
        }
379
 
380
        public void ativarProduto() {
381
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
382
                        public void execute() {
383
                                produtoService.ativarProduto(getEntidade());
384
                                limparEntidade();
385
                                LancadorMensagem.lancarSucesso("PRODUTO ATIVADO COM SUCESSO!");
386
                        }
387
                });
388
        }
389
 
390
        public void alterarEstoque(final Produto produto, final Loja loja) {
391
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
392
                        public void execute() {
393
                                produtoLojaService.alterarEstoque(getQuantidadeEstoque(), produto, loja);
394
                                LancadorMensagem.lancarSucesso("ESTOQUE ALTERADO COM SUCESSO!");
395
                        }
396
                });
397
        }
398
 
399
        public void alterarLocalizacao(final Produto produto, final Loja loja) {
400
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
401
                        public void execute() {
402
                                produtoLojaService.alterarLocalizacao(getLocalizacao(), produto, loja);
403
                                LancadorMensagem.lancarSucesso("LOCALIZAÇÃO ALTERADA COM SUCESSO!");
404
                        }
405
                });
406
        }
407
 
408
        public void adicionarEstoque(final Produto produto, final Loja loja) {
409
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
410
                        public void execute() {
411
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(1, produto, loja);
412
                                LancadorMensagem.lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
413
                        }
414
                });
415
        }
416
 
417
        public void retirarEstoque(final Produto produto, final Loja loja) {
418
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
419
                        public void execute() {
420
                                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(-1, produto, loja);
421
                                LancadorMensagem.lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
422
                        }
423
                });
424
        }
425
 
426
        public Integer quantidadeDias(Date dataInicial) {
427
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), dataInicial);
428
        }
429
 
430
        public void iniciarContagem() {
431
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
432
                        public void execute() {
433
                                setUsuarioParaContagem(usuarioService.consultarUsuarioPorSenha(getSenhaUsuario()));
434
                                setSenhaUsuario("");
435
                        }
436
                });
437
        }
438
 
439
        public void sairContagem() {
440
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
441
                        public void execute() {
442
                                setUsuarioParaContagem(null);
443
                        }
444
                });
445
        }
446
 
447
        public String verificarStatusContagem(Produto produto, Loja loja) {
448
                ProdutoLoja produtoLoja = produtoLojaService.consultarProdutoLoja(produto, loja);
449
                if (VerificadorUtil.naoEstaNulo(produtoLoja)) {
450
                        if (produtoLoja.getIndicadorContagemSolicitada()) {
451
                                return ConstantesSEC.StatusContagem.CONTAGEM_SOLICITADA_STYLE_CLASS;
452
                        }
453
                }
221 espaco 454
                Date dataContagemSolicitada = null;
455
                if (VerificadorUtil.naoEstaNulo(produto.getMarcaDoModelo())) {
456
                        dataContagemSolicitada = produto.getMarcaDoModelo().getDataContagemSolicitada();
457
                }
458
                return UtilBean.statusContagem(consultarDataContagem(produto, loja), dataContagemSolicitada);
106 espaco 459
        }
460
 
461
        public void prepararParaContagem(Produto produto, Loja loja) {
462
                setProdutoLojaSelecionado(produtoLojaService.consultarProdutoLoja(produto, loja));
463
                setQuantidadeEstoque(getProdutoLojaSelecionado().getQuantidadeEstoque());
464
                setLocalizacao(getProdutoLojaSelecionado().getLocalizacao());
465
        }
466
 
467
        public void prepararParaContagemPorCodigo(final Loja loja) {
468
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
469
                        public void execute() {
470
                                Produto produtoConsultado = produtoService.consultarProdutoPorCodigoParaContagem(StringUtils.trim(getCodigoProdutoParaContagem()), loja, getUsuarioParaContagem());
471
                                ((ParametrosConsultaProdutoDTO)parametrosConsulta).setLojaSelecionadaParaContagem(getLojaSelecionada());
472
                                setProdutoLojaSelecionado(produtoLojaService.consultarProdutoLoja(produtoConsultado, loja));
473
                                setQuantidadeEstoque(getProdutoLojaSelecionado().getQuantidadeEstoque());
474
                                setLocalizacao(getProdutoLojaSelecionado().getLocalizacao());
475
                                adicionandoParametroArgsConfirmandoAcao(true);
476
                        }
477
                });
478
        }
479
 
480
        public void realizarContagemDireta() {
481
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
482
                        public void execute() {
483
                                setUsuarioParaContagem(contextoSeguranca.obterUsuario());
484
                                verificarSeTemPerfilVendedorOuSuperior(getUsuarioParaContagem());
485
                                produtoService.realizarContagemDireta(getProdutoLojaSelecionado(), getQuantidadeEstoque(), getLocalizacao(), getUsuarioParaContagem(), false);
486
                                setCodigoProdutoParaContagem("");
487
                                LancadorMensagem.lancarSucesso("CONTAGEM REALIZADA COM SUCESSO! CÓDIGO: " + getProdutoLojaSelecionado().getProduto().getCodigoProdutoPadrao());
488
                        }
489
                });
490
        }
491
 
492
        public void realizarContagem() {
493
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
494
                        public void execute() {
495
                                verificarSeTemPerfilVendedorOuSuperior(getUsuarioParaContagem());
496
                                produtoService.realizarContagem(getProdutoLojaSelecionado(), getQuantidadeEstoque(), getLocalizacao(), getUsuarioParaContagem(), false);
497
                                setCodigoProdutoParaContagem("");
498
                                LancadorMensagem.lancarSucesso("CONTAGEM REALIZADA COM SUCESSO! CÓDIGO: " + getProdutoLojaSelecionado().getProduto().getCodigoProdutoPadrao());
499
                        }
500
                });
501
        }
502
 
503
        public void realizarContagemRedirecionandoTela() {
504
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
505
                        public void execute() {
506
                                verificarSeTemPerfilVendedorOuSuperior(contextoSeguranca.obterUsuario());
507
                                produtoService.realizarContagem(getProdutoLojaSelecionado(), getQuantidadeEstoque(), getLocalizacao(), contextoSeguranca.obterUsuario(), false);
508
                                LancadorMensagem.lancarSucessoRedirecionandoTela("CONTAGEM REALIZADA COM SUCESSO!", "/sistema/contagem/contagem-loja.xhtml?sequencialLoja=" + getProdutoLojaSelecionado().getSequencialDaLoja());
509
                        }
510
                });
511
        }
512
 
513
        public Produto detalharProduto(Produto produto) {
514
                Produto produtoDetalhado = produtoService.detalharProduto(produto);
515
                produtoDetalhado.setDataUltimaVenda(produtoService.dataUltimaVenda(produtoDetalhado));
516
                return produtoDetalhado;
517
        }
518
 
519
        public void consultarHistorico(Produto produto) {
520
                setProdutoSelecionado(produtoService.detalharProduto(produto));
521
                setProdutosHistorico(produtoService.consultarHistorico(getProdutoSelecionado(), 12));
522
        }
523
 
524
        public void detalharHistorico(ProdutoHistoricoDTO produtoHistorico) {
525
                setProdutosHistoricoDetalhes(produtoService.detalharHistorico(produtoHistorico));
526
        }
527
 
528
        public Integer quantidadeProdutosParaRetirarDoOnline(Loja loja) {
529
                return produtoService.quantidadeProdutosParaRetirarDoOnline(loja);
530
        }
531
 
532
        public void prepararNovoFornecedor() {
533
                setFornecedorProdutoParaVinculo(new FornecedorProduto());
534
        }
535
 
536
        public void vincularNovoFornecedor() {
537
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
538
                        public void execute() {
539
                                getFornecedorProdutoParaVinculo().setProduto(getEntidade());
540
                                getEntidade().getFornecedores().add(getFornecedorProdutoParaVinculo());
541
                                setFornecedorProdutoParaVinculo(null);
542
                        }
543
                });
544
        }
545
 
546
        public void excluirVinculo(final FornecedorProduto fornecedorProduto) {
547
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
548
                        public void execute() {
549
                                getEntidade().getFornecedores().remove(fornecedorProduto);
550
                        }
551
                });
552
        }
553
 
554
        public void prepararNovoRelacionado() {
555
                ProdutoRelacionado produtoRelacionado = new ProdutoRelacionado();
556
                produtoRelacionado.setProdutoRelacionado(new Produto());
557
                setProdutoRelacionadoParaVinculo(produtoRelacionado);
558
        }
559
 
560
        public void consultarProdutoRelacionado() {
561
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
562
                        public void execute() {
563
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getProdutoRelacionadoParaVinculo().getProdutoRelacionado().getCodigo());
564
                                if (VerificadorUtil.naoEstaNulo(produtoSelecionado)) {
565
                                        getProdutoRelacionadoParaVinculo().setProdutoRelacionado(produtoSelecionado);
566
                                }
567
                        }
568
                });
569
        }
570
 
571
        public void vincularNovoRelacionado() {
572
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
573
                        public void execute() {
574
                                getProdutoRelacionadoParaVinculo().setProduto(getEntidade());
575
                                getEntidade().getRelacionados().add(getProdutoRelacionadoParaVinculo());
576
                                setProdutoRelacionadoParaVinculo(null);
577
                        }
578
                });
579
        }
580
 
581
        public void excluirRelacionado(final ProdutoRelacionado produtoRelacionado) {
582
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
583
                        public void execute() {
584
                                getEntidade().getRelacionados().remove(produtoRelacionado);
585
                                getEntidade().getRelacionadosReverse().remove(produtoRelacionado);
586
                        }
587
                });
588
        }
589
 
590
        public void recuperarUltimoCadastro() {
591
                getUltimoProdutoCadastrado().setSequencial(null);
592
                setEntidade(getUltimoProdutoCadastrado());
593
        }
594
 
595
        public void duplicarProduto() {
596
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
597
                        public void execute() {
598
                                if (VerificadorUtil.estaNuloOuVazio(getCodigoProdutoParaDuplicar())) {
599
                                        LancadorMensagem.lancarErro("INFORMAR CÓDIGO DO PRODUTO");
600
                                } else {
601
                                        Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProdutoParaDuplicar());
602
                                        if (produtoSelecionado.getCodigo().equals("000000")) {
603
                                                LancadorMensagem.lancarErro("PRODUTO NÃO ENCONTRADO");
604
                                        } else {
605
                                                getEntidade().prepararDadosParaDuplicacao(produtoSelecionado);
606
                                                getEntidade().setDataOnline(null);
607
                                                getEntidade().setDataOnlineShoplog(null);
608
                                                getEntidade().setIndicadorOnline(null);
609
                                                getEntidade().setIndicadorOnlineShoplog(null);
610
                                                LancadorMensagem.lancarSucesso("OPERAÇÃO REALIZADA COM SUCESSO");
611
                                        }
612
                                }
613
                        }
614
                });
615
        }
616
 
617
}