Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

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