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); }
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); }