Subversion Repositories Integrator Subversion

Rev

Rev 538 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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");
                        }
                });
        }
       
}