package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.commons.lang.StringUtils;
import org.springframework.context.annotation.Scope;
import br.com.ec.controller.util.UtilBean;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
import br.com.ec.domain.dto.ProdutoHistoricoDTO;
import br.com.ec.domain.dto.ProdutoHistoricoDetalhesDTO;
import br.com.ec.domain.model.EstoqueAuditoria;
import br.com.ec.domain.model.FornecedorProduto;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Modelo;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.ProdutoLoja;
import br.com.ec.domain.model.ProdutoRelacionado;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.tipos.TipoCorProduto;
import br.com.ec.domain.model.tipos.TipoEstiloProduto;
import br.com.ec.domain.model.tipos.TipoGenero;
import br.com.ec.domain.model.tipos.TipoGeneroProduto;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.model.tipos.TipoProdutoAtendimentos;
import br.com.ec.domain.model.tipos.TipoProdutoCapas;
import br.com.ec.domain.model.tipos.TipoProdutoRemedios;
import br.com.ec.domain.service.fornecedorproduto.FornecedorProdutoService;
import br.com.ec.domain.service.perfil.PerfilService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
import br.com.ec.domain.service.usuario.UsuarioService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
import br.com.ec.web.util.TipoOperacao;
@Named
@Scope
("view")
public class ProdutoBean
extends AbstractBean
<Produto
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ProdutoService produtoService
;
private ProdutoLojaService produtoLojaService
;
private UsuarioService usuarioService
;
private PerfilService perfilService
;
private ContextoSeguranca contextoSeguranca
;
private Produto produtoSelecionado
;
private String senhaUsuario
;
private Loja lojaSelecionada
;
private Integer quantidadeEstoque
;
private String localizacao
;
private String codigoProdutoParaContagem
;
private ProdutoLoja produtoLojaSelecionado
;
private FornecedorProduto fornecedorProdutoParaVinculo
;
private ProdutoRelacionado produtoRelacionadoParaVinculo
;
private List<ProdutoHistoricoDTO
> produtosHistorico
;
private List<ProdutoHistoricoDetalhesDTO
> produtosHistoricoDetalhes
;
private Produto ultimoProdutoCadastrado
;
private String codigoProdutoParaDuplicar
;
private Usuario usuarioParaContagem
;
@Inject
public ProdutoBean
(ProdutoService produtoService, ProdutoLojaService produtoLojaService, UsuarioService usuarioService,
PerfilService perfilService, FornecedorProdutoService fornecedorProdutoService, ContextoSeguranca contextoSeguranca
) {
this.
produtoService = produtoService
;
this.
produtoLojaService = produtoLojaService
;
this.
usuarioService = usuarioService
;
this.
perfilService = perfilService
;
this.
contextoSeguranca = contextoSeguranca
;
}
@
Override
public void preCarregamento
() {
entidade =
new Produto
();
parametrosConsulta =
new ParametrosConsultaProdutoDTO
();
parametrosConsulta.
setEntidade(entidade
);
}
@
Override
public void limparEntidade
() {
setEntidade
(new Produto
());
setCodigoProdutoParaDuplicar
(null);
}
@
Override
public GenericService
<Produto
> getService
() {
return produtoService
;
}
@
Override
public Produto getEntidade
() {
return entidade
;
}
@
Override
public Produto getId
() {
return getEntidade
();
}
@
Override
public void preConsultar
() {
setTipoOperacao
(TipoOperacao.
CONSULTAR);
}
@
Override
public void preCadastrar
() {
super.
preCadastrar();
prepararNovoProduto
();
}
@
Override
public void preAlterar
(Produto produto
) {
Produto produtoConsultado = produtoService.
detalharProduto(produto
);
super.
preAlterar(produtoConsultado
);
}
public Produto getProdutoSelecionado
() {
return produtoSelecionado
;
}
public void setProdutoSelecionado
(Produto produtoSelecionado
) {
this.
produtoSelecionado = produtoSelecionado
;
}
public String getSenhaUsuario
() {
return senhaUsuario
;
}
public void setSenhaUsuario
(String senhaUsuario
) {
this.
senhaUsuario = senhaUsuario
;
}
public Loja getLojaSelecionada
() {
return lojaSelecionada
;
}
public void setLojaSelecionada
(Loja lojaSelecionada
) {
this.
lojaSelecionada = lojaSelecionada
;
}
public Integer getQuantidadeEstoque
() {
return quantidadeEstoque
;
}
public void setQuantidadeEstoque
(Integer quantidadeEstoque
) {
this.
quantidadeEstoque = quantidadeEstoque
;
}
public String getLocalizacao
() {
return localizacao
;
}
public void setLocalizacao
(String localizacao
) {
this.
localizacao = localizacao
;
}
public String getCodigoProdutoParaContagem
() {
return codigoProdutoParaContagem
;
}
public void setCodigoProdutoParaContagem
(String codigoProdutoParaContagem
) {
this.
codigoProdutoParaContagem = codigoProdutoParaContagem
;
}
public ProdutoLoja getProdutoLojaSelecionado
() {
return produtoLojaSelecionado
;
}
public void setProdutoLojaSelecionado
(ProdutoLoja produtoLojaSelecionado
) {
this.
produtoLojaSelecionado = produtoLojaSelecionado
;
}
public FornecedorProduto getFornecedorProdutoParaVinculo
() {
return fornecedorProdutoParaVinculo
;
}
public void setFornecedorProdutoParaVinculo
(FornecedorProduto fornecedorProdutoParaVinculo
) {
this.
fornecedorProdutoParaVinculo = fornecedorProdutoParaVinculo
;
}
public ProdutoRelacionado getProdutoRelacionadoParaVinculo
() {
return produtoRelacionadoParaVinculo
;
}
public void setProdutoRelacionadoParaVinculo
(ProdutoRelacionado produtoRelacionadoParaVinculo
) {
this.
produtoRelacionadoParaVinculo = produtoRelacionadoParaVinculo
;
}
public List<ProdutoHistoricoDTO
> getProdutosHistorico
() {
return produtosHistorico
;
}
public void setProdutosHistorico
(List<ProdutoHistoricoDTO
> produtosHistorico
) {
this.
produtosHistorico = produtosHistorico
;
}
public List<ProdutoHistoricoDetalhesDTO
> getProdutosHistoricoDetalhes
() {
return produtosHistoricoDetalhes
;
}
public void setProdutosHistoricoDetalhes
(List<ProdutoHistoricoDetalhesDTO
> produtosHistoricoDetalhes
) {
this.
produtosHistoricoDetalhes = produtosHistoricoDetalhes
;
}
public Produto getUltimoProdutoCadastrado
() {
return ultimoProdutoCadastrado
;
}
public void setUltimoProdutoCadastrado
(Produto ultimoProdutoCadastrado
) {
this.
ultimoProdutoCadastrado = ultimoProdutoCadastrado
;
}
public String getCodigoProdutoParaDuplicar
() {
return codigoProdutoParaDuplicar
;
}
public void setCodigoProdutoParaDuplicar
(String codigoProdutoParaDuplicar
) {
this.
codigoProdutoParaDuplicar = codigoProdutoParaDuplicar
;
}
public Usuario getUsuarioParaContagem
() {
return usuarioParaContagem
;
}
public void setUsuarioParaContagem
(Usuario usuarioParaContagem
) {
this.
usuarioParaContagem = usuarioParaContagem
;
}
/***************************************************************/
public List<Produto
> getConsultarTodas
() {
return produtoService.
consultarTodos(new Produto
());
}
public Integer consultarEstoque
(Produto produto
) {
return produtoLojaService.
consultarEstoqueProduto(produto
);
}
public Integer consultarEstoquePorModelo
(Modelo modelo
) {
return consultarEstoquePorModeloEeTipo
(modelo,
null);
}
public Integer consultarEstoquePorModeloEeTipo
(Modelo modelo,
String tipoProduto
) {
return produtoLojaService.
consultarEstoqueModeloEeLoja(modelo,
null,
null, tipoProduto,
null,
null);
}
public Integer consultarEstoque
(Produto produto,
Long sequencialLoja
) {
return produtoLojaService.
consultarEstoqueProdutoEeLoja(produto,
new Loja
(sequencialLoja
));
}
public Integer consultarEstoquePorModeloEeLoja
(Long sequencialModelo,
Long sequencialLoja,
String descricaoProduto,
String tipoProduto,
String genero,
String tipoEstilo
) {
Modelo modelo =
new Modelo
();
modelo.
setSequencial(sequencialModelo
);
return produtoLojaService.
consultarEstoqueModeloEeLoja(modelo, sequencialLoja, descricaoProduto, tipoProduto, tipoEstilo, genero
);
}
public Date consultarDataContagem
(Produto produto, Loja loja
) {
return produtoLojaService.
consultarDataContagem(produto, loja
);
}
public ProdutoLoja consultarProdutoLoja
(Produto produto,
Long sequencialLoja
) {
return produtoLojaService.
consultarProdutoLoja(produto,
new Loja
(sequencialLoja
));
}
public TipoProduto
[] getTiposProduto
() {
return TipoProduto.
values();
}
public TipoProdutoCapas
[] getTiposProdutoCapas
() {
return TipoProdutoCapas.
values();
}
public TipoProdutoRemedios
[] getTiposProdutoRemedios
() {
return TipoProdutoRemedios.
values();
}
public TipoProdutoAtendimentos
[] getTiposProdutoAtendimentos
() {
return TipoProdutoAtendimentos.
values();
}
public TipoGenero
[] getTiposGenero
() {
return TipoGenero.
values();
}
public TipoEstiloProduto
[] getTiposEstilo
() {
return TipoEstiloProduto.
values();
}
public TipoCorProduto
[] getTiposCor
() {
return TipoCorProduto.
values();
}
public TipoGeneroProduto
[] getTiposGeneroProduto
() {
return TipoGeneroProduto.
values();
}
public void prepararNovoProduto
() {
limparEntidade
();
getEntidade
().
prepararNovoProduto();
}
@
Override
public void cadastrar
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
modificarEntidadeAntesDaOperacao
();
getService
().
cadastrar(entidade
);
String codigoProdutoCadastro = entidade.
getCodigoProdutoPadrao();
setUltimoProdutoCadastrado
(entidade
);
limparEntidade
();
modificarEntidadeDepoisDaOperacao
();
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO
) +
" CÓDIGO GERADO: " + codigoProdutoCadastro
);
}
});
}
public void lancarAvaria
(final EstoqueAuditoria estoqueAuditoria,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Usuario usuario = verificarSenhaUsuario
();
verificarSeTemPerfilVendedorOuSuperior
(usuario
);
produtoService.
lancarAvaria(estoqueAuditoria, loja, estoqueAuditoria.
getProduto(), usuario
);
setSenhaUsuario
("");
LancadorMensagem.
lancarSucessoRedirecionandoTela("AVARIA CONFIRMADA COM SUCESSO!",
"/sistema/informar_avaria.xhtml?sequencialLoja=" + loja.
getSequencial());
}
});
}
public void lancarAvaria
(final EstoqueAuditoria estoqueAuditoria,
final Loja loja,
final Integer quantidadeParaAvaria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Usuario usuario = verificarSenhaUsuario
();
verificarSeTemPerfilVendedorOuSuperior
(usuario
);
produtoService.
lancarAvarias(estoqueAuditoria, loja, estoqueAuditoria.
getProduto(), usuario, quantidadeParaAvaria
);
setSenhaUsuario
("");
LancadorMensagem.
lancarSucessoRedirecionandoTela("AVARIA CONFIRMADA COM SUCESSO!",
"/sistema/informar_avaria.xhtml?sequencialLoja=" + loja.
getSequencial());
}
});
}
public void lancarTroca
(final EstoqueAuditoria estoqueAuditoria,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Usuario usuario = verificarSenhaUsuario
();
verificarSeTemPerfilVendedorOuSuperior
(usuario
);
produtoService.
lancarTroca(estoqueAuditoria, loja, estoqueAuditoria.
getProduto(), usuario
);
setSenhaUsuario
("");
LancadorMensagem.
lancarSucessoRedirecionandoTela("TROCA CONFIRMADA COM SUCESSO!",
"/sistema/informar_troca.xhtml?sequencialLoja=" + loja.
getSequencial());
}
});
}
private Usuario verificarSenhaUsuario
() {
return usuarioService.
consultarUsuarioPorSenha(getSenhaUsuario
());
}
private void verificarSeTemPerfilVendedorOuSuperior
(Usuario usuario
) {
if (!perfilService.
temPerfilVendedor(usuario
) &&
!perfilService.
temPerfilLojistica(usuario
) &&
!perfilService.
temPerfilCompras(usuario
) &&
!perfilService.
temPerfilRecursosHumanos(usuario
)) {
throw new NegocioException
("Sem permissão para esta operação");
}
}
public void desativarProduto
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoService.
desativarProduto(getEntidade
());
limparEntidade
();
LancadorMensagem.
lancarSucesso("PRODUTO DESATIVADO COM SUCESSO!");
}
});
}
public void ativarProduto
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoService.
ativarProduto(getEntidade
());
limparEntidade
();
LancadorMensagem.
lancarSucesso("PRODUTO ATIVADO COM SUCESSO!");
}
});
}
public void alterarEstoque
(final Produto produto,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoLojaService.
alterarEstoque(getQuantidadeEstoque
(), produto, loja
);
LancadorMensagem.
lancarSucesso("ESTOQUE ALTERADO COM SUCESSO!");
}
});
}
public void alterarLocalizacao
(final Produto produto,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoLojaService.
alterarLocalizacao(getLocalizacao
(), produto, loja
);
LancadorMensagem.
lancarSucesso("LOCALIZAÇÃO ALTERADA COM SUCESSO!");
}
});
}
public void adicionarEstoque
(final Produto produto,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoLojaService.
alterarEstoqueAcrescentandoQuantidadeInformada(1, produto, loja
);
LancadorMensagem.
lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
}
});
}
public void retirarEstoque
(final Produto produto,
final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoLojaService.
alterarEstoqueAcrescentandoQuantidadeInformada(-
1, produto, loja
);
LancadorMensagem.
lancarSucesso("ESTOQUE ADICIONADO COM SUCESSO!");
}
});
}
public Integer quantidadeDias
(Date dataInicial
) {
return DataUtils.
calcularDiferenceEmDiasEntreDuasDatas(DataUtils.
getDataAtual(), dataInicial
);
}
public void iniciarContagem
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Usuario usuarioContagem = usuarioService.
consultarUsuarioPorSenha(getSenhaUsuario
());
usuarioService.
naoPermitirPerfilLoja(usuarioContagem
);
setUsuarioParaContagem
(usuarioContagem
);
setSenhaUsuario
("");
}
});
}
public void sairContagem
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setUsuarioParaContagem
(null);
}
});
}
public String verificarStatusContagem
(Produto produto, Loja loja
) {
ProdutoLoja produtoLoja = produtoLojaService.
consultarProdutoLoja(produto, loja
);
if (VerificadorUtil.
naoEstaNulo(produtoLoja
)) {
if (produtoLoja.
getIndicadorContagemSolicitada()) {
return ConstantesSEC.
StatusContagem.
CONTAGEM_SOLICITADA_STYLE_CLASS;
}
}
Date dataContagemSolicitada =
null;
if (VerificadorUtil.
naoEstaNulo(produto.
getMarcaDoModelo())) {
dataContagemSolicitada = produto.
getMarcaDoModelo().
getDataContagemSolicitada();
}
return UtilBean.
statusContagem(consultarDataContagem
(produto, loja
), dataContagemSolicitada
);
}
public void prepararParaContagem
(Produto produto, Loja loja
) {
setProdutoLojaSelecionado
(produtoLojaService.
consultarProdutoLoja(produto, loja
));
setQuantidadeEstoque
(getProdutoLojaSelecionado
().
getQuantidadeEstoque());
setLocalizacao
(getProdutoLojaSelecionado
().
getLocalizacao());
}
public void prepararParaContagemPorCodigo
(final Loja loja
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Produto produtoConsultado = produtoService.
consultarProdutoPorCodigoParaContagem(StringUtils.
trim(getCodigoProdutoParaContagem
()), loja, getUsuarioParaContagem
());
((ParametrosConsultaProdutoDTO
)parametrosConsulta
).
setLojaSelecionadaParaContagem(getLojaSelecionada
());
setProdutoLojaSelecionado
(produtoLojaService.
consultarProdutoLoja(produtoConsultado, loja
));
setQuantidadeEstoque
(getProdutoLojaSelecionado
().
getQuantidadeEstoque());
setLocalizacao
(getProdutoLojaSelecionado
().
getLocalizacao());
adicionandoParametroArgsConfirmandoAcao
(true);
}
});
}
public void realizarContagemDireta
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setUsuarioParaContagem
(contextoSeguranca.
obterUsuario());
verificarSeTemPerfilVendedorOuSuperior
(getUsuarioParaContagem
());
produtoService.
realizarContagemDireta(getProdutoLojaSelecionado
(), getQuantidadeEstoque
(), getLocalizacao
(), getUsuarioParaContagem
(),
false);
setCodigoProdutoParaContagem
("");
LancadorMensagem.
lancarSucesso("CONTAGEM REALIZADA COM SUCESSO! CÓDIGO: " + getProdutoLojaSelecionado
().
getProduto().
getCodigoProdutoPadrao());
}
});
}
public void realizarContagem
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
verificarSeTemPerfilVendedorOuSuperior
(getUsuarioParaContagem
());
produtoService.
realizarContagem(getProdutoLojaSelecionado
(), getQuantidadeEstoque
(), getLocalizacao
(), getUsuarioParaContagem
(),
false);
setCodigoProdutoParaContagem
("");
LancadorMensagem.
lancarSucesso("CONTAGEM REALIZADA COM SUCESSO! CÓDIGO: " + getProdutoLojaSelecionado
().
getProduto().
getCodigoProdutoPadrao());
}
});
}
public void realizarContagemRedirecionandoTela
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
verificarSeTemPerfilVendedorOuSuperior
(contextoSeguranca.
obterUsuario());
produtoService.
realizarContagem(getProdutoLojaSelecionado
(), getQuantidadeEstoque
(), getLocalizacao
(), contextoSeguranca.
obterUsuario(),
false);
LancadorMensagem.
lancarSucessoRedirecionandoTela("CONTAGEM REALIZADA COM SUCESSO!",
"/sistema/contagem/contagem-loja.xhtml?sequencialLoja=" + getProdutoLojaSelecionado
().
getSequencialDaLoja());
}
});
}
public Produto detalharProduto
(Produto produto
) {
Produto produtoDetalhado = produtoService.
detalharProduto(produto
);
produtoDetalhado.
setDataUltimaVenda(produtoService.
dataUltimaVenda(produtoDetalhado
));
return produtoDetalhado
;
}
public void consultarHistorico
(Produto produto
) {
setProdutoSelecionado
(produtoService.
detalharProduto(produto
));
setProdutosHistorico
(produtoService.
consultarHistorico(getProdutoSelecionado
(),
12));
}
public void detalharHistorico
(ProdutoHistoricoDTO produtoHistorico
) {
setProdutosHistoricoDetalhes
(produtoService.
detalharHistorico(produtoHistorico
));
}
public Integer quantidadeProdutosParaRetirarDoOnline
(Loja loja
) {
return produtoService.
quantidadeProdutosParaRetirarDoOnline(loja
);
}
public void prepararNovoFornecedor
() {
setFornecedorProdutoParaVinculo
(new FornecedorProduto
());
}
public void vincularNovoFornecedor
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getFornecedorProdutoParaVinculo
().
setProduto(getEntidade
());
getEntidade
().
getFornecedores().
add(getFornecedorProdutoParaVinculo
());
setFornecedorProdutoParaVinculo
(null);
}
});
}
public void excluirVinculo
(final FornecedorProduto fornecedorProduto
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getEntidade
().
getFornecedores().
remove(fornecedorProduto
);
}
});
}
public void prepararNovoRelacionado
() {
ProdutoRelacionado produtoRelacionado =
new ProdutoRelacionado
();
produtoRelacionado.
setProdutoRelacionado(new Produto
());
setProdutoRelacionadoParaVinculo
(produtoRelacionado
);
}
public void consultarProdutoRelacionado
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Produto produtoSelecionado = produtoService.
consultarProdutoPorCodigoOuCodigoEAN(getProdutoRelacionadoParaVinculo
().
getProdutoRelacionado().
getCodigo());
if (VerificadorUtil.
naoEstaNulo(produtoSelecionado
)) {
getProdutoRelacionadoParaVinculo
().
setProdutoRelacionado(produtoSelecionado
);
}
}
});
}
public void vincularNovoRelacionado
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getProdutoRelacionadoParaVinculo
().
setProduto(getEntidade
());
getEntidade
().
getRelacionados().
add(getProdutoRelacionadoParaVinculo
());
setProdutoRelacionadoParaVinculo
(null);
}
});
}
public void excluirRelacionado
(final ProdutoRelacionado produtoRelacionado
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getEntidade
().
getRelacionados().
remove(produtoRelacionado
);
getEntidade
().
getRelacionadosReverse().
remove(produtoRelacionado
);
}
});
}
public void recuperarUltimoCadastro
() {
getUltimoProdutoCadastrado
().
setSequencial(null);
setEntidade
(getUltimoProdutoCadastrado
());
}
public void duplicarProduto
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNuloOuVazio(getCodigoProdutoParaDuplicar
())) {
LancadorMensagem.
lancarErro("INFORMAR CÓDIGO DO PRODUTO");
} else {
Produto produtoSelecionado = produtoService.
consultarProdutoPorCodigoOuCodigoEAN(getCodigoProdutoParaDuplicar
());
if (produtoSelecionado.
getCodigo().
equals("000000")) {
LancadorMensagem.
lancarErro("PRODUTO NÃO ENCONTRADO");
} else {
getEntidade
().
prepararDadosParaDuplicacao(produtoSelecionado
);
getEntidade
().
setDataOnline(null);
getEntidade
().
setDataOnlineShoplog(null);
getEntidade
().
setIndicadorOnline(null);
getEntidade
().
setIndicadorOnlineShoplog(null);
LancadorMensagem.
lancarSucesso("OPERAÇÃO REALIZADA COM SUCESSO");
}
}
}
});
}
}