Subversion Repositories Integrator Subversion

Rev

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