public static XmlNode getXmlCancelamentoNota(XmlDocument aobjXmlDoc, string astrInscricaoMunicipal, X509Certificate2 aobjCertificado, Faturamento aobjFaturamento) { string lstrStringAssinatura = Convert.ToInt32(astrInscricaoMunicipal).ToString().PadLeft(8, '0') + aobjFaturamento.NumeroNF.ToString().PadLeft(12, '0'); XmlNode lobjXmlDetalhe = aobjXmlDoc.CreateElement("Detalhe"); lobjXmlDetalhe.Attributes.Append(aobjXmlDoc.CreateAttribute("xmlns")); XmlNode lobjXmlChaveNFe = aobjXmlDoc.CreateElement("ChaveNFe"); XmlNode lobjXmlInscricao = aobjXmlDoc.CreateElement("InscricaoPrestador"); lobjXmlInscricao.InnerText = astrInscricaoMunicipal; lobjXmlChaveNFe.AppendChild(lobjXmlInscricao); XmlNode lobjNumeroNFe = aobjXmlDoc.CreateElement("NumeroNFe"); lobjNumeroNFe.InnerText = aobjFaturamento.NumeroNF.ToString(); lobjXmlChaveNFe.AppendChild(lobjNumeroNFe); lobjXmlDetalhe.AppendChild(lobjXmlChaveNFe); XmlNode lobjAssinatura = aobjXmlDoc.CreateElement("AssinaturaCancelamento"); lobjAssinatura.InnerText = Certificado.getAssinatura(lstrStringAssinatura, aobjCertificado); lobjXmlDetalhe.AppendChild(lobjAssinatura); return(lobjXmlDetalhe); }
public static XmlNode GetXmlRPS(XmlDocument aobjXmlDoc, Empresa aobjEmpresaPrestador, X509Certificate2 aobjCertificado, Faturamento aobjFaturamento) { try { string lstrTipoDocto; string lstrStringAssinatura; string lstrIndicadorTomador; string lstrDescrRetencoes = string.Empty; string lstrCodIbgeCidadeTomador = string.Empty; decimal ldecValorCargaTributaria = 0; if (aobjFaturamento.ServicoPMSP == null) { aobjFaturamento.ServicoPMSP = new ServicoPMSP(); } aobjFaturamento.ServicoPMSP.Codigo = aobjEmpresaPrestador.ServicoPMSP.Codigo; PESSOA l_Cliente = _db.PESSOA.Find(aobjFaturamento.ClienteID); if (string.IsNullOrEmpty(l_Cliente.NUM_DOC)) { if (l_Cliente.ID == 0) { throw new Exception("Não foi informado um cliente para a RPS " + aobjFaturamento.NumeroRPS.ToString()); } } if (string.IsNullOrEmpty(l_Cliente.CIDADE) == false) { lstrCodIbgeCidadeTomador = MunicipioHelper.getCodigoIbgeFromCidade(Utils.removerAcentos(l_Cliente.CIDADE)); if (string.IsNullOrEmpty(lstrCodIbgeCidadeTomador)) { throw new Exception("A cidade '" + l_Cliente.CIDADE + "' não está cadastrada no cadastro de cidades. Por favor verifique se o nome da cidade está correto, e caso esteja, favor consulte ao analista responsável"); } } else { throw new Exception("É necessário informar uma cidade para o cliente código " + l_Cliente.ID.ToString()); } l_Cliente.NUM_DOC = l_Cliente.NUM_DOC.Replace(".", "").Replace("/", "").Replace("-", "").Trim(); if (l_Cliente.NUM_DOC.Length == 11) { lstrTipoDocto = "CPF"; lstrIndicadorTomador = "1"; } else if (l_Cliente.NUM_DOC.Length == 14) { lstrTipoDocto = "CNPJ"; lstrIndicadorTomador = "2"; } else { lstrTipoDocto = ""; lstrIndicadorTomador = "3"; } aobjFaturamento.ServicoPMSP.Aliquota = getAliquotaRetencao(enmTipoImposto.eISS, aobjFaturamento) / 100; XmlNode lobjXmlRPS = aobjXmlDoc.CreateElement("RPS"); lobjXmlRPS.Attributes.Append(aobjXmlDoc.CreateAttribute("xmlns")); XmlNode lobjXmlAssinatura = aobjXmlDoc.CreateElement("Assinatura"); XmlNode lobjXmChaveRPS = aobjXmlDoc.CreateElement("ChaveRPS"); XmlNode lobjXmlInscrPrest = aobjXmlDoc.CreateElement("InscricaoPrestador"); XmlNode lobjXmlSerieRPS = aobjXmlDoc.CreateElement("SerieRPS"); XmlNode lobjXmlNumeroRPS = aobjXmlDoc.CreateElement("NumeroRPS"); lobjXmlInscrPrest.InnerText = aobjEmpresaPrestador.CcmPmsp; lobjXmChaveRPS.AppendChild(lobjXmlInscrPrest); lobjXmlSerieRPS.InnerText = aobjFaturamento.SerieRPS; lobjXmChaveRPS.AppendChild(lobjXmlSerieRPS); lobjXmlNumeroRPS.InnerText = aobjFaturamento.NumeroRPS.ToString(); lobjXmChaveRPS.AppendChild(lobjXmlNumeroRPS); XmlNode lobjXmlTipoRPS = aobjXmlDoc.CreateElement("TipoRPS"); XmlNode lobjXmlDataEmissao = aobjXmlDoc.CreateElement("DataEmissao"); XmlNode lobjXmlStatusEmissao = aobjXmlDoc.CreateElement("StatusRPS"); XmlNode lobjXmlTributacao = aobjXmlDoc.CreateElement("TributacaoRPS"); XmlNode lobjXmlValorServico = aobjXmlDoc.CreateElement("ValorServicos"); XmlNode lobjXmlValorDeducoes = aobjXmlDoc.CreateElement("ValorDeducoes"); XmlNode lobjXmlValorPIS = aobjXmlDoc.CreateElement("ValorPIS"); XmlNode lobjXmlValorCOFINS = aobjXmlDoc.CreateElement("ValorCOFINS"); XmlNode lobjXmlValorINSS = aobjXmlDoc.CreateElement("ValorINSS"); XmlNode lobjXmlValorIR = aobjXmlDoc.CreateElement("ValorIR"); XmlNode lobjXmlValorCSLL = aobjXmlDoc.CreateElement("ValorCSLL"); XmlNode lobjXmlCodigoServico = aobjXmlDoc.CreateElement("CodigoServico"); XmlNode lobjXmlAliquotaISS = aobjXmlDoc.CreateElement("AliquotaServicos"); XmlNode lobjXmlISSRetido = aobjXmlDoc.CreateElement("ISSRetido"); XmlNode lobjXmlCpfCnpjTomador = null; XmlNode lobjNoXmlCcmTomador = aobjXmlDoc.CreateElement("InscricaoMunicipalTomador"); //NAO PREENCHIDO XmlNode lobjNoXmlInscrEstadualTomador = aobjXmlDoc.CreateElement("InscricaoEstadualTomador"); //NAO PRENECHIDO XmlNode lobjXmlRazaoTomador = aobjXmlDoc.CreateElement("RazaoSocialTomador"); XmlNode lobjXmlEmail = aobjXmlDoc.CreateElement("EmailTomador"); XmlNode lobjXmlDiscrimicacaoServ = aobjXmlDoc.CreateElement("Discriminacao"); XmlNode lobjXmlCargaTribValor = aobjXmlDoc.CreateElement("ValorCargaTributaria"); XmlNode lobjXmlCargaTribPercent = aobjXmlDoc.CreateElement("PercentualCargaTributaria"); XmlNode lobjXmlCargaTribFonte = aobjXmlDoc.CreateElement("FonteCargaTributaria"); if (aobjFaturamento.DataEmissao.HasValue == false) { aobjFaturamento.DataEmissao = DateTime.Now.Date; } lobjXmlTipoRPS.InnerText = "RPS"; lobjXmlDataEmissao.InnerText = aobjFaturamento.DataEmissao.Value.ToString("yyyy-MM-dd"); lobjXmlStatusEmissao.InnerText = "N"; lobjXmlTributacao.InnerText = "T"; lobjXmlValorServico.InnerText = aobjFaturamento.ValorBruto.ToString("######0.00").Replace(",", "."); lobjXmlValorDeducoes.InnerText = getValorRetencao(enmTipoImposto.eNaoDefinido, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlValorPIS.InnerText = getValorRetencao(enmTipoImposto.ePis, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlValorCOFINS.InnerText = getValorRetencao(enmTipoImposto.eCofins, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlValorINSS.InnerText = getValorRetencao(enmTipoImposto.eINSS, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlValorIR.InnerText = getValorRetencao(enmTipoImposto.eImpostodeRenda, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlValorCSLL.InnerText = getValorRetencao(enmTipoImposto.eCSLL, aobjFaturamento).ToString("######0.00").Replace(",", "."); lobjXmlCodigoServico.InnerText = Convert.ToInt32(aobjFaturamento.ServicoPMSP.Codigo).ToString("00000"); lobjXmlAliquotaISS.InnerText = aobjFaturamento.ServicoPMSP.Aliquota.GetValueOrDefault(0).ToString("##0.00").Replace(",", "."); lobjXmlISSRetido.InnerText = (getValorRetencao(enmTipoImposto.eISS, aobjFaturamento) > 0) ? "true" : "false"; if (lstrTipoDocto != string.Empty) { lobjXmlCpfCnpjTomador = aobjXmlDoc.CreateElement("CPFCNPJTomador"); XmlNode lobjXmlCpfCnpj = aobjXmlDoc.CreateElement(lstrTipoDocto); lobjXmlCpfCnpj.InnerText = l_Cliente.NUM_DOC; lobjXmlCpfCnpjTomador.AppendChild(lobjXmlCpfCnpj); } lobjNoXmlInscrEstadualTomador.InnerText = Utils.TrataNullString(l_Cliente.INSC_ESTADUAL); lobjXmlRazaoTomador.InnerText = l_Cliente.NOME; lobjXmlEmail.InnerText = Utils.TrataNullString(l_Cliente.EMAIL); XmlNode lobjXmlEndTomador = aobjXmlDoc.CreateElement("EnderecoTomador"); XmlNode lobjXmlEndTomadorTipoLog = aobjXmlDoc.CreateElement("TipoLogradouro"); XmlNode lobjXmlEndTomadorLogradouro = aobjXmlDoc.CreateElement("Logradouro"); lobjXmlEndTomadorLogradouro.InnerText = l_Cliente.ENDERECO; XmlNode lobjXmlEndTomadorNumero = aobjXmlDoc.CreateElement("NumeroEndereco"); XmlNode lobjXmlEndTomadorCompl = aobjXmlDoc.CreateElement("ComplementoEndereco"); XmlNode lobjXmlEndTomadorBairro = aobjXmlDoc.CreateElement("Bairro"); XmlNode lobjXmlEndTomadorCidade = aobjXmlDoc.CreateElement("Cidade"); lobjXmlEndTomadorCidade.InnerText = lstrCodIbgeCidadeTomador; XmlNode lobjXmlEndTomadorUF = aobjXmlDoc.CreateElement("UF"); lobjXmlEndTomadorUF.InnerText = l_Cliente.UF; XmlNode lobjXmlEndTomadorCEP = aobjXmlDoc.CreateElement("CEP"); lobjXmlEndTomadorCEP.InnerText = l_Cliente.CEP.Replace("-", "").Trim(); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorTipoLog); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorLogradouro); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorNumero); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorCompl); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorBairro); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorCidade); lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorUF); if (lobjXmlEndTomadorCEP.InnerText != string.Empty) { lobjXmlEndTomador.AppendChild(lobjXmlEndTomadorCEP); } //XmlNode lobjXmlEmail = aobjXmlDoc.CreateElement("EmailTomador"); //lobjXmlEmail.InnerText = " "; lobjXmlDiscrimicacaoServ.InnerText = aobjFaturamento.Descricao; /* * if ((ValorRetencaoIR > 0) || (ValorRetencaoPisCofinsCSLL > 0)) * { * lstrDescrRetencoes = lstrDescrRetencoes + "|RETENÇÕES:"; * * if (ValorRetencaoIR > 0) * lstrDescrRetencoes = lstrDescrRetencoes + "|\tIMPOSTO DE RENDA:" + FraUtils.Utils.getFormattedValueToDB(ValorRetencaoIR); * * if (ValorRetencaoPisCofinsCSLL > 0) * lstrDescrRetencoes = lstrDescrRetencoes + "|\tPIS/COFINS/CSLL:" + FraUtils.Utils.getFormattedValueToDB(ValorRetencaoPisCofinsCSLL); * * } */ if (aobjEmpresaPrestador.PercentualCargaTributaria > 0) { lobjXmlCargaTribFonte.InnerText = aobjEmpresaPrestador.FonteCargaTrib; lobjXmlCargaTribPercent.InnerText = aobjEmpresaPrestador.PercentualCargaTributaria.GetValueOrDefault(0).ToString("##0.00").Replace(",", "."); ldecValorCargaTributaria = Math.Round((aobjFaturamento.ValorBruto * aobjEmpresaPrestador.PercentualCargaTributaria.GetValueOrDefault(0)) / 100, 2); lobjXmlCargaTribValor.InnerText = ldecValorCargaTributaria.ToString("##0.00").Replace(",", "."); } lstrStringAssinatura = aobjEmpresaPrestador.CcmPmsp.PadLeft(8, '0') + aobjFaturamento.SerieRPS.PadRight(5) + aobjFaturamento.NumeroRPS.ToString().PadLeft(12, '0') + aobjFaturamento.DataEmissao.Value.ToString("yyyyMMdd") + lobjXmlTributacao.InnerText + lobjXmlStatusEmissao.InnerText + ((lobjXmlISSRetido.InnerText) == "true" ? "S" : "N") + Convert.ToInt32(aobjFaturamento.ValorBruto * 100).ToString().PadLeft(15, '0') + Convert.ToInt32(getValorRetencao(enmTipoImposto.eNaoDefinido, aobjFaturamento) * 100).ToString().PadLeft(15, '0') + aobjFaturamento.ServicoPMSP.Codigo.ToString().PadLeft(5, '0') + lstrIndicadorTomador + l_Cliente.NUM_DOC.PadLeft(14, '0'); if (lstrStringAssinatura.Length != 86) { throw new Exception("A string de assinatura deve ter 86 caracteres, favor verifique o metodo FaturamentoNota.GetXmlRPS"); } lobjXmlAssinatura.InnerText = Certificado.getAssinatura(lstrStringAssinatura, aobjCertificado); lobjXmlRPS.AppendChild(lobjXmlAssinatura); if (lobjXmChaveRPS != null) { lobjXmlRPS.AppendChild(lobjXmChaveRPS); } if (lobjXmlTipoRPS != null) { lobjXmlRPS.AppendChild(lobjXmlTipoRPS); } lobjXmlRPS.AppendChild(lobjXmlDataEmissao); lobjXmlRPS.AppendChild(lobjXmlStatusEmissao); lobjXmlRPS.AppendChild(lobjXmlTributacao); lobjXmlRPS.AppendChild(lobjXmlValorServico); lobjXmlRPS.AppendChild(lobjXmlValorDeducoes); lobjXmlRPS.AppendChild(lobjXmlValorPIS); lobjXmlRPS.AppendChild(lobjXmlValorCOFINS); lobjXmlRPS.AppendChild(lobjXmlValorINSS); lobjXmlRPS.AppendChild(lobjXmlValorIR); lobjXmlRPS.AppendChild(lobjXmlValorCSLL); lobjXmlRPS.AppendChild(lobjXmlCodigoServico); lobjXmlRPS.AppendChild(lobjXmlAliquotaISS); lobjXmlRPS.AppendChild(lobjXmlISSRetido); if (lobjXmlCpfCnpjTomador != null) { lobjXmlRPS.AppendChild(lobjXmlCpfCnpjTomador); } if (lobjNoXmlCcmTomador.InnerText != string.Empty) { lobjXmlRPS.AppendChild(lobjNoXmlCcmTomador); } if (lobjNoXmlInscrEstadualTomador.InnerText != string.Empty) { lobjXmlRPS.AppendChild(lobjNoXmlInscrEstadualTomador); } lobjXmlRPS.AppendChild(lobjXmlRazaoTomador); lobjXmlRPS.AppendChild(lobjXmlEndTomador); if (lobjXmlEmail.InnerText != string.Empty) { lobjXmlRPS.AppendChild(lobjXmlEmail); } lobjXmlRPS.AppendChild(lobjXmlDiscrimicacaoServ); if (ldecValorCargaTributaria > 0) { lobjXmlRPS.AppendChild(lobjXmlCargaTribValor); lobjXmlRPS.AppendChild(lobjXmlCargaTribPercent); lobjXmlRPS.AppendChild(lobjXmlCargaTribFonte); } return(lobjXmlRPS); } catch (Exception Erro) { throw Erro; } }