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.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosVendaVivoDTO;
import br.com.ec.domain.model.Cliente;
import br.com.ec.domain.model.LinhaVivo;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.VendaVivo;
import br.com.ec.domain.model.Vendedor;
import br.com.ec.domain.model.tipos.TipoStatusDigitalizacao;
import br.com.ec.domain.service.cliente.ClienteService;
import br.com.ec.domain.service.linhavivo.LinhaVivoService;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
import br.com.ec.domain.service.vendavivo.VendaVivoService;
import br.com.ec.domain.service.vendedor.VendedorService;
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;

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

        private static final long serialVersionUID = 1L;
       
        private LojaService lojaService;
        private VendaVivoService vendaVivoService;
        private LinhaVivoService linhaVivoService;
        private VendedorService vendedorService;
        private ClienteService clienteService;
        private ContextoSeguranca contextoSeguranca;
       
        private String cpfCliente;
        private ParametrosVendaVivoDTO parametrosVenda;
        private Boolean numeroVerificado;
        private VendaVivo vendaSelecionada;
        private List<Vendedor> vendedoresColaboradores;
       
        @Inject
        public VendaVivoBean(LojaService lojaService, VendaVivoService vendaVivoService, LinhaVivoService linhaVivoService,
                        VendedorService vendedorService, ClienteService clienteService, ContextoSeguranca contextoSeguranca) {
                this.lojaService = lojaService;
                this.vendaVivoService = vendaVivoService;
                this.linhaVivoService = linhaVivoService;
                this.vendedorService = vendedorService;
                this.clienteService = clienteService;
                this.contextoSeguranca = contextoSeguranca;
        }
       
        @Override
        public void preCarregamento() {
                entidade = new VendaVivo();
                entidade.setIndicadorPortabilidade(false);
                entidade.setIndicadorMigracao(false);
                entidade.setIndicadorCadastradoVivoGo(false);
                numeroVerificado = false;
                parametrosConsulta = new ParametrosConsulta<VendaVivo>();
                parametrosConsulta.setEntidade(entidade);
                parametrosVenda = new ParametrosVendaVivoDTO();
                setarParametrosDaLoja();
        }

        private void setarParametrosDaLoja() {
                if (VerificadorUtil.estaNulo(entidade)) {
                        entidade = new VendaVivo();
                        entidade.setDataVenda(DataUtils.getDataAtual());
                        parametrosVenda.setUsuario(contextoSeguranca.obterUsuario());
                }
                if (VerificadorUtil.naoEstaNulo(getParametro("sequencialLoja"))) {
                        Loja loja = new Loja();
                        loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
                        entidade.setLoja(lojaService.consultarPorId(loja));
                }
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new VendaVivo());
                setNumeroVerificado(false);
        }

        @Override
        public GenericService<VendaVivo> getService() {
                return vendaVivoService;
        }
       
        @Override
        public VendaVivo getEntidade() {
                return entidade;
        }

        @Override
        public VendaVivo getId() {
                return getEntidade();
        }
       
        public String getCpfCliente() {
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
        }
        public void setCpfCliente(String cpfCliente) {
                this.cpfCliente = cpfCliente;
        }
       
        public ParametrosVendaVivoDTO getParametrosVenda() {
                return parametrosVenda;
        }
        public void setParametrosVenda(ParametrosVendaVivoDTO parametrosVenda) {
                this.parametrosVenda = parametrosVenda;
        }
       
        public Boolean getNumeroVerificado() {
                return numeroVerificado;
        }
        public void setNumeroVerificado(Boolean numeroVerificado) {
                this.numeroVerificado = numeroVerificado;
        }
       
        public VendaVivo getVendaSelecionada() {
                return vendaSelecionada;
        }
        public void setVendaSelecionada(VendaVivo vendaSelecionada) {
                this.vendaSelecionada = vendaSelecionada;
        }
       
        public List<Vendedor> getVendedoresColaboradores() {
                if (VerificadorUtil.estaNulo(vendedoresColaboradores)) {
                        setVendedoresColaboradores(vendedorService.consultarVendedoresColaboradores());
                }
                return vendedoresColaboradores;
        }
        public void setVendedoresColaboradores(List<Vendedor> vendedoresColaboradores) {
                this.vendedoresColaboradores = vendedoresColaboradores;
        }
       
        public List<VendaVivo> getConsultarTodas() {
                return vendaVivoService.consultarTodos(new VendaVivo());
        }
       
        /***************************************************************/
       
        public void retirarProduto() {
                getEntidade().setProdutoVivo(null);
        }
       
        public void prepararParaAlterarVenda(final VendaVivo vendaVivo) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setEntidade(vendaVivo);
                        }
                });
        }
       
        public void iniciarNovaVenda() {
                limparEntidade();
        }
       
        public void verificarNumero() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setNumeroDaLinha(StringUtil.retornarApenasNumeros(getEntidade().getNumeroDaLinha()));
                                LinhaVivo linhaConsultada = linhaVivoService.consultarPorNumero(getEntidade().getNumeroDaLinha());
                                if (VerificadorUtil.naoEstaNulo(linhaConsultada)) {
                                        getEntidade().setLinhaVivo(linhaConsultada);
                                        LancadorMensagem.lancarSucesso("LINHA JÁ EXISTENTE");
                                }
                                setNumeroVerificado(true);
                                getEntidade().setDataVenda(DataUtils.getDataAtual());
                        }
                });
        }
       
        public void cadastrarVendaVivo() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setarParametrosDaLoja();
                                vendaVivoService.cadastrarVendaVivoPeloPDV(getEntidade());
                                LancadorMensagem.lancarSucessoRedirecionandoTela("VENDA REALIZADA COM SUCESSO!", "/sistema/pdv_vivo.xhtml?sequencialLoja=" + getEntidade().getLoja().getSequencial());
                                iniciarNovaVenda();
                        }
                });
        }
       
        public void alterarVendaVivo() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                vendaVivoService.alterarVendaVivoPeloPDV(getEntidade());
                                adicionandoParametroArgsConfirmandoAcao(true);
                                LancadorMensagem.lancarSucesso("VENDA ALTERADA COM SUCESSO");
                        }
                });
        }
       
        public void excluirVendaVivo(final VendaVivo vendaVivo) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                vendaVivoService.excluirVendaVivo(vendaVivo, contextoSeguranca.obterUsuario());
                                adicionandoParametroArgsConfirmandoAcao(true);
                                LancadorMensagem.lancarSucesso("VENDA EXCLUÍDA COM SUCESSO");
                        }
                });
        }
       
        public void selecionarCliente(final Cliente cliente) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cliente.setAtivo(true);
                                clienteService.alterar(cliente);
                                getEntidade().getLinhaVivo().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
                                setCpfCliente(null);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarCliente() {
                getEntidade().getLinhaVivo().setCliente(null);
        }
       
        public void selecionarDigitalizacao() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.naoEstaNuloOuVazio(getEntidade().getProtocoloGED())) {
                                        getEntidade().setTipoStatusDigitalizacao(TipoStatusDigitalizacao.CONFERINDO.getValor());
                                        getEntidade().setDataStatus(DataUtils.getDataAtual());
                                        getEntidade().setDataDigitalizacao(DataUtils.getDataAtual());
                                }
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarDigitalizacao() {
                getEntidade().setProtocoloGED("");
                getEntidade().setTipoStatusDigitalizacao("");
                getEntidade().setDataDigitalizacao(null);
                getEntidade().setDataStatus(null);
        }
       
        public void prepararParaExcluirVenda(final VendaVivo vendaVivo) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setVendaSelecionada(vendaVivo);
                        }
                });
        }
       
        public void excluirVendaSelecionada() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.estaNuloOuVazio(getVendaSelecionada().getJustificativaParaExcluir())) {
                                        throw new RuntimeException("É OBRIGATÓRIO JUSTIFICAR");
                                }
                                vendaVivoService.excluirVendaVivo(getVendaSelecionada(), contextoSeguranca.obterUsuario());
                                adicionandoParametroArgsConfirmandoAcao(true);
                                LancadorMensagem.lancarSucesso("VENDA EXCLUÍDA COM SUCESSO");
                        }
                });
        }

}