package br.com.ec.controller;
import java.io.Serializable;
import java.util.List;
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.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.EstoqueAuditoriaDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.dto.ProdutoDTO;
import br.com.ec.domain.dto.UsuarioDTO;
import br.com.ec.domain.model.EstoqueAuditoria;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.ContextoSeguranca;
import br.com.ec.domain.service.EstoqueAuditoriaService;
import br.com.ec.domain.service.ProdutoService;
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 EstoqueAuditoriaBean
extends AbstractBean
<EstoqueAuditoria
> implements Serializable {
private static final long serialVersionUID = 1L
;
private EstoqueAuditoriaService estoqueAuditoriaService
;
private ProdutoDTO produtoParaProduzir
;
private ProdutoDTO produtoProduzido
;
private Integer quantidadeParaProduzir
;
private ProdutoService produtoService
;
private List<EstoqueAuditoriaDTO
> auditorias
;
private UsuarioDTO usuarioParaContagemDTO
;
private ContextoSeguranca contextoSeguranca
;
/*
private EstoqueAuditoriaDTO entidadeParaConsulta;
private List<EstoqueAuditoriaDTO> auditorias;
private ParametrosConsultaEstampaDTO parametrosConsultaEstampaDTO;
private EstampaConsultaPorDemanda lazy;
*/
@Inject
public EstoqueAuditoriaBean
(EstoqueAuditoriaService estoqueAuditoriaService, ProdutoService produtoService, ContextoSeguranca contextoSeguranca
) {
this.
estoqueAuditoriaService = estoqueAuditoriaService
;
this.
produtoService = produtoService
;
this.
contextoSeguranca = contextoSeguranca
;
}
@
Override
public void preCarregamento
() {
// parametrosConsultaEstampaDTO = new ParametrosConsultaEstampaDTO();
// prepararConsultaDemanda();
limparEntidade
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new EstoqueAuditoria
());
setProdutoParaProduzir
(new ProdutoDTO
());
setProdutoProduzido
(new ProdutoDTO
());
setQuantidadeParaProduzir
(1);
// setEntidadeParaConsulta(new EstampaDTO());
}
@
Override
public GenericService
<EstoqueAuditoria
> getService
() {
return estoqueAuditoriaService
;
}
@
Override
public EstoqueAuditoria getEntidade
() {
return entidade
;
}
@
Override
public void preConsultar
() {
setTipoOperacao
(TipoOperacao.
CONSULTAR);
}
@
Override
public EstoqueAuditoria getId
() {
return getEntidade
();
}
public ProdutoDTO getProdutoParaProduzir
() {
return produtoParaProduzir
;
}
public void setProdutoParaProduzir
(ProdutoDTO produtoParaProduzir
) {
this.
produtoParaProduzir = produtoParaProduzir
;
}
public ProdutoDTO getProdutoProduzido
() {
return produtoProduzido
;
}
public void setProdutoProduzido
(ProdutoDTO produtoProduzido
) {
this.
produtoProduzido = produtoProduzido
;
}
public Integer getQuantidadeParaProduzir
() {
return quantidadeParaProduzir
;
}
public void setQuantidadeParaProduzir
(Integer quantidadeParaProduzir
) {
this.
quantidadeParaProduzir = quantidadeParaProduzir
;
}
public List<EstoqueAuditoriaDTO
> getAuditorias
() {
if (VerificadorUtil.
estaNulo(auditorias
)) {
setAuditorias
(estoqueAuditoriaService.
consultarUltimasProducoes(50));
}
return auditorias
;
}
public void setAuditorias
(List<EstoqueAuditoriaDTO
> auditorias
) {
this.
auditorias = auditorias
;
}
public UsuarioDTO getUsuarioParaContagemDTO
() {
return usuarioParaContagemDTO
;
}
public void setUsuarioParaContagemDTO
(UsuarioDTO usuarioParaContagemDTO
) {
this.
usuarioParaContagemDTO = usuarioParaContagemDTO
;
}
/*********************************************************/
public void consultarProdutoParaProduzir
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setProdutoParaProduzir
(produtoService.
consultarProdutoDTOPorCodigoOuCodigoEAN(getProdutoParaProduzir
().
getCodigo()));
}
});
}
public void consultarProdutoProduzido
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setProdutoProduzido
(produtoService.
consultarProdutoDTOPorCodigoOuCodigoEAN(getProdutoProduzido
().
getCodigo()));
}
});
}
public void produzir
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setUsuarioParaContagemDTO
(contextoSeguranca.
obterUsuario());
LojaDTO lojaMatriz =
new LojaDTO
(ConstantesSEC.
Loja.
SEQUENCIAL_MATRIZ_ESTOQUE_9);
// verificarSeTemPerfilVendedorOuSuperior(getUsuarioParaContagemDTO());
produtoService.
realizarProducao(lojaMatriz, getProdutoParaProduzir
(), getProdutoProduzido
(), getQuantidadeParaProduzir
(),
getUsuarioParaContagemDTO
());
limparEntidade
();
setAuditorias
(estoqueAuditoriaService.
consultarUltimasProducoes(50));
LancadorMensagem.
lancarSucesso("PRODUÇÃO REALIZADA COM SUCESSO");
}
});
}
public void excluirAuditoria
(final Long sequencialAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoriaService.
excluirAuditoria(sequencialAuditoria
);
setAuditorias
(estoqueAuditoriaService.
consultarUltimasProducoes(50));
adicionandoParametroArgsConfirmandoAcao
(true);
LancadorMensagem.
lancarSucesso("AUDITORIA EXCLUÍDA COM SUCESSO");
}
});
}
}