public ActionResult SalvarDadoPrincipal(DadoPrincipalSolicitacao dps) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(Helpers.ControlAccessConfig.NovaSolicitacao)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } Solicitacao s = Session["Solicitacao"] as Solicitacao; // pegar o valor das dropdowns com jquery, e adicionar no "data" da request ajax. FEITO. 11/11/2014 #region preenche variáveis que não podem ficar nulas. if (String.IsNullOrEmpty(dps.Telefone)) { dps.Telefone = ""; } else { dps.Telefone = Regex.Replace(dps.Telefone, @"(\)+)|(\(+)|(\-+)", ""); if (dps.Telefone[2] == '0') { var ddd = dps.Telefone.Substring(0, 2); var num = dps.Telefone.Substring(2); dps.Telefone = ddd + num; } } dps.Telefone2 = String.IsNullOrEmpty(dps.Telefone2) ? "" : dps.Telefone2; dps.Telefone3 = String.IsNullOrEmpty(dps.Telefone3) ? "" : dps.Telefone3; dps.Telefone4 = String.IsNullOrEmpty(dps.Telefone4) ? "" : dps.Telefone4; dps.Telefone5 = String.IsNullOrEmpty(dps.Telefone5) ? "" : dps.Telefone5; //dps.ContribuinteICMS = String.IsNullOrEmpty(dps.ContribuinteICMS) ? "" : dps.ContribuinteICMS; var IE = String.IsNullOrEmpty(dps.InscricaoEstadual) ? "" : dps.InscricaoEstadual; dps.ContribuinteICMS = IE.Trim().ToLower() == "isento" || IE.Trim().ToLower() == "" ? "N" : "S"; dps.TributaICMS = "S"; dps.CodGrupoEmpresa = String.IsNullOrEmpty(dps.CodGrupoEmpresa) ? "" : dps.CodGrupoEmpresa; dps.NumeroFax = String.IsNullOrEmpty(dps.NumeroFax) ? "" : dps.NumeroFax; dps.PontoDeReferencia = string.IsNullOrEmpty(dps.PontoDeReferencia) ? "" : dps.PontoDeReferencia; dps.CodClienteDadoPrincipalSol = s.CodCliente; dps.TipoMercado = "I"; dps.CobraCliente = "S"; dps.ExpurgaDaInadimplencia = "N"; dps.ObservacaoMotivoSituacao = string.IsNullOrEmpty(dps.ObservacaoMotivoSituacao) ? "" : dps.ObservacaoMotivoSituacao; dps.TipoDireitoPropriedadeEmpresa = "1"; s.CodFilial = Convert.ToInt32(Session["CodigoFilial"]); // obter a filial no sapiens... OK #endregion try { var tiposDeAlteracao = dps.Alteracoes; //salvar os tipos de alteração. var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; s.CodUsuarioSolicitacao = usuario.Codusu; s.DatAlteracao = DateTime.Now; using (SolicitacaoBLL solicitacaoBLL = new SolicitacaoBLL()) { DadoPrincipalSolicitacaoBLL dadoPrincipalBLL = new DadoPrincipalSolicitacaoBLL(); HistoricoSolicitacaoBLL historicoBLL = new HistoricoSolicitacaoBLL(); DocumentoAnexadoSolicitacaoBLL docsBLL = new DocumentoAnexadoSolicitacaoBLL(); TipoAlteracaoBLL tipAltBLL = new TipoAlteracaoBLL(); var justificativaArmazenada = Session["TxtJustificativa"] as string; s.Usuario = usuario.Nomusu; s.DatCriacao = DateTime.Now; s.TxtJustificativa = !String.IsNullOrEmpty(s.TxtJustificativa) ? s.TxtJustificativa : !String.IsNullOrEmpty(justificativaArmazenada) ? justificativaArmazenada : ""; // AQUI GERA O TICKET SE AINDA NÃO HOUVER DADOS DA SOLICITAÇÃO -> OK if (dps.CodigoDadoPrincipal == 0) { //------------------------------------------------------------------------ if (s.CodCliente == 0) { s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Inclusao); } else // se o código do cliente não for 0, pode ser duplicação ou alteração. { if (s.CodTipoSolicitacao != 3) // se vem da duplicação, o codTipoSolicitacao foi definido lá { s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Alteracao); } } //------------------------------------------------------------------------ #region Salvar o histórico da solicitação se não existir ( MOSTROU-SE DESNECESSÁRIO ) //var historico = s.Historicos.LastOrDefault(); //if (historico == null) //{ // // Inserir como 'DIGITANDO' (código 1) // var h = new HistoricoSolicitacao(); // h.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento); // s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento); // h.Solicitacao = s; // s.Historicos.Add(h); //} #endregion s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento); solicitacaoBLL.SalvarOuAtualizar(s); if (tiposDeAlteracao != null) { foreach (var t in tiposDeAlteracao) { var codTipoAlteracao = Convert.ToInt32(t); var tipo = tipAltBLL.ObterPorCodigo(codTipoAlteracao); if (!s.TiposAlteracao.Contains(tipo)) { s.TiposAlteracao.Add(tipo); } //se o tipo de alteração que eu estou tentando gravar já existir, não gravar. } } solicitacaoBLL.Atualizar(s); dps.Solicitacao = s; // atribui a chave estrageira (solicitação) ao dado principal. dps.EmailNFE = String.IsNullOrEmpty(dps.EmailNFE) ? "" : dps.EmailNFE;// +";" + dps.EmailNFE2; dadoPrincipalBLL.Salvar(dps); // salva os dados principais. } else { var dadoPrincipal = dadoPrincipalBLL.ObterPorCodigo(dps.CodigoDadoPrincipal); dadoPrincipal.Ativo = dps.Ativo; dadoPrincipal.Bairro = dps.Bairro; dadoPrincipal.CEP = dps.CEP; dadoPrincipal.Cidade = dps.Cidade; dadoPrincipal.CobraCliente = dps.CobraCliente; dadoPrincipal.CodClienteDadoPrincipalSol = dps.CodClienteDadoPrincipalSol; dadoPrincipal.CodGrupoEmpresa = dps.CodGrupoEmpresa; dadoPrincipal.CodIBGE = dps.CodIBGE; dadoPrincipal.CodigoDadoPrincipal = dps.CodigoDadoPrincipal; dadoPrincipal.CodRamoAtividade = dps.CodRamoAtividade; dadoPrincipal.CodRota = dps.CodRota; dadoPrincipal.CodSubRota = dps.CodSubRota; dadoPrincipal.Complemento = dps.Complemento; dadoPrincipal.ContribuinteICMS = dps.ContribuinteICMS; dadoPrincipal.CPFCNPJ = dps.CPFCNPJ; dadoPrincipal.DataUltimaConsulta = dps.DataUltimaConsulta; dadoPrincipal.EmailNFE2 = dps.EmailNFE2; dadoPrincipal.EmailNFE = dps.EmailNFE + ";" + dps.EmailNFE2; dadoPrincipal.ExpurgaDaInadimplencia = dps.ExpurgaDaInadimplencia; dadoPrincipal.InscricaoEstadual = dps.InscricaoEstadual; dadoPrincipal.Isento = dps.Isento; dadoPrincipal.Logradouro = dps.Logradouro; dadoPrincipal.NomeFantasia = dps.NomeFantasia; dadoPrincipal.Numero = dps.Numero; dadoPrincipal.NumeroFax = dps.NumeroFax; dadoPrincipal.ObservacaoMotivoSituacao = dps.ObservacaoMotivoSituacao; dadoPrincipal.PontoDeReferencia = dps.PontoDeReferencia; dadoPrincipal.RamoFiscal = dps.RamoFiscal; dadoPrincipal.RazaoSocial = dps.RazaoSocial; dadoPrincipal.SituacaoReceitaFederal = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaFederal) ? "Consulta não retornou dados" : dadoPrincipal.SituacaoReceitaFederal; dadoPrincipal.SituacaoReceitaEstadual = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaEstadual) ? "Consulta não retornou dados" : dadoPrincipal.SituacaoReceitaEstadual; dadoPrincipal.Solicitacao = s; dadoPrincipal.Telefone = dps.Telefone; dadoPrincipal.Telefone2 = dps.Telefone2; dadoPrincipal.Telefone3 = dps.Telefone3; dadoPrincipal.Telefone4 = dps.Telefone4; dadoPrincipal.Telefone5 = dps.Telefone5; dadoPrincipal.TipoCliente = dps.TipoCliente; dadoPrincipal.TipoDireitoPropriedadeEmpresa = dps.TipoDireitoPropriedadeEmpresa; dadoPrincipal.TipoEmpresa = dps.TipoEmpresa; dadoPrincipal.TipoMercado = dps.TipoMercado; dadoPrincipal.TributaICMS = dps.TributaICMS; dadoPrincipal.UF = dps.UF; solicitacaoBLL.SalvarOuAtualizar(s);// AQUI GERA O TICKET -> OK ///////////////////// if (tiposDeAlteracao != null) { foreach (var t in tiposDeAlteracao) { var codTipoAlteracao = Convert.ToInt32(t); var tipo = tipAltBLL.ObterPorCodigo(codTipoAlteracao); if (!s.TiposAlteracao.Contains(tipo)) { s.TiposAlteracao.Add(tipo); } } solicitacaoBLL.Atualizar(s); } ///////////////////// dps.Solicitacao = s; dadoPrincipalBLL.Atualizar(dadoPrincipal); } s.DadosPrincipaisSolicitacao.Clear(); s.DadosPrincipaisSolicitacao.Add(dps); // as vezes reclama de session aberta, solução -> trazer do banco , preencher os dados e atualizar. } Session["Solicitacao"] = s; new SolicitacaoBLL().ObterNomes(new List<Solicitacao>() { s }); return Json(new { msg = "Dados Principais gravados com sucesso. ticket nº: " + s.Codigo, codSol = s.Codigo, datCriacao = s.DatCriacao.ToShortDateString(), filial = s.Filial, status = s.Situacao, tipo = s.Tipo }, JsonRequestBehavior.DenyGet); } catch (Exception ex) { return Json(new { msg = "Erro ao tentar gravar dados principais: " + ex.Message }, JsonRequestBehavior.DenyGet); } }