예제 #1
0
 public void GravaRoboReceita(RoboReceitaCNPJ roboReceita, ref ROBO robo)
 {
     try
     {
         MontaRobo(roboReceita, robo);
     }
     catch (Exception ex)
     {
         Log.Error(string.Format("Error ao gravar os dados da Receita Federal", robo.ID), ex);
     }
 }
예제 #2
0
        public RoboReceitaCNPJ CarregaRoboCNPJ(string cnpj, string path)
        {
            RoboReceitaCNPJ robo = new RoboReceitaCNPJ();

            try
            {
                if (!Validacao.ValidaCNPJ(cnpj))
                {
                    robo.Code         = 0;
                    robo.Data         = new Data();
                    robo.Data.Message = "CNPJ Inválido!";
                    return(robo);
                }

                var    ativarConsultasFake = Convert.ToBoolean(ConfigurationManager.AppSettings["AtivarConsultasFake"]);
                string textResult          = string.Empty;

                if (ativarConsultasFake)
                {
                    textResult = ReceitaFederalCNPJ_fake(path);
                }
                else
                {
                    string          token    = ConfigurationManager.AppSettings["SintegraToken"];
                    string          cont     = "7";
                    string          url      = String.Format("https://webservice.keyconsultas.net/receita/cnpj/?cnpj={0}&token={1}&cont={2}", cnpj, token, cont);
                    var             request  = (HttpWebRequest)WebRequest.Create(url);
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    Stream          stream   = response.GetResponseStream();
                    StreamReader    reader   = new StreamReader(stream);
                    textResult = reader.ReadToEnd();
                }

                robo = JsonConvert.DeserializeObject <RoboReceitaCNPJ>(textResult);

                return(robo);
            }
            catch
            {
                robo.Code         = 0;
                robo.Data         = new Data();
                robo.Data.Message = "Não foi possível acessar o serviço de consulta dos Orgãos Públicos! Tente novamente.";
                return(robo);
            }
        }
예제 #3
0
 public void MontaCssMessagem(RoboReceitaCNPJ roboReceita)
 {
     if (roboReceita.Code == 1)
     {
         roboReceita.cssCor       = (roboReceita.Data.SituacaoCadastral.ToUpper() == "ATIVA" ? "success" : "danger");
         roboReceita.Data.Message = roboReceita.Code + " - Consulta Realizada com sucesso. (Situação Cadastral: " + roboReceita.Data.SituacaoCadastral + ") &nbsp;&nbsp;&nbsp;<i class='fa fa-arrow-circle-down'></i>";
     }
     else if (roboReceita.Code == 2)
     {
         roboReceita.cssCor       = "warning";
         roboReceita.Data.Message = roboReceita.Code + " - " + roboReceita.Data.Message;
     }
     else
     {
         roboReceita.cssCor       = "danger";
         roboReceita.Data.Message = roboReceita.Code + " - " + roboReceita.Data.Message;
     }
 }
