Beispiel #1
0
        public ActionResult CriarSolicitacao(string chaveurl)
        {
            if (string.IsNullOrEmpty(chaveurl))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            int idPjpfBase;
            List <ParametroCriptografia> param = Cripto.DescriptografarUrl(chaveurl, Key);

            Int32.TryParse(param.First(p => p.Name == "id").Value, out idPjpfBase);
            FornecedoresVM modelo = Mapper.Map <FornecedoresVM>(_fornecedorBaseService.BuscarPorIdPreCadastro(idPjpfBase));

            modelo.TipoFornecedor = modelo.CNPJ.Length == 14 ? 1 : 3;
            modelo.TipoCadastro   = 1;

            int  contratanteId          = (int)Geral.PegaAuthTicket("ContratanteId");
            int? grupoId                = (int?)Geral.PegaAuthTicket("Grupo");
            int  usuarioId              = (int)Geral.PegaAuthTicket("UsuarioId");
            bool solicitaDocumentos     = (bool)Geral.PegaAuthTicket("SolicitaDocumentos");
            bool solicitaFichaCadastral = (bool)Geral.PegaAuthTicket("SolicitaFichaCadastral");

            List <FORNECEDOR_CATEGORIA> categorias = _fornecedorCategoriaService.BuscarCategorias(contratanteId).OrderBy(x => x.DESCRICAO).ToList();

            ViewBag.Categoria = Mapper.Map <List <CategoriaVM> >(categorias, opt => opt.Items["Url"] = Url);

            if (grupoId != null)
            {
                ViewBag.Empresa = new SelectList(_contratanteService.ListarTodosPorUsuario(usuarioId), "ID", "RAZAO_SOCIAL", contratanteId);
            }
            ViewBag.Compras                = new SelectList(_organizacaoComprasService.ListarTodosPorIdContratante(contratanteId), "ID", "ORG_COMPRAS_DSC");
            ViewBag.SolicitaDocumentos     = solicitaDocumentos;
            ViewBag.solicitaFichaCadastral = solicitaFichaCadastral;
            ViewBag.Robo = false;
            ViewBag.Acao = "Incluir";

            if (modelo == null)
            {
                return(HttpNotFound());
            }

            return(View(modelo));
        }
Beispiel #2
0
        private void ValidarFormularioCriacaoSolicitacao(FornecedoresVM model, string Acao)
        {
            if (!string.IsNullOrEmpty(model.Email))
            {
                if (!Validacao.ValidarEmail(model.Email))
                {
                    ModelState.AddModelError("Contato.Email", "O e-mail informado não está em um formato válido.");
                }
            }

            if (model.Categoria == 0)
            {
                ModelState.AddModelError("Categoria", "Informe a Categoria!");
            }

            if (model.TipoFornecedor == 1 || model.TipoFornecedor == 3)
            {
                if (model.CNPJ == null)
                {
                    ModelState.AddModelError("CNPJ", "CNPJ/CPF Obrigatório");
                }
                else
                {
                    if (model.TipoFornecedor == 1)
                    {
                        if (!Validacao.ValidaCNPJ(model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "")))
                        {
                            ModelState.AddModelError("CNPJ", "CNPJ Inválido");
                        }
                    }
                    else
                    {
                        if (!Validacao.ValidaCPF(model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "")))
                        {
                            ModelState.AddModelError("CNPJ", "CPF Inválido");
                        }
                    }
                }
            }

            if (Acao == "Incluir")
            {
                if (model.TipoFornecedor != 2)
                {
                    var cnpjteste = model.CNPJ == null
                        ? string.Empty
                        : model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");

                    if (_fornecedorService.BuscarIdFornecedorPorCnpj(cnpjteste) != 0)
                    {
                        ModelState.AddModelError("CNPJ", "Já existe um fornecedor cadastrado com esse CNPJ/CPF!");
                    }

                    if (_solicitacaoCadastroService.BuscarPorStatusId(cnpjteste, 6) != null)
                    {
                        ModelState.AddModelError("CNPJ", "Já existe uma solicitação de criação para este CNPJ/CPF!");
                    }
                }
                else
                {
                    if (_fornecedorService.BuscarPorRazaoSocial(model.RazaoSocial) != null)
                    {
                        ModelState.AddModelError("RazaoSocial", "Já existe um fornecedor cadastrado com esta Razão Social");
                    }

                    if (_solicitacaoCadastroService.BuscarPorRazaoSocial(model.RazaoSocial) != null)
                    {
                        ModelState.AddModelError("RazaoSocial", "Já existe uma solicitação de criação para esta Razão Social");
                    }
                }
            }

            // SE TIPO ESTRANGEIRO RETIRA A VALIDACAO DO CNPJ
            if (model.TipoFornecedor == 2)
            {
                ModelState.Remove("CNPJ");
                ModelState.Remove("CONTATO.EMAIL");
            }

            // SE EMPRESA NACIONAL OU PESSOA FÍSICA, RETIRA A VALIDAÇÃO DA RAZÃO SOCIAL
            if (model.TipoFornecedor == 1 || model.TipoFornecedor == 3)
            {
                ModelState.Remove("RAZAOSOCIAL");
            }

            if (model.Categoria > 0)
            {
                FORNECEDOR_CATEGORIA categoria = _fornecedorCategoriaService.Get(model.Categoria);
                int totalDocCatecoria          = categoria.ListaDeDocumentosDeFornecedor.Count;

                if (categoria.ISENTO_DOCUMENTOS && categoria.ISENTO_DADOSBANCARIOS && categoria.ISENTO_CONTATOS)
                {
                    if (model.TipoCadastro == 1)
                    {
                        ModelState.AddModelError("", "A Categoria escolhida é isenta de Documentação, Dados Bancários e Contato, no entanto você está tentando enviar a solicitação para o fornecedor sem um e-mail de contato. Para continuar sem contato marque a opção \"Eu preencherei os dados\".");
                    }
                    else
                    {
                        ModelState.Remove("Email");
                    }
                }
                else
                if (totalDocCatecoria == 0)
                {
                    ModelState.AddModelError("", "Não é possível enviar esta solicitação. A Categoria/Grupo de Contas selecionado não possue Lista de Documento para solicitação!");
                }
            }
        }
