public JsonResult Update(String Regra, String CpfCnpj_Prestador, String Discriminacao, String Expressoes, Int32?Id)
        {
            string auxMsgErro    = string.Empty;
            string auxMsgSucesso = string.Empty;

            RegraTO obj = new RegraTO
            {
                Regra             = Regra,
                CpfCnpj_Prestador = CpfCnpj_Prestador,
                Discriminacao     = Discriminacao,
                Expressoes        = Expressoes,
                Id = Id
            };

            if (RegraDAL.Update(obj) == null)
            {
                auxMsgErro = "Falha ao tentar alterar o registro, favor tente novamente";
            }
            else
            {
                auxMsgSucesso = "Registro alterado com sucesso";
            }

            return(Json(new { msgErro = auxMsgErro, msgSucesso = auxMsgSucesso }));
        }
Esempio n. 2
0
        public static int?Delete(RegraTO obj)
        {
            int?          nrLinhas;
            SqlConnection con = new SqlConnection();

            con.ConnectionString = Util.CONNECTION_STRING;
            try
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection  = con;
                comm.CommandText = @"
                DELETE Regra 
                WHERE Id = @Id
                ";

                con.Open();

                comm.Parameters.Add(new SqlParameter("Id", obj.Id));

                nrLinhas = comm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                nrLinhas = null;
            }
            finally
            {
                con.Close();
            }
            return(nrLinhas);
        }
Esempio n. 3
0
        public static RegraTO GetTodos(string Regra)
        {
            RegraTO obj = new RegraTO();

            SqlConnection con = new SqlConnection();

            con.ConnectionString = Util.CONNECTION_STRING;

            try
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection = con;

                StringBuilder queryGet = new StringBuilder(@"
                SELECT
                *
                FROM Regra 

                WHERE Regra = (@Regra)");

                comm.Parameters.Add(new SqlParameter("Regra", Regra));


                comm.CommandText = queryGet.ToString();

                con.Open();

                SqlDataReader rd = comm.ExecuteReader();


                while (rd.Read())
                {
                    obj = new RegraTO
                    {
                        Id                = rd.GetInt32(0),
                        Regra             = rd.IsDBNull(1) ? null : rd.GetString(1),
                        CpfCnpj_Prestador = rd.IsDBNull(2) ? null : rd.GetString(2),
                        Discriminacao     = rd.IsDBNull(3) ? null : rd.GetString(3),
                        Expressoes        = rd.IsDBNull(4) ? null : rd.GetString(4)
                    };
                }
                rd.Close();
            }
            catch (Exception ex)
            {
                obj = null;
            }
            finally
            {
                con.Close();
            }

            return(obj);
        }