예제 #4
0
        public RoboReceitaCNPJ MontaRoboView(ROBO robo)
        {
            RoboReceitaCNPJ roboReceita = new RoboReceitaCNPJ();

            roboReceita.Data = new Data();

            if (robo != null)
            {
                roboReceita.Data.DataEmissao = robo.RF_CONSULTA_DTHR.HasValue ? robo.RF_CONSULTA_DTHR.Value.ToString("dd/MM/yyyy HH:mm:ss") : null;
                roboReceita.DataConsulta     = robo.RF_CONSULTA_DTHR;
                roboReceita.Code             = robo.RF_CODE_ROBO;
                roboReceita.Data.CNPJ        = robo.CNPJ;
                roboReceita.Data.RazaoSocial = robo.RECEITA_FEDERAL_RAZAO_SOCIAL;
                roboReceita.Data.Bairro      = robo.RF_BAIRRO;
                roboReceita.Data.CEP         = robo.RF_CEP;
                roboReceita.HTML             = robo.RF_CERTIFICADO_HTML;
                roboReceita.Data.AtividadeEconomicaPrincipal = robo.RF_CNAE_COD_PRINCIPAL + " - " + robo.RF_CNAE_DSC_PRINCIPAL;
                roboReceita.Data.DataAbertura     = robo.RF_CNPJ_DT_ABERTURA.HasValue ? robo.RF_CNPJ_DT_ABERTURA.Value.ToString("dd/MM/yyyy"): null;
                roboReceita.Data.NaturezaJuridica = robo.RF_COD_NATUREZA_JURIDICA + " - " + robo.RF_DSC_NATUREZA_JURIDICA;

                roboReceita.Data.Complemento             = robo.RF_COMPLEMENTO;
                roboReceita.Data.Logradouro              = robo.RF_LOGRADOURO;
                roboReceita.Data.MatrizFilial            = robo.RF_MATRIZ_FILIAL;
                roboReceita.Data.MotivoSituacaoCadastral = robo.RF_MOTIVO_CNPJ_SITU_CADASTRAL;
                roboReceita.Data.Municipio             = robo.RF_MUNICIPIO;
                roboReceita.Data.NomeFantasia          = robo.RF_NOME_FANTASIA;
                roboReceita.Data.Numero                = robo.RF_NUMERO;
                roboReceita.Data.SituacaoCadastral     = robo.RF_SIT_CADASTRAL_CNPJ;
                roboReceita.Data.DataSituacaoCadastral = robo.RF_SIT_CADSTRAL_CNPJ_DT.HasValue ? robo.RF_SIT_CADSTRAL_CNPJ_DT.Value.ToString("dd/MM/yyyy") : null;
                roboReceita.Data.SituacaoEspecial      = robo.RF_SIT_ESPECIAL_CNPJ;
                roboReceita.Data.DataSituacaoEspecial  = robo.RF_SIT_ESPECIAL_CNPJ_DT.HasValue ? robo.RF_SIT_ESPECIAL_CNPJ_DT.Value.ToString("dd/MM/yyyy") : null;
                roboReceita.Data.UF = robo.RF_UF;

                return(roboReceita);
            }

            return(null);
        }
