Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.controller;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.ProdutoService;
import br.com.ec.web.generic.AbstractBean;
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();
}
public TipoProduto
[] getTiposProduto
() {
return TipoProduto.
values();
}
/*
@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 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");
}
}
}
});
}
*/
}