public JsonResult ConsultaSapiens(string CPFCNPJ, int codCliente) { // VERIFICAR SE O CNPJ ou CPF é de um cliente existente using (var clienteSapiensBLL = new ClienteSapiensBLL()) { var carSapBLL = new CaracteristicaSapiensBLL(); var historicosBLL = new HistoricoSolicitacaoBLL(); bool pertenceAFilial = false; try { int codFilial = Convert.ToInt32(Session["CodigoFilial"]); ClienteSapiens cliente = null; var consultaReceitaBLL = new ConsultaReceitaBLL(); // RETIRA OS CARACTERES ESPECIAIS. CPFCNPJ = Regex.Replace(CPFCNPJ, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)", ""); #region Valida CPF e CNPJ if (!ValidaDocumento(CPFCNPJ)) { return Json(new { erro = "CPF ou CNPJ Inválido" }, JsonRequestBehavior.DenyGet); } #endregion List<ClienteSapiens> clientesSapiens = null; if (codCliente != 0) { clientesSapiens = clienteSapiensBLL.ObterTodosPorCodigo(codCliente, ref clientes); } else { if (CPFCNPJ.Length != 0) { clientesSapiens = clienteSapiensBLL.ObterPorCPFCNPJ(CPFCNPJ, ref clientes); //pega todas as definições deste CPFCNPJ } else { throw new Exception("Nenhum dado encontrado para esta consulta."); } } // se tiver mais de 1, dar a opção de importar, dando prioridade para a matriz if (clientesSapiens.Count > 0) { // verifica se o codFil de algum dos clientes com o CPFCNPJ passado é igual ao do usuário var queryClienteMesmaFilial = from c in clientesSapiens where c.codfil == codFilial select c.codcli; if (queryClienteMesmaFilial.Count() != 0) { pertenceAFilial = true; cliente = clienteSapiensBLL.ObterPorCodigos(queryClienteMesmaFilial.First(), codFilial); //Session["Cliente"] = cliente; } else { // se o cliente existe, mas não tem registro nesta filial, sugerir a DUPLICAÇÃO // se existir na matriz, usar este, senão, pegar o primeiro var matrix = from c in clientesSapiens where c.codfil == 1 select c; if (matrix.Count() > 0) { cliente = matrix.First(); } else { cliente = clientesSapiens[0]; } cliente = clienteSapiensBLL.ObterPorCodigos(cliente.codcli, cliente.codfil); //Session["Cliente"] = cliente; // sugerir a duplicação do cliente escolhido. return Json(new { msg = "Este cliente já possui registro em outra filial." }, JsonRequestBehavior.DenyGet); } } var solicitacaoBLL = new SolicitacaoBLL(); //obter a data da ultima consulta ao serasa. if (cliente != null) { // se entrar aqui, é porque o cliente foi encontrado na base do sapiens, ou seja, é ou foi cliente. #region retorna um JSON com o resultado da consulta do Sapiens, para preencher todos os campos da solicitação. #region Verificar se já existe solicitação para o cliente encontrado. var solicitacoes = solicitacaoBLL.ObterSolicitacoesPorCodFilial(codFilial); var queryClienteSolicitacao = from sol in solicitacoes where sol.CodCliente == cliente.codcli select sol; var solicitacaoRecente = queryClienteSolicitacao.LastOrDefault(); if (solicitacaoRecente != null) { //var historicoSolicitacaoRecente = historicosBLL.ObterPorCodSolicitacao(solicitacaoRecente.Codigo).LastOrDefault(); var historicoSolicitacaoRecente = solicitacaoRecente.Historicos.OrderBy(h => h.CodHistoricoSolicitacao).LastOrDefault(); // Gilberto - 23/11/2015 - 09:51:00 if (historicoSolicitacaoRecente != null) { var situacao = historicoSolicitacaoRecente.CodSituacaoSolicitacao; var temSolicitacaoAberta = situacao == Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento) || situacao == Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao) || situacao == Convert.ToInt32(SituacaoSolicitacao.NaoIntegrada); //já existe solicitação para este cliente. if (temSolicitacaoAberta) { return Json(new { erro = "Já existe uma solicitação aberta para o cliente pesquisado." }, JsonRequestBehavior.DenyGet); } } else { return Json(new { erro = "Já existe uma solicitação para o cliente pesquisado. (aguardando fechamento)" }, JsonRequestBehavior.DenyGet); } } #endregion var s = Session["Solicitacao"] as Solicitacao; s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Alteracao); s.Cliente = String.IsNullOrEmpty(cliente.nomcli) ? cliente.apecli : cliente.nomcli; s.CodCliente = cliente.codcli; s.DatAlteracao = DateTime.Now; // se pertencer a filial, copiar também os dados de endereços de cobrança e entrega, contatos, referencias e socios ConsultaReceita dadosUltimaConsulta = null; DateTime dataUltimaConsulta = new DateTime(1983, 4, 28); solicitacaoBLL.PreencheDadosSolicitacaoUsandoSapiens(s, cliente, pertenceAFilial); if (cliente.cgccpf != null && cliente.cgccpf != 0) { var cgccpf = cliente.cgccpf.ToString(); cgccpf = AjustaCPFCNPJComZerosNaFrente(cgccpf); dadosUltimaConsulta = consultaReceitaBLL.ObterDadosUltimaConsultaPorDocumento(cgccpf); dataUltimaConsulta = dadosUltimaConsulta != null ? dadosUltimaConsulta.Datcon : new DateTime(1983, 4, 28); } Session["Solicitacao"] = s; var clienteSapiensJson = new { /* DADOS PRINCIPAIS */ CPFCNPJ = cliente.cgccpf.ToString(), TipoCliente = cliente.tipcli as string, CodCliente = cliente.codcli, SituacaoReceita = dadosUltimaConsulta == null ? "" : dadosUltimaConsulta.Sitrec as string, SituacaoSin = dadosUltimaConsulta == null ? "" : dadosUltimaConsulta.Sitsin as string, NomeFantasia = cliente.apecli as string, RazaoSocial = cliente.nomcli as string, DataUltimaConsulta = dataUltimaConsulta != null ? dataUltimaConsulta : new DateTime(), Logradouro = cliente.endcli as string, Numero = cliente.nencli as string, Complemento = cliente.cplend as string, Bairro = cliente.baicli as string, Cidade = cliente.cidcli as string, UF = cliente.sigufs as string, CEP = cliente.cepcli as int?, Telefone = cliente.foncli as string, Telefone2 = cliente.foncl2 as string, Telefone3 = cliente.foncl3 as string, Telefone4 = cliente.foncl4 as string, Telefone5 = cliente.foncl5 as string, NumeroFax = cliente.faxcli as string, DataAbertura = cliente.datcad as DateTime?, Ativo = cliente.sitcli as string, InscricaoEstadualSin = cliente.insest as string, CodTipoMercado = cliente.tipmer as string, CodTipoEmpresa = cliente.tipemp as short?, CodTipoDireitoPropriedade = cliente.tipemc as short?, CodRamoAtividade = cliente.codram as string, CodRamoFiscal = cliente.usuRamofiscal as string, CodRota = cliente.codroe as string, CodSubRota = cliente.codsro as string, CodGrupoEmpresa = cliente.codgre as short?, CodIBGE = cliente.zipcod as string, TributaICMS = cliente.triicm as string, CobraCliente = cliente.usuCobcli as string, ExpurgaDaInadimplencia = cliente.usuExpina as string, ObservacaoMotivoSituacao = cliente.obsmot as string, EmailNFE = cliente.emanfe == null ? "" : cliente.emanfe.IndexOf(";") != -1 ? cliente.emanfe.Split(';')[0] : cliente.emanfe, EmailNFE2 = cliente.emanfe == null ? "" : cliente.emanfe.IndexOf(";") != -1 ? cliente.emanfe.Split(';')[1] : "", /* DEFINIÇÕES*/ VlrLimite = cliente.Definicoes[0] != null ? cliente.Definicoes[0].limite.ToString() : "", NomCategoria = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Catcli.ToString() : "-", CodFormaDePagamento = cliente.Definicoes[0].Codfpg != 0 ? cliente.Definicoes[0].Codfpg.ToString() : "-", CodGrupoContasAReceber = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Codcrp : "-", IndAceitaFaturamentoParcialPedido = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Acepar : "-", IndLimiteAprovado = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Limapr : "-", CodCondicaoPagamento = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Codcpg : "-", CodRepresentante = cliente.Definicoes[0].Codrep != 0 ? cliente.Definicoes[0].Codrep.ToString() : "-", CodRegiaoDeVendas = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Codrve : "-", RecJurosMoraMes = cliente.Definicoes[0].Recjmm != 0 ? cliente.Definicoes[0].Recjmm.ToString() : "-", TipJuros = cliente.Definicoes[0] != null ? cliente.Definicoes[0].Rectjr : "-", IndCobrarTaxaBanco = cliente.Definicoes[0] != null ? cliente.Definicoes[0].UsuCbtban : "-", IndEmiteBoleto = cliente.Definicoes[0] != null ? cliente.Definicoes[0].UsuEmitebol : "-", IndDescontoFinanceiro = "0", }; return Json(clienteSapiensJson, JsonRequestBehavior.DenyGet); #endregion } else { // SE ENTRAR AQUI, TRATA-SE DE UM NOVO CLIENTE. var s = Session["Solicitacao"] as Solicitacao; s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Inclusao); s.CodCliente = 0; // TODO: Testar se um possível BUG se origina aqui.(Cliente existente com código 0) s.DatAlteracao = DateTime.Now; s.DadosPrincipaisSolicitacao.Last().Ativo = "A"; Session["Solicitacao"] = s; return Json(new { erro = "Cliente não encontrado.", CodCliente = 0 }, JsonRequestBehavior.DenyGet); } } catch (Exception ex) { return Json(new { erro = ex.Message }, JsonRequestBehavior.DenyGet); } }// fim do using }
public JsonResult InativarCliente(int codigo, string txtJustificativa) { try { var s = Session["Solicitacao"] as Solicitacao; var cliente = new ClienteSapiensBLL().ObterPorCodigo(codigo); using (var solBLL = new SolicitacaoBLL()) { var codFilial = Convert.ToInt32(Session["CodigoFilial"]); var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; solBLL.PreencheDadosSolicitacaoUsandoSapiens(s, cliente, false); //s.Definicoes[0].VlrLimite = "R$ " + s.Definicoes[0].VlrLimite + ",00"; s.Definicoes[0].VlrLimite = String.Format("{0:c}", Convert.ToInt32(s.Definicoes[0].VlrLimite)); s.CodCliente = cliente.codcli; s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Inativacao); s.CodFilial = codFilial; if (string.IsNullOrEmpty(txtJustificativa)) { s.TxtJustificativa = "Solicito Inativação do Cliente " + cliente.codcli; } else { s.TxtJustificativa = txtJustificativa; } s.CodUsuarioSolicitacao = usuario.Codusu; s.DatCriacao = DateTime.Now; #region Teste Tipo Cliente var tam = cliente.cgccpf.ToString().Length; //tamanho do documento do cliente no banco // se o tipo cliente não for nulo nem vazio, posso testar o tipo o corrigir o doc. if (!string.IsNullOrEmpty(cliente.tipcli)) { if (cliente.tipcli.ToUpper() == "F") { // hummmmmm o que temos aqui... uma GAMBIARRA FULL HD 1024 pixels! // ( coluna numérica do oracle foi traduzida para long, então não vem o 0 na frente do CPF. ) // isso se chama "Dançar conforme a música" if (tam < 11) { if (tam == 10) { s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "0" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } else if (tam == 9) { s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "00" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } else if (tam == 8) { s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "000" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } } } else if (cliente.tipcli.ToUpper() == "J") { //GAMBIARRA FULL LEVEL 2 ( coluna numérica do oracle foi traduzida para long, então não vem o 0 na frente do CNPJ..) if (tam < 14) { if (tam == 13) { //$cpfcnpj.val("0" + $cpfcnpj.val()); s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "0" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } else if (tam == 12) { //$cpfcnpj.val("00" + $cpfcnpj.val()); s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "00" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } else if (tam == 11) { //$cpfcnpj.val("000" + $cpfcnpj.val()); s.DadosPrincipaisSolicitacao.Last().CPFCNPJ = "000" + s.DadosPrincipaisSolicitacao.Last().CPFCNPJ; } } } // FIM DO TESTE TIPO CLIENTE } #endregion s.DadosPrincipaisSolicitacao.Last().Ativo = "I"; SalvarDadoPrincipal(s.DadosPrincipaisSolicitacao.Last()); // além de salvar os dados principais, salva as listas em cascata. SalvarDefinicoes(s.Definicoes.Last()); EnviarParaAprovacao(s.TxtJustificativa); return Json(new { codigo = s.Codigo , msg = "Solicitacao " + s.Codigo +" foi enviada para aprovação"}, JsonRequestBehavior.DenyGet); } } catch (Exception ex) { return Json(new { erro = ex.Message }, JsonRequestBehavior.DenyGet); } }