Subversion Repositories Integrator Subversion

Rev

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