Beispiel #3
0
        public ActionResult CriarSolicitacao(FornecedoresVM model, int?CategoriaSelecionada, string CategoriaSelecionadaNome, int?SolicitacaoID, int Empresa, string Acao)
        {
            if (string.IsNullOrEmpty(Acao))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            int  contratanteId          = (int)Geral.PegaAuthTicket("ContratanteId");
            int  usuarioId              = (int)Geral.PegaAuthTicket("UsuarioId");
            bool solicitaDocumentos     = (bool)Geral.PegaAuthTicket("SolicitaDocumentos");
            bool solicitaFichaCadastral = (bool)Geral.PegaAuthTicket("SolicitaFichaCadastral");
            int? grupoId = (int?)Geral.PegaAuthTicket("Grupo");

            ViewBag.Categoria                = Mapper.Map <List <CategoriaVM> >(_fornecedorCategoriaService.BuscarCategorias(contratanteId).OrderBy(x => x.DESCRICAO).ToList(), opt => opt.Items["Url"] = Url);
            ViewBag.CategoriaSelecionada     = CategoriaSelecionada;
            ViewBag.CategoriaSelecionadaNome = CategoriaSelecionadaNome;
            if (CategoriaSelecionada != null)
            {
                model.Categoria = (int)CategoriaSelecionada;
            }

            if (grupoId != null)
            {
                ViewBag.Empresa = new SelectList(_contratanteService.ListarTodosPorUsuario(usuarioId), "ID", "RAZAO_SOCIAL", Empresa);
            }
            ViewBag.SolicitaDocumentos     = solicitaDocumentos;
            ViewBag.solicitaFichaCadastral = solicitaFichaCadastral;
            ViewBag.Compras = new SelectList(_organizacaoComprasService.ListarTodosPorIdContratante(contratanteId), "ID", "ORG_COMPRAS_DSC");
            ViewBag.Robo    = false;

            ValidarFormularioCriacaoSolicitacao(model, Acao);
            ModelState.Remove("Email");
            if (ModelState.IsValid)
            {
                SOLICITACAO solicitacao;
                var         papelAtual = _papelService.BuscarPorContratanteETipoPapel(contratanteId, (int)EnumTiposPapel.Solicitante).ID;

                //INCLUSÃO DO FORNECEDOR
                switch (Acao)
                {
                case "Incluir":
                    string cnpj = string.Empty;
                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)
                    {
                        cnpj = model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");
                    }

                    CadastrarSolicitacaoDTO modeloCadastro = new CadastrarSolicitacaoDTO()
                    {
                        TipoCadastro   = model.TipoCadastro,
                        TipoFornecedor = model.TipoFornecedor,
                        ContratanteId  = contratanteId,
                        UsuarioId      = usuarioId,
                        CategoriaId    = model.Categoria,
                        ComprasId      = model.Compras,
                        CNPJ           = cnpj,
                        ContatoNome    = model.NomeContato,
                        ContatoEmail   = model.Email,
                        Telefone       = model.Telefone,
                        Assunto        = System.Web.HttpContext.Current.Application["NomeSistema"].ToString(),
                        RazaoSocial    = model.RazaoSocial,
                        CPF            = cnpj,
                        DataNascimento = model.DataNascimento
                    };
                    solicitacao = _solicitacaoService.CadastrarSolicitacaoPreCadastro(model.ID, modeloCadastro);

                    ViewBag.SolicitacaoId = solicitacao.ID;

                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)     // SE NACIONAL
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aguardando, usuarioId);
                        ViewBag.Robo = true;

                        return(View(model));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;

                case "Continuar":
                    solicitacao = _solicitacaoService.BuscarPorIdComSolicitacaoCadastroFornecedor((int)SolicitacaoID);
                    var robo = solicitacao.ROBO.FirstOrDefault();

                    if (robo != null)
                    {
                        if (robo.RF_CONSULTA_DTHR != null && robo.SINT_CONSULTA_DTHR != null && robo.SN_CONSULTA_DTHR != null)
                        {
                            solicitacao.ROBO_EXECUTADO = true;
                            _solicitacaoService.Alterar(solicitacao);
                        }
                    }

                    if (model.TipoCadastro == (int)EnumTiposPreenchimento.Fornecedor)
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, usuarioId);
                        return(RedirectToAction("EnviarSolicitacao", "PreCadastroFornecedor", new
                        {
                            chaveUrl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key),
                            nomeContato = model.NomeContato,
                            emailContato = model.Email,
                            contratanteId = Empresa,
                            documentoPfPj = model.CNPJ
                        }));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;
                case "Cancelar":
                    solicitacao = _solicitacaoService.BuscarPorIdIncluindoFluxo((int)SolicitacaoID);

                    _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, 6, usuarioId);

                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "Solicitação Cancelada!" }));
                    //break;
                }
            }
            if (model == null)
            {
                return(HttpNotFound());
            }

            return(View(model));
        }