예제 #5
0
        private void MontaRobo(RoboReceitaCNPJ roboReceita, ROBO robo)
        {
            if (roboReceita != null)
            {
                if (roboReceita.Code == 1)
                {
                    #region Parse de Dados do Robo

                    string   roboHtmlFormatado = roboReceita.HTML;
                    string   asAscii           = _metodosGerais.EncodeCodigoHtml(roboHtmlFormatado);
                    DateTime dataSituacaoCadastral;
                    DateTime dataSituacaocadastralEspecial;

                    DateTime.TryParse(roboReceita.Data.DataSituacaoCadastral, out dataSituacaoCadastral);
                    DateTime.TryParse(roboReceita.Data.DataSituacaoEspecial, out dataSituacaocadastralEspecial);

                    #endregion

                    robo.ROBO_DT_EXEC = DateTime.Now;
                    robo.RF_CODE_ROBO = roboReceita.Code;
                    robo.CNPJ         = roboReceita.Data.CNPJ;
                    robo.RECEITA_FEDERAL_RAZAO_SOCIAL = roboReceita.Data.RazaoSocial;
                    robo.RF_BAIRRO                     = roboReceita.Data.Bairro;
                    robo.RF_CEP                        = roboReceita.Data.CEP;
                    robo.RF_CERTIFICADO_HTML           = asAscii.Replace("images/brasao2.gif", "http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/images/brasao2.gif");
                    robo.RF_CNAE_COD_PRINCIPAL         = (roboReceita.Data.AtividadeEconomicaPrincipal.Length >= 10) ? roboReceita.Data.AtividadeEconomicaPrincipal.Substring(0, 10).Replace(".", "").Replace("-", "") : roboReceita.Data.AtividadeEconomicaPrincipal;
                    robo.RF_CNAE_DSC_PRINCIPAL         = roboReceita.Data.AtividadeEconomicaPrincipal.Split(new string[] { " - " }, StringSplitOptions.None).Last().ToString();
                    robo.RF_CNPJ_DT_ABERTURA           = DateTime.Parse(roboReceita.Data.DataAbertura);
                    robo.RF_COD_NATUREZA_JURIDICA      = roboReceita.Data.NaturezaJuridica == "" ? "" : roboReceita.Data.NaturezaJuridica.Substring(0, 6).Replace("-", "").TrimEnd();
                    robo.RF_COMPLEMENTO                = roboReceita.Data.Complemento;
                    robo.RF_CONSULTA_DTHR              = DateTime.Now;
                    robo.RF_CONTADOR_TENTATIVA         = 0;
                    robo.RF_DSC_NATUREZA_JURIDICA      = roboReceita.Data.NaturezaJuridica.Split(new string[] { " - " }, StringSplitOptions.None).Last().ToString();
                    robo.RF_LOGRADOURO                 = roboReceita.Data.Logradouro;
                    robo.RF_MATRIZ_FILIAL              = roboReceita.Data.MatrizFilial;
                    robo.RF_MOTIVO_CNPJ_SITU_CADASTRAL = roboReceita.Data.MotivoSituacaoCadastral;
                    robo.RF_MUNICIPIO                  = roboReceita.Data.Municipio;
                    robo.RF_NOME_FANTASIA              = roboReceita.Data.NomeFantasia;
                    robo.RF_NUMERO                     = roboReceita.Data.Numero;
                    robo.RF_SIT_CADASTRAL_CNPJ         = roboReceita.Data.SituacaoCadastral;
                    robo.RF_SIT_CADSTRAL_CNPJ_DT       = dataSituacaoCadastral;
                    robo.RF_SIT_ESPECIAL_CNPJ          = roboReceita.Data.SituacaoEspecial;
                    robo.RF_SIT_ESPECIAL_CNPJ_DT       = dataSituacaocadastralEspecial;
                    robo.RF_UF = roboReceita.Data.UF;
                }
                else
                {
                    int?contador = robo.RF_CONTADOR_TENTATIVA;
                    if (!contador.HasValue)
                    {
                        contador = 0;
                    }

                    if (roboReceita.Code == 2 || roboReceita.Code == 3)
                    {
                        robo.ROBO_DT_EXEC          = DateTime.Now;
                        robo.RF_CODE_ROBO          = roboReceita.Code;
                        robo.RF_SIT_CADASTRAL_CNPJ = roboReceita.Data.Message;
                        robo.RF_CONSULTA_DTHR      = DateTime.Now;
                        robo.RF_CONTADOR_TENTATIVA = 0;
                    }
                    else
                    {
                        contador                  += 1;
                        robo.ROBO_DT_EXEC          = DateTime.Now;
                        robo.RF_CONTADOR_TENTATIVA = contador;
                    }
                }
            }
        }
        static void ChamaRobo(int pjpfId)
        {
            try
            {
                WebForLinkContexto db = new WebForLinkContexto();

                var pjpf = BuscarFonecedorBaseParaRobo(db, pjpfId);

                RoboReceitaCNPJ roboReceita    = new RoboReceitaCNPJ();
                RoboSintegra    roboSintegra   = new RoboSintegra();
                RoboSimples     roboSimples    = new RoboSimples();
                RoboReceitaCPF  roboReceitaCpf = new RoboReceitaCPF();

                if (pjpf.ROBO == null)
                {
                    pjpf.ROBO = new ROBO();
                }

                bool validaReceita  = (pjpf.ROBO.ID == 0 || pjpf.ROBO.RF_CONSULTA_DTHR == null);
                bool validaSintegra = (pjpf.ROBO.ID == 0 || pjpf.ROBO.SINT_CONSULTA_DTHR == null);
                bool validaSimples  = (pjpf.ROBO.ID == 0 || pjpf.ROBO.SN_CONSULTA_DTHR == null);

                if (pjpf.PJPF_TIPO == 1)
                {
                    if (validaReceita && pjpf.CNPJ != null)
                    {
                        roboReceita = roboReceita.CarregaRoboCNPJ(pjpf.CNPJ, path);

                        var             robo            = pjpf.ROBO;
                        RoboReceitaCNPJ roboReceitaCnpj = new RoboReceitaCNPJ();
                        roboReceitaCnpj.GravaRoboReceita(roboReceita, ref robo);

                        GravaLog(db, roboReceita.Code, roboReceita.Data.Message, EnumRobo.ReceitaFederal.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }

                    if (validaSintegra && pjpf.ROBO.RF_UF != null)
                    {
                        roboSintegra = roboSintegra.CarregaSintegra(pjpf.ROBO.RF_UF, pjpf.CNPJ, path);

                        var          robo            = pjpf.ROBO;
                        RoboSintegra roboSintegraObj = new RoboSintegra();
                        roboSintegraObj.GravaRoboSintegra(roboSintegra, ref robo);

                        GravaLog(db, roboSintegra.Code, roboSintegra.Data.Message, EnumRobo.Sintegra.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }

                    if (validaSimples && pjpf.CNPJ != null)
                    {
                        roboSimples = roboSimples.CarregaSimplesCNPJ(pjpf.CNPJ, path);

                        var         robo           = pjpf.ROBO;
                        RoboSimples roboSimplesObj = new RoboSimples();
                        roboSimplesObj.GravaRoboSimples(roboSimples, ref robo);

                        GravaLog(db, roboSimples.Code, roboSimples.Data.Message, EnumRobo.SimplesNacional.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }
                }

                // Pessoa Fisica
                if (pjpf.PJPF_TIPO == 3)
                {
                    if (validaReceita && pjpf.CPF != null)
                    {
                        DateTime nasc = (DateTime)pjpf.DT_NASCIMENTO;
                        roboReceitaCpf = roboReceitaCpf.CarregaRoboCPF(pjpf.CPF, nasc.ToString("dd/MM/yyyy"), path);

                        var            robo       = pjpf.ROBO;
                        RoboReceitaCPF roboCpfObj = new RoboReceitaCPF();
                        roboCpfObj.GravaRoboCpf(roboReceitaCpf, ref robo);

                        GravaLog(db, roboReceitaCpf.Code, roboReceitaCpf.Data.Message, EnumRobo.ReceitaFederalPF.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }
                }

                #region BLOQUEIO

                bool ReceitaIrregular = false, ReceitaInativa = false, SintegraNaoHabilitado = false;

                if (pjpf.PJPF_TIPO == 1)
                {
                    ReceitaInativa        = (!String.IsNullOrEmpty(roboReceita.Data.SituacaoCadastral) && roboReceita.Data.SituacaoCadastral.ToUpper() != "ATIVA");
                    SintegraNaoHabilitado = (!String.IsNullOrEmpty(roboSintegra.Data.SituacaoCadastral) && roboSintegra.Data.SituacaoCadastral == "HABILITADO ATIVO" && roboSintegra.Data.SituacaoCadastral == "HABILITADO");
                }
                else
                {
                    ReceitaIrregular = (!String.IsNullOrEmpty(roboReceitaCpf.Data.SituacaoCadastral) && roboReceitaCpf.Data.SituacaoCadastral.ToUpper() != "REGULAR");
                }

                SOLICITACAO          solicitacao = new SOLICITACAO();
                SOLICITACAO_BLOQUEIO bloq        = new SOLICITACAO_BLOQUEIO();

                if (ReceitaInativa || SintegraNaoHabilitado || ReceitaIrregular)
                {
                    var BloqManual = db.WFD_CONTRATANTE_CONFIG.FirstOrDefault(x => x.CONTRATANTE_ID == pjpf.CONTRATANTE_ID).BLOQUEIO_MANUAL;
                    if (!BloqManual)
                    {
                        GeraBloqueioAutomatico(db, pjpf, solicitacao, bloq);
                    }
                }

                #endregion

                if (pjpf.ROBO.RF_CONSULTA_DTHR != null && pjpf.ROBO.SINT_CONSULTA_DTHR != null && pjpf.ROBO.SN_CONSULTA_DTHR != null)
                {
                    pjpf.ROBO_EXECUTADO = true;
                }
                if (pjpf.ROBO.RF_CONTADOR_TENTATIVA >= 3 && pjpf.ROBO.SINT_CONTADOR_TENTATIVA >= 3 && pjpf.ROBO.SN_CONTADOR_TENTATIVA >= 3)
                {
                    pjpf.ROBO_TENTATIVAS_EXCEDIDAS = true;
                }

                ContratanteId   = pjpf.CONTRATANTE_ID;
                DataSolicitacao = (DateTime)pjpf.DT_SOLICITACAO_ROBO;

                atualizaPJPFBase(db, pjpf);

                db.Entry(pjpf).State = EntityState.Modified;
                db.SaveChanges();

                //ATUALIZA TRAMITE SE HOUVER CRIAÇÃO DE BLOQUEIO
                if (ReceitaInativa || SintegraNaoHabilitado)
                {
                    int papel = db.WFL_PAPEL.FirstOrDefault(x => x.CONTRATANTE_ID == pjpf.CONTRATANTE_ID && x.PAPEL_TP_ID == 10).ID;
                    _tramite.AtualizarTramite(pjpf.CONTRATANTE_ID, solicitacao.ID, solicitacao.FLUXO_ID, papel, 2, null);
                }
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    foreach (var ve in eve.ValidationErrors)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("Error ao percorrer a lista 'lstFornecedorRobo' exception: {0}", ex));
            }
        }
        static void ChamaRobo(int solicitacaoId)
        {
            try
            {
                WebForLinkContexto db = new WebForLinkContexto();

                var solicitacao = BuscarsolicitacaoParaRobo(db, solicitacaoId);

                RoboReceitaCNPJ roboReceita    = new RoboReceitaCNPJ();
                RoboSintegra    roboSintegra   = new RoboSintegra();
                RoboSimples     roboSimples    = new RoboSimples();
                RoboReceitaCPF  roboReceitaCpf = new RoboReceitaCPF();

                var robo    = solicitacao.ROBO.FirstOrDefault();
                var solForn = solicitacao.SolicitacaoCadastroFornecedor.FirstOrDefault();

                bool validaReceita  = (robo.ID == 0 || robo.RF_CONSULTA_DTHR == null);
                bool validaSintegra = (robo.ID == 0 || robo.SINT_CONSULTA_DTHR == null);
                bool validaSimples  = (robo.ID == 0 || robo.SN_CONSULTA_DTHR == null);

                if (solForn.PJPF_TIPO == 1)
                {
                    if (validaReceita && solForn.CNPJ != null)
                    {
                        roboReceita = roboReceita.CarregaRoboCNPJ(solForn.CNPJ, path);

                        RoboReceitaCNPJ roboReceitaCnpj = new RoboReceitaCNPJ();
                        roboReceitaCnpj.GravaRoboReceita(roboReceita, ref robo);

                        GravaLog(db, roboReceita.Code, roboReceita.Data.Message, EnumRobo.ReceitaFederal.ToString(), solicitacao.CONTRATANTE_ID, solicitacao.PJPF_ID, solicitacao.ID);
                    }

                    if (validaSintegra && robo.RF_UF != null)
                    {
                        roboSintegra = roboSintegra.CarregaSintegra(robo.RF_UF, solForn.CNPJ, path);

                        RoboSintegra roboSintegraObj = new RoboSintegra();
                        roboSintegraObj.GravaRoboSintegra(roboSintegra, ref robo);

                        GravaLog(db, roboSintegra.Code, roboSintegra.Data.Message, EnumRobo.Sintegra.ToString(), solicitacao.CONTRATANTE_ID, solicitacao.PJPF_ID, solicitacao.ID);
                    }

                    if (validaSimples && solForn.CNPJ != null)
                    {
                        roboSimples = roboSimples.CarregaSimplesCNPJ(solForn.CNPJ, path);

                        RoboSimples roboSimplesObj = new RoboSimples();
                        roboSimplesObj.GravaRoboSimples(roboSimples, ref robo);

                        GravaLog(db, roboSimples.Code, roboSimples.Data.Message, EnumRobo.SimplesNacional.ToString(), solicitacao.CONTRATANTE_ID, solicitacao.PJPF_ID, solicitacao.ID);
                    }
                }

                // Pessoa Fisica
                if (solForn.PJPF_TIPO == 3)
                {
                    if (validaReceita && solForn.CPF != null)
                    {
                        roboReceitaCpf = roboReceitaCpf.CarregaRoboCPF(solForn.CPF, solForn.DT_NASCIMENTO.ToString(), path);

                        RoboReceitaCPF roboCpfObj = new RoboReceitaCPF();
                        roboCpfObj.GravaRoboCpf(roboReceitaCpf, ref robo);

                        GravaLog(db, roboReceitaCpf.Code, roboReceitaCpf.Data.Message, EnumRobo.ReceitaFederalPF.ToString(), solicitacao.CONTRATANTE_ID, solicitacao.PJPF_ID, solicitacao.ID);
                    }
                }

                if (robo.RF_CONSULTA_DTHR != null && robo.SINT_CONSULTA_DTHR != null && robo.SN_CONSULTA_DTHR != null)
                {
                    solicitacao.ROBO_EXECUTADO = true;
                }
                if (robo.RF_CONTADOR_TENTATIVA >= 3 && robo.SINT_CONTADOR_TENTATIVA >= 3 && robo.SN_CONTADOR_TENTATIVA >= 3)
                {
                    solicitacao.ROBO_TENTATIVAS_EXCEDIDAS = true;
                }

                ContratanteId   = solicitacao.CONTRATANTE_ID;
                DataSolicitacao = (DateTime)solicitacao.SOLICITACAO_DT_CRIA;

                db.Entry(solicitacao).State = EntityState.Modified;
                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    foreach (var ve in eve.ValidationErrors)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("Error ao percorrer a lista 'lstFornecedorRobo' exception: {0}", ex));
            }
        }