Esempio n. 4
0
        public static List <ArquivoRps> SetValues()
        {
            List <ArquivoRps> arquivosRpsCol = new List <ArquivoRps>();

            try
            {
                string        pathOrigemImportacao = ParametroDAL.GetValor("OrigemImportacaoPath");
                DirectoryInfo diretorio            = new DirectoryInfo(@pathOrigemImportacao);

                FileInfo[] arquivos = diretorio.GetFiles();
                foreach (FileInfo file in arquivos)
                {
                    if (FileIsValid(file))
                    {
                        string[,] values = GetValues();
                        ArquivoRps arquivoRps = new ArquivoRps();

                        arquivoRps.NomeArquivo    = file.Name;
                        arquivoRps.NomeArquivoREM = file.Name.Replace(".txt", ".REM");
                        arquivoRps.NomeArquivoRET = file.Name.Replace(".txt", ".RET");

                        string[] DadosNFOrigem = ParametroDAL.GetValor("DadosNFOrigem").Split(';');

                        // Primeira linha --> Dados do Prestador
                        if ((lines[1].IndexOf("001|") == 0))
                        {
                            arquivoRps.Rps.NumeroLote         = RpsDAL.GetUltimoLote();
                            arquivoRps.Rps.CpfCnpj            = DadosNFOrigem[0];
                            arquivoRps.Rps.InscricaoMunicipal = DadosNFOrigem[1];
                            arquivoRps.Rps.Quantidade         = "1";                                                                            // Analisar o arquivo se será 1 ou N lotes por arquivo

                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Numero = Convert.ToString(LoteRpsDAL.GetUltimoRPS()); //Sequencial => Controle do banco --> Só precisa ser gerado sequencialmente quando o lote for processado com sucesso
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Serie  = DadosNFOrigem[2];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Tipo   = DadosNFOrigem[3];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.DataEmissao             = DateTime.Now.ToString("yyyy-MM-dd");
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Status      = DadosNFOrigem[4];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Competencia = arquivoRps.Rps.InfDeclaracaoPrestacaoServico.DataEmissao;

                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Prestador.CpfCnpj            = arquivoRps.Rps.CpfCnpj;
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Prestador.InscricaoMunicipal = arquivoRps.Rps.InscricaoMunicipal;
                        }
                        // Segunda linha --> Dados do Tomador
                        if ((lines[2].IndexOf("002|") == 0))
                        {
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.CpfCnpj     = values[2, 1];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.RazaoSocial = values[2, 3];

                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Logradouro      = values[2, 11];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Numero          = values[2, 12];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Bairro          = values[2, 8];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.CodigoMunicipio = values[2, 6];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Uf      = values[2, 7];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Cep     = values[2, 10];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Telefone = values[2, 5];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Email    = values[2, 4].ToLower().TrimEnd();
                        }
                        // Terceira linha --> Dados do Serviço
                        if ((lines[3].IndexOf("005|") == 0))
                        {
                            decimal valorServico = Convert.ToDecimal(values[3, 1]) / 100;
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.Valores.ValorServicos = Convert.ToString(valorServico).Replace(",", ".");
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.IssRetido             = DadosNFOrigem[5];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico      = DadosNFOrigem[6];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoCnae            = DadosNFOrigem[7];

                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoTributacaoMunicipio = arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico;


                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = values[3, 18];
                            // Ir na tabela Regra verificar se há alguma regra estabelecida
                            RegraTO regraGeral = RegraDAL.GetTodos("*");
                            if (regraGeral.Regra != null)
                            {
                                //string discriminacao = regraGeral.Discriminacao;
                                arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = regraGeral.Discriminacao;
                            }

                            RegraTO regra = RegraDAL.GetPorCpfCnpjPrestador(arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Tomador.CpfCnpj);
                            if (regra.CpfCnpj_Prestador != null)
                            {
                                string   discriminacao     = regra.Discriminacao;
                                string[] srt_discriminacao = discriminacao.Split('|');

                                foreach (string valor in srt_discriminacao)
                                {
                                    switch (valor)
                                    {
                                    case "DataEmissao":
                                        // Campo crítico
                                        string dtEmissao = GetExpressaoComData(arquivoRps.Rps.InfDeclaracaoPrestacaoServico.DataEmissao, regra.Expressoes);
                                        discriminacao = discriminacao.Replace(valor, dtEmissao);
                                        break;

                                    case "ValorServicos":
                                        discriminacao = discriminacao.Replace(valor, arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.Valores.ValorServicos);
                                        break;

                                    case "IssRetido":
                                        discriminacao = discriminacao.Replace(valor, arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.IssRetido);
                                        break;

                                    case "ItemListaServico":
                                        discriminacao = discriminacao.Replace(valor, arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico);
                                        break;

                                    case "CodigoCnae":
                                        discriminacao = discriminacao.Replace(valor, arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoCnae);
                                        break;
                                    }
                                }

                                arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = discriminacao.Replace("|", "");
                            }

                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoMunicipio     = DadosNFOrigem[8];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.ExigibilidadeISS    = DadosNFOrigem[9];
                            arquivoRps.Rps.InfDeclaracaoPrestacaoServico.Servico.MunicipioIncidencia = DadosNFOrigem[10];
                        }

                        arquivoRps.Rps.InfDeclaracaoPrestacaoServico.OptanteSimplesNacional = DadosNFOrigem[11];
                        arquivoRps.Rps.InfDeclaracaoPrestacaoServico.IncentivoFiscal        = DadosNFOrigem[12];

                        arquivosRpsCol.Add(arquivoRps);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(arquivosRpsCol);
        }
Esempio n. 5
0
        /*
         * public static int? Insert(LoteRpsTO obj)
         * {
         *  int? nrLinhas;
         *  SqlConnection con = new SqlConnection();
         *  con.ConnectionString = Util.CONNECTION_STRING;
         *  try
         *  {
         *      SqlCommand comm = new SqlCommand();
         *      comm.Connection = con;
         *      comm.CommandText = @"
         *      INSERT INTO LoteRps
         *      (NumeroLote, CpfCnpj, InscricaoMunicipal, Quantidade) OUTPUT Inserted.Id VALUES
         *      (@NumeroLote, @CpfCnpj, @InscricaoMunicipal, @Quantidade)
         *      ";
         *
         *      con.Open();
         *
         *      object NumeroLote = DBNull.Value;
         *      if (null != obj.NumeroLote)
         *      {
         *          NumeroLote = obj.NumeroLote;
         *      }
         *
         *      object CpfCnpj = DBNull.Value;
         *      if (null != obj.CpfCnpj)
         *      {
         *          CpfCnpj = obj.CpfCnpj;
         *      }
         *
         *      object InscricaoMunicipal = DBNull.Value;
         *      if (null != obj.InscricaoMunicipal)
         *      {
         *          InscricaoMunicipal = obj.InscricaoMunicipal;
         *      }
         *
         *      object Quantidade = DBNull.Value;
         *      if (null != obj.Quantidade)
         *      {
         *          Quantidade = obj.Quantidade;
         *      }
         *
         *      comm.Parameters.Add(new SqlParameter("NumeroLote", NumeroLote));
         *      comm.Parameters.Add(new SqlParameter("CpfCnpj", CpfCnpj));
         *      comm.Parameters.Add(new SqlParameter("InscricaoMunicipal", InscricaoMunicipal));
         *      comm.Parameters.Add(new SqlParameter("Quantidade", Quantidade));
         *
         *      //nrLinhas = comm.ExecuteNonQuery();
         *      nrLinhas = Convert.ToInt32(comm.ExecuteScalar());
         *  }
         *  catch (Exception ex)
         *  {
         *      nrLinhas = null;
         *  }
         *  finally
         *  {
         *      con.Close();
         *  }
         *  return nrLinhas;
         * }
         */
        public static int?Update(RegraTO obj)
        {
            int?          nrLinhas;
            SqlConnection con = new SqlConnection();

            con.ConnectionString = Util.CONNECTION_STRING;
            try
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection  = con;
                comm.CommandText = @"
                UPDATE Regra 
                SET Regra = @Regra,
                CpfCnpj_Prestador = @CpfCnpj_Prestador,
                Discriminacao = @Discriminacao,
                Expressoes = @Expressoes
                WHERE Id = @Id
                ";

                con.Open();

                object Regra = DBNull.Value;
                if (null != obj.Regra)
                {
                    Regra = obj.Regra;
                }

                object CpfCnpj_Prestador = DBNull.Value;
                if (null != obj.CpfCnpj_Prestador)
                {
                    CpfCnpj_Prestador = obj.CpfCnpj_Prestador;
                }

                object Discriminacao = DBNull.Value;
                if (null != obj.Discriminacao)
                {
                    Discriminacao = obj.Discriminacao;
                }

                object Expressoes = DBNull.Value;
                if (null != obj.Expressoes)
                {
                    Expressoes = obj.Expressoes;
                }


                comm.Parameters.Add(new SqlParameter("Regra", Regra));
                comm.Parameters.Add(new SqlParameter("CpfCnpj_Prestador", CpfCnpj_Prestador));
                comm.Parameters.Add(new SqlParameter("Discriminacao", Discriminacao));
                comm.Parameters.Add(new SqlParameter("Expressoes", Expressoes));
                comm.Parameters.Add(new SqlParameter("Id", obj.Id));

                nrLinhas = comm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                nrLinhas = null;
            }
            finally
            {
                con.Close();
            }
            return(nrLinhas);
        }
Esempio n. 6
0
        public static IList <RegraTO> Get(int start, int pageSize, ref int totRegistros, string textoFiltro, ref int totRegistrosFiltro, string sortColumn, string sortColumnDir)
        {
            IList <RegraTO> objs = new List <RegraTO>();

            SqlConnection con = new SqlConnection();

            con.ConnectionString = Util.CONNECTION_STRING;

            try
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection = con;

                string ordenacao;
                if (string.IsNullOrEmpty(sortColumn))
                {
                    ordenacao = "ORDER BY Id";
                }
                else
                {
                    ordenacao = string.Format("ORDER BY {0} {1}", sortColumn, sortColumnDir);
                }
                StringBuilder queryGet = new StringBuilder(@"
                SELECT TOP (@pageSize) *
                FROM (
				    SELECT 
                    Id,
                    Regra,
                    CpfCnpj_Prestador,
                    Discriminacao,
                    Expressoes,

                    (ROW_NUMBER() OVER (").Append(ordenacao).Append(@"))
                    AS 'numeroLinha', 

                    (SELECT COUNT(Id) FROM Regra) 
				    AS 'totRegistros', 

					(SELECT COUNT(Id) FROM Regra 
					    WHERE
                        Id like @textoFiltro
                        OR
                        Regra collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        CpfCnpj_Prestador collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        Discriminacao collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        Expressoes collate Latin1_General_CI_AI like @textoFiltro
                    ) 
					AS 'totRegistrosFiltro'

	                FROM Regra
						WHERE
                        Id like @textoFiltro
                        OR
                        Regra collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        CpfCnpj_Prestador collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        Discriminacao collate Latin1_General_CI_AI like @textoFiltro
                        OR
                        Expressoes collate Latin1_General_CI_AI like @textoFiltro)

				AS todasLinhas
                WHERE todasLinhas.numeroLinha > (@start)");


                comm.Parameters.Add(new SqlParameter("pageSize", pageSize));
                comm.Parameters.Add(new SqlParameter("start", start));
                comm.Parameters.Add(new SqlParameter("textoFiltro", string.Format("%{0}%", textoFiltro)));

                comm.CommandText = queryGet.ToString();

                con.Open();

                SqlDataReader rd = comm.ExecuteReader();

                RegraTO obj;

                if (rd.Read())
                {
                    totRegistros       = rd.GetInt32(6);
                    totRegistrosFiltro = rd.GetInt32(7);

                    obj = new RegraTO
                    {
                        Id                = rd.GetInt32(0),
                        Regra             = rd.IsDBNull(1) ? null : rd.GetString(1),
                        CpfCnpj_Prestador = rd.IsDBNull(2) ? null : rd.GetString(2),
                        Discriminacao     = rd.IsDBNull(3) ? null : rd.GetString(3),
                        Expressoes        = rd.IsDBNull(4) ? null : rd.GetString(4)
                    };
                    objs.Add(obj);
                }
                while (rd.Read())
                {
                    obj = new RegraTO
                    {
                        Id                = rd.GetInt32(0),
                        Regra             = rd.IsDBNull(1) ? null : rd.GetString(1),
                        CpfCnpj_Prestador = rd.IsDBNull(2) ? null : rd.GetString(2),
                        Discriminacao     = rd.IsDBNull(3) ? null : rd.GetString(3),
                        Expressoes        = rd.IsDBNull(4) ? null : rd.GetString(4)
                    };
                    objs.Add(obj);
                }
                rd.Close();
            }
            catch (Exception ex)
            {
                objs.Clear();
            }
            finally
            {
                con.Close();
            }

            return(objs);
        }
Esempio n. 7
0
        public static List <Rps> ObterDadosEnvio()
        {
            List <Rps> rpsCollection = new List <Rps>();
            Rps        rps           = null;

            try {
                string        pathOrigemImportacao = ParametroDAL.GetValor("OrigemImportacaoPath");
                DirectoryInfo diretorio            = new DirectoryInfo(@pathOrigemImportacao);
                FileInfo[]    arquivos             = diretorio.GetFiles();
                if (arquivos.Length != 0)
                {
                    // Busca arquivos do diretorio
                    foreach (FileInfo file in arquivos)
                    {
                        // Somente arquivos TXT/CSV
                        if ((file.Extension.ToUpper().Equals(".TXT")) || (file.Extension.ToUpper().Equals(".CSV")))
                        {
                            string[] lines = System.IO.File.ReadAllLines(file.FullName);
                            if (lines.Length != 0)
                            {
                                string[] linhaCab = lines[0].Split('|');
                                string[] columns  = new string[50];
                                string[,] values = new string[lines.Length, columns.Length];

                                // Verifica se o arquivo possui o cabeçalho SISPEC
                                if ((lines[0].IndexOf("000|") == 0) || (linhaCab.Length == 17))
                                {
                                    int i = 0;

                                    // Preenche a matriz values com os valores dos campos
                                    foreach (string line in lines)
                                    {
                                        columns = line.Split('|');
                                        int j = 0;
                                        foreach (string field in columns)
                                        {
                                            values[i, j] = field;
                                            //Console.WriteLine("\t Line[" + i + "] - Field[" + j + "]: " + field);
                                            j++;
                                        }
                                        i++;
                                    }
                                    rps = new Rps();
                                    //string[] DadosNFPlamedAju = ParametroDAL.GetValor("DadosNFPlamedAju").Split(';');
                                    string[] DadosNFOrigem = ParametroDAL.GetValor("DadosNFOrigem").Split(';');

                                    // Primeira linha --> Dados do Prestador
                                    if ((lines[1].IndexOf("001|") == 0))
                                    {
                                        rps.NumeroLote         = RpsDAL.GetUltimoLote();
                                        rps.CpfCnpj            = DadosNFOrigem[0];
                                        rps.InscricaoMunicipal = DadosNFOrigem[1];
                                        rps.Quantidade         = "1"; // Analisar o arquivo se será 1 ou N lotes por arquivo



                                        rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Numero = Convert.ToString(LoteRpsDAL.GetUltimoRPS()); //Sequencial => Controle do banco --> Só precisa ser gerado sequencialmente quando o lote for processado com sucesso
                                        rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Serie  = DadosNFOrigem[2];
                                        rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Tipo   = DadosNFOrigem[3];
                                        rps.InfDeclaracaoPrestacaoServico.DataEmissao             = DateTime.Now.ToString("yyyy-MM-dd");
                                        rps.InfDeclaracaoPrestacaoServico.Status      = DadosNFOrigem[4];
                                        rps.InfDeclaracaoPrestacaoServico.Competencia = rps.InfDeclaracaoPrestacaoServico.DataEmissao;

                                        rps.InfDeclaracaoPrestacaoServico.Prestador.CpfCnpj            = rps.CpfCnpj;
                                        rps.InfDeclaracaoPrestacaoServico.Prestador.InscricaoMunicipal = rps.InscricaoMunicipal;
                                    }
                                    // Segunda linha --> Dados do Tomador
                                    if ((lines[2].IndexOf("002|") == 0))
                                    {
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.CpfCnpj     = values[2, 1];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.RazaoSocial = values[2, 3];

                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Logradouro      = values[2, 11];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Numero          = values[2, 12];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Bairro          = values[2, 8];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.CodigoMunicipio = values[2, 6];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Uf      = values[2, 7];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Cep     = values[2, 10];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Telefone = values[2, 5];
                                        rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Email    = values[2, 4].ToLower().TrimEnd();
                                    }
                                    // Terceira linha --> Dados do Serviço
                                    if ((lines[3].IndexOf("005|") == 0))
                                    {
                                        decimal valorServico = Convert.ToDecimal(values[3, 1]) / 100;
                                        rps.InfDeclaracaoPrestacaoServico.Servico.Valores.ValorServicos = Convert.ToString(valorServico).Replace(",", ".");
                                        rps.InfDeclaracaoPrestacaoServico.Servico.IssRetido             = DadosNFOrigem[5];
                                        rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico      = DadosNFOrigem[6];
                                        rps.InfDeclaracaoPrestacaoServico.Servico.CodigoCnae            = DadosNFOrigem[7];

                                        rps.InfDeclaracaoPrestacaoServico.Servico.CodigoTributacaoMunicipio = rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico;


                                        rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = values[3, 18];
                                        // Ir na tabela Regra verificar se há alguma regra estabelecida
                                        RegraTO regraGeral = RegraDAL.GetTodos("*");
                                        if (regraGeral.Regra != null)
                                        {
                                            //string discriminacao = regraGeral.Discriminacao;
                                            rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = regraGeral.Discriminacao;
                                        }

                                        RegraTO regra = RegraDAL.GetPorCpfCnpjPrestador(rps.InfDeclaracaoPrestacaoServico.Tomador.CpfCnpj);
                                        if (regra.CpfCnpj_Prestador != null)
                                        {
                                            string   discriminacao     = regra.Discriminacao;
                                            string[] srt_discriminacao = discriminacao.Split('|');

                                            foreach (string valor in srt_discriminacao)
                                            {
                                                switch (valor)
                                                {
                                                case "DataEmissao":
                                                    // Campo crítico
                                                    string dtEmissao = GetExpressaoComData(rps.InfDeclaracaoPrestacaoServico.DataEmissao, regra.Expressoes);
                                                    discriminacao = discriminacao.Replace(valor, dtEmissao);
                                                    break;

                                                case "ValorServicos":
                                                    discriminacao = discriminacao.Replace(valor, rps.InfDeclaracaoPrestacaoServico.Servico.Valores.ValorServicos);
                                                    break;

                                                case "IssRetido":
                                                    discriminacao = discriminacao.Replace(valor, rps.InfDeclaracaoPrestacaoServico.Servico.IssRetido);
                                                    break;

                                                case "ItemListaServico":
                                                    discriminacao = discriminacao.Replace(valor, rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico);
                                                    break;

                                                case "CodigoCnae":
                                                    discriminacao = discriminacao.Replace(valor, rps.InfDeclaracaoPrestacaoServico.Servico.CodigoCnae);
                                                    break;
                                                }
                                            }

                                            rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao = discriminacao.Replace("|", "");
                                        }

                                        rps.InfDeclaracaoPrestacaoServico.Servico.CodigoMunicipio     = DadosNFOrigem[8];
                                        rps.InfDeclaracaoPrestacaoServico.Servico.ExigibilidadeISS    = DadosNFOrigem[9];
                                        rps.InfDeclaracaoPrestacaoServico.Servico.MunicipioIncidencia = DadosNFOrigem[10];
                                    }

                                    rps.InfDeclaracaoPrestacaoServico.OptanteSimplesNacional = DadosNFOrigem[11];
                                    rps.InfDeclaracaoPrestacaoServico.IncentivoFiscal        = DadosNFOrigem[12];

                                    rpsCollection.Add(rps);
                                }
                            }
                            else
                            {
                                Console.WriteLine("Conteúdo de arquivo no formato inválido (layout inválido).");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Arquivo no formato inválido (tipo inválido).");
                        }

                        nomeArquivo = file.Name.Split('.')[0];
                    }
                }
                else
                {
                    Console.WriteLine("Nenhum arquivo para importação.");
                }
            } catch (Exception e) {
                Console.WriteLine(e.Message);
            }
            return(rpsCollection);
        }