Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.controller.managedbean;

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.consulta.ParametrosConsulta;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Cliente;
import br.com.ec.domain.model.EstoqueAuditoria;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Pedido;
import br.com.ec.domain.model.Venda;
import br.com.ec.domain.model.tipos.TipoDevolucao;
import br.com.ec.domain.service.cliente.ClienteService;
import br.com.ec.domain.service.estoqueauditoria.EstoqueAuditoriaService;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.pedido.PedidoService;
import br.com.ec.domain.service.venda.VendaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;

@Named
@Scope("view")
public class InformarTrocaBean extends AbstractBean<EstoqueAuditoria> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private Loja lojaSelecionada;
        private String cpfCliente;
       
        private List<EstoqueAuditoria> listaTrocasDoDia;
        private List<EstoqueAuditoria> listaDevolucoesDoDia;
       
        private EstoqueAuditoriaService estoqueAuditoriaService;
        private LojaService lojaService;
        private ClienteService clienteService;
        private VendaService vendaService;
        private PedidoService pedidoService;
       
        @Inject
        public InformarTrocaBean(EstoqueAuditoriaService estoqueAuditoriaService, LojaService lojaService, ClienteService clienteService, VendaService vendaService,
                        PedidoService pedidoService) {
                this.estoqueAuditoriaService = estoqueAuditoriaService;
                this.lojaService = lojaService;
                this.clienteService = clienteService;
                this.vendaService = vendaService;
                this.pedidoService = pedidoService;
        }
       
        @Override
        public void preCarregamento() {
                if (VerificadorUtil.estaNulo(parametrosConsulta)) {
                        entidade = new EstoqueAuditoria();
                        parametrosConsulta = new ParametrosConsulta<EstoqueAuditoria>();
                        parametrosConsulta.setEntidade(entidade);
                        setListaTrocasDoDia(estoqueAuditoriaService.consultarTrocasDoDia(getLojaSelecionada()));
                        setListaDevolucoesDoDia(estoqueAuditoriaService.consultarDevolucoesDoDia(getLojaSelecionada()));
                }
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new EstoqueAuditoria());
        }

        @Override
        public GenericService<EstoqueAuditoria> getService() {
                return estoqueAuditoriaService;
        }
       
        @Override
        public EstoqueAuditoria getEntidade() {
                return entidade;
        }

        @Override
        public EstoqueAuditoria getId() {
                return getEntidade();
        }
       
        public TipoDevolucao[] getTiposDevolucao() {
                return TipoDevolucao.values();
        }
       
        public Loja getLojaSelecionada() {
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
                        Loja loja = new Loja();
                        loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
                        lojaSelecionada = lojaService.consultarPorId(loja);
                }
                return lojaSelecionada;
        }
        public void setLojaSelecionada(Loja lojaSelecionada) {
                this.lojaSelecionada = lojaSelecionada;
        }
       
        public String getCpfCliente() {
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
        }
        public void setCpfCliente(String cpfCliente) {
                this.cpfCliente = cpfCliente;
        }
       
        public List<EstoqueAuditoria> getListaTrocasDoDia() {
                return listaTrocasDoDia;
        }
        public void setListaTrocasDoDia(List<EstoqueAuditoria> listaTrocasDoDia) {
                this.listaTrocasDoDia = listaTrocasDoDia;
        }
       
        public List<EstoqueAuditoria> getListaDevolucoesDoDia() {
                return listaDevolucoesDoDia;
        }
        public void setListaDevolucoesDoDia(List<EstoqueAuditoria> listaDevolucoesDoDia) {
                this.listaDevolucoesDoDia = listaDevolucoesDoDia;
        }
       
        public void selecionarCliente(final Cliente cliente) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cliente.setAtivo(true);
                                clienteService.alterar(cliente);
                                getEntidade().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
                                setCpfCliente(null);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarCliente() {
                getEntidade().setCliente(null);
        }
       
        public void consultarInformacoesVenda() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.estaNulo(getEntidade().getSequencialVenda())) {
                                        throw new NegocioException("ID não informado corretamente");
                                }
                                Venda vendaConsulta = new Venda();
                                vendaConsulta.setSequencial(getEntidade().getSequencialVenda());
                                vendaConsulta = vendaService.consultarPorId(vendaConsulta);
                                if (VerificadorUtil.estaNulo(vendaConsulta)) {
                                        throw new NegocioException("Venda informada não existente");
                                }
                                getEntidade().setDataVenda(vendaConsulta.getDataVenda());
                                getEntidade().setLojaVenda(vendaConsulta.getLoja());
                        }
                });
        }
       
        public void consultarInformacoesPedido() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.estaNulo(getEntidade().getSequencialPedido())) {
                                        throw new NegocioException("ID do pedido não informado corretamente");
                                }
                                Pedido pedidoConsultado = new Pedido();
                                pedidoConsultado.setSequencial(getEntidade().getSequencialPedido());
                                pedidoConsultado = pedidoService.consultarPedidoCompleto(pedidoConsultado);
                                if (VerificadorUtil.estaNulo(pedidoConsultado)) {
                                        throw new NegocioException("Pedido informado não existente");
                                }
                                if (!pedidoConsultado.pedidoEhTroca()) {
                                        throw new NegocioException("Pedido não é do tipo TROCA");
                                }
                                if (pedidoConsultado.foiAtendido()) {
                                        throw new NegocioException("Pedido informado já finalizado");
                                }
                                if (VerificadorUtil.naoEstaNulo(pedidoConsultado.getCliente())) {
                                        getEntidade().setCliente(pedidoConsultado.getCliente());
                                }
                                getEntidade().setObservacao("PEDIDO VINCULADO: ID " + getEntidade().getSequencialPedido() + "\n" + getEntidade().getObservacao());
                                getEntidade().setPedidoParaVincular(pedidoConsultado);
                        }
                });
        }
       
        public void desvincularPedido() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setObservacao(getEntidade().getObservacao().replace("PEDIDO VINCULADO: ID " + getEntidade().getSequencialPedido(), ""));
                                getEntidade().setSequencialPedido(null);
                                getEntidade().setPedidoParaVincular(null);
                        }
                });
        }
       
}