Esempio n. 1
0
        public static void GerarArquivo(string nome, string tipo, string conteudo)
        {
            try
            {
                string path = "";
                string pathOrigemRemessa = ParametroDAL.GetValor("OrigemRemessaPath");
                string pathOrigemRetorno = ParametroDAL.GetValor("OrigemRetornoPath");
                if (tipo.Equals("REM"))
                {
                    path = @pathOrigemRemessa + nome;
                }
                else
                {
                    path = @pathOrigemRetorno + nome;
                }

                if (!File.Exists(path))
                {
                    using (StreamWriter sw = File.CreateText(path))
                    {
                        sw.WriteLine(conteudo);
                    }
                }
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.Message);
            }
        }
Esempio n. 2
0
 private X509Certificate2 ObterCertificado()
 {
     try
     {
         string           pathCertPath = ParametroDAL.GetValor("CertPath");
         string           certPath     = @pathCertPath;
         string           certPass     = ParametroDAL.GetValor("CertPass");
         X509Certificate2 myCert       = new X509Certificate2(certPath, certPass); //parametro adicionado no final
         return(myCert);
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Esempio n. 3
0
        public static void MoverArquivos(string arquivo)
        {
            string        pathOrigemImportacao  = ParametroDAL.GetValor("OrigemImportacaoPath");
            string        pathDestinoImportacao = ParametroDAL.GetValor("DestinoImportacaoPath");
            DirectoryInfo dirOrigemImportacao   = new DirectoryInfo(@pathOrigemImportacao);
            string        dirDestinoImportacao  = @pathDestinoImportacao;

            foreach (FileInfo f in dirOrigemImportacao.GetFiles("*.txt"))
            {
                if (f.Name.Equals(arquivo + ".txt"))
                {
                    File.Move(f.FullName, dirDestinoImportacao + f.Name);
                }
            }

            string        pathOrigemRemessa  = ParametroDAL.GetValor("OrigemRemessaPath");
            string        pathDestinoRemessa = ParametroDAL.GetValor("DestinoRemessaPath");
            DirectoryInfo dirOrigemRemessa   = new DirectoryInfo(@pathOrigemRemessa);
            string        dirDestinoRemessa  = @pathDestinoRemessa;


            // reavaliar essa rotina, pois não deixe mover um arquivo caso exista outro com mesmo nome na mesma pasta
            foreach (FileInfo f in dirOrigemRemessa.GetFiles("*.REM"))
            {
                if (f.Name.Equals(arquivo + ".REM"))
                {
                    File.Move(f.FullName, dirDestinoRemessa + f.Name);
                }
            }

            string pathOrigemRetorno  = ParametroDAL.GetValor("OrigemRetornoPath");
            string pathDestinoRetorno = ParametroDAL.GetValor("DestinoRetornoPath");

            DirectoryInfo dirOrigemRetorno  = new DirectoryInfo(@pathOrigemRetorno);
            string        dirDestinoRetorno = @pathDestinoRetorno;

            foreach (FileInfo f in dirOrigemRetorno.GetFiles("*.RET"))
            {
                if (f.Name.Equals(arquivo + ".RET"))
                {
                    File.Move(f.FullName, dirDestinoRetorno + f.Name);
                }
            }
        }
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 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);
        }
Esempio n. 6
0
        // GerarNotaFiscal
        public string Gerar()
        {
            string msg = "Não encontrou arquivo para importação.";

            try
            {
                // Retornar uma coleção de RPs
                //List<Rps> lotesRps = Importacao.ObterDadosEnvio();
                List <ArquivoRps> lotesRps = Importacao.SetValues();
                if (lotesRps.Count > 0)
                {
                    msg = "Encontrou " + lotesRps.Count.ToString() + " arquivo(s) para importação.";
                    int i = 0;
                    foreach (ArquivoRps dados in lotesRps)
                    {
                        string xmlCabecalho = GerarXMLCabecalho();

                        // Recepcionando o arquivo XML assinado
                        string xmlDados = GerarXML(dados);
                        xmlDados = AssinarXML(xmlDados, "Rps");
                        xmlDados = AssinarXML(xmlDados, "EnviarLoteRpsEnvio");

                        NfseWSServiceSoapClient servico = new NfseWSServiceSoapClient();
                        string xmlRetorno = servico.RecepcionarLoteRps(xmlCabecalho, xmlDados);

                        //string consultLote = servico.ConsultarLoteRps(xmlCabecalho, xmlDados);

                        // Gerando arquivos REM/RET nos respectivos diretorios
                        Importacao.GerarArquivo(dados.NomeArquivoREM, "REM", xmlDados);
                        Importacao.GerarArquivo(dados.NomeArquivoRET, "RET", xmlRetorno);

                        string pathOrigemImportacao  = ParametroDAL.GetValor("OrigemImportacaoPath");
                        string pathOrigemRemessa     = ParametroDAL.GetValor("OrigemRemessaPath");
                        string pathOrigemRetorno     = ParametroDAL.GetValor("OrigemRetornoPath");
                        string pathDestinoImportacao = ParametroDAL.GetValor("DestinoImportacaoPath");
                        string pathDestinoRemessa    = ParametroDAL.GetValor("DestinoRemessaPath");
                        string pathDestinoRetorno    = ParametroDAL.GetValor("DestinoRetornoPath");

                        string arquivoImportacao = @pathDestinoImportacao + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + dados.NomeArquivo;
                        // Movendo arquivo de importacao da origem para destino com outro nome
                        File.Move(@pathOrigemImportacao + dados.NomeArquivo, arquivoImportacao);

                        string arquivoRemessa = @pathDestinoRemessa + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + dados.NomeArquivoREM;
                        // Movendo arquivo de remessa da origem para destino com outro nome
                        File.Move(@pathOrigemRemessa + dados.NomeArquivoREM, arquivoRemessa);

                        string arquivoRetorno = @pathDestinoRetorno + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + dados.NomeArquivoRET;
                        // Movendo arquivo de retorno da origem para destino com outro nome
                        File.Move(@pathOrigemRetorno + dados.NomeArquivoRET, arquivoRetorno);

                        // Lendo arquivo da pasta Backup
                        string conteudoImportacao = Importacao.LerArquivoImportacao(arquivoImportacao);

                        // Gravando na base o lote
                        SalvarLote(dados.Rps, lotesRps.Count, i);
                        // Gravando na base o resultado do envio
                        SalvarDadosEnvio(dados.Rps, xmlDados, xmlRetorno, arquivoImportacao, conteudoImportacao, arquivoRemessa, arquivoRetorno);

                        i++;
                        System.Threading.Thread.Sleep(5000); //Delay de 5 segundos para chamada sincrona
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
            return(msg);
        }