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