Пример #1
0
        private string GerarXML(ArquivoRps envio)
        {
            //string xmlString = System.IO.File.ReadAllText(@"C:\i9ti\www\SISPEC\GerarNfseEnvio_Exemplo.xml");
            string xmlString = System.IO.File.ReadAllText(@ParametroDAL.GetValor("XmlPathEnviarLote"));


            xmlString = xmlString.Replace("{NumeroLote}", envio.Rps.NumeroLote.ToString());
            xmlString = xmlString.Replace("{CpfCnpj}", envio.Rps.CpfCnpj);
            xmlString = xmlString.Replace("{InscricaoMunicipal}", envio.Rps.InscricaoMunicipal);
            xmlString = xmlString.Replace("{QuantidadeRps}", envio.Rps.Quantidade);


            xmlString = xmlString.Replace("{Numero}", envio.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Numero);
            xmlString = xmlString.Replace("{Serie}", envio.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Serie);
            xmlString = xmlString.Replace("{Tipo}", envio.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Tipo);
            xmlString = xmlString.Replace("{Tipo}", envio.Rps.InfDeclaracaoPrestacaoServico.IdentificacaoRps.Tipo);
            xmlString = xmlString.Replace("{DataEmissao}", envio.Rps.InfDeclaracaoPrestacaoServico.DataEmissao);
            xmlString = xmlString.Replace("{Status}", envio.Rps.InfDeclaracaoPrestacaoServico.Status);
            xmlString = xmlString.Replace("{Competencia}", envio.Rps.InfDeclaracaoPrestacaoServico.Competencia);

            xmlString = xmlString.Replace("{ValorServicos}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.Valores.ValorServicos);
            xmlString = xmlString.Replace("{IssRetido}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.IssRetido);
            xmlString = xmlString.Replace("{ItemListaServico}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.ItemListaServico);
            xmlString = xmlString.Replace("{CodigoCnae}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoCnae);
            xmlString = xmlString.Replace("{CodigoTributacaoMunicipio}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoTributacaoMunicipio);
            xmlString = xmlString.Replace("{Discriminacao}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.Discriminacao);
            xmlString = xmlString.Replace("{CodigoMunicipio}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.CodigoMunicipio);
            xmlString = xmlString.Replace("{ExigibilidadeISS}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.ExigibilidadeISS);
            xmlString = xmlString.Replace("{MunicipioIncidencia}", envio.Rps.InfDeclaracaoPrestacaoServico.Servico.MunicipioIncidencia);

            xmlString = xmlString.Replace("{CpfCnpjPrestador}", envio.Rps.InfDeclaracaoPrestacaoServico.Prestador.CpfCnpj);
            xmlString = xmlString.Replace("{InscricaoMunicipalPrestador}", envio.Rps.InfDeclaracaoPrestacaoServico.Prestador.InscricaoMunicipal);

            xmlString = xmlString.Replace("{CpfCnpjTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.CpfCnpj);
            xmlString = xmlString.Replace("{RazaoSocialTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.RazaoSocial);
            xmlString = xmlString.Replace("{EnderecoTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Logradouro);
            xmlString = xmlString.Replace("{NumeroTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Numero);
            xmlString = xmlString.Replace("{BairroTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Bairro);
            xmlString = xmlString.Replace("{CodigoMunicipioTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.CodigoMunicipio);
            xmlString = xmlString.Replace("{UfTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Uf);
            xmlString = xmlString.Replace("{CepTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Endereco.Cep);
            xmlString = xmlString.Replace("{TelefoneTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Telefone);
            xmlString = xmlString.Replace("{EmailTomador}", envio.Rps.InfDeclaracaoPrestacaoServico.Tomador.Contato.Email);

            xmlString = xmlString.Replace("{OptanteSimplesNacional}", envio.Rps.InfDeclaracaoPrestacaoServico.OptanteSimplesNacional);
            xmlString = xmlString.Replace("{IncentivoFiscal}", envio.Rps.InfDeclaracaoPrestacaoServico.IncentivoFiscal);

            return(xmlString);
        }
Пример #2
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);
        }