Ejemplo n.º 1
0
        public override string WriteXmlRps(NotaServico nota, bool identado = true, bool showDeclaration = true)
        {
            valoresTipo30 = new List <decimal>();

            var xmlDoc = new XDocument(new XDeclaration("1.0", "UTF-8", null));

            var sdt = new XElement("SDTRPS");

            xmlDoc.AddChild(sdt);

            var tipoTrib = 1;

            if (nota.RegimeEspecialTributacao == RegimeEspecialTributacao.SimplesNacional)
            {
                tipoTrib = 4;
            }

            switch (nota.TipoTributacao)
            {
            case TipoTributacao.Isenta:
                tipoTrib = 2;
                break;

            case TipoTributacao.Suspensa:
                tipoTrib = 3;
                break;

            case TipoTributacao.TributavelFixo:
                tipoTrib = 5;
                break;
            }

            sdt.AddChild(AdicionarTag(TipoCampo.Int, "", "Ano", 0, 0, Ocorrencia.Obrigatoria, nota.Competencia.Year));
            sdt.AddChild(AdicionarTag(TipoCampo.Int, "", "Mes", 0, 0, Ocorrencia.Obrigatoria, nota.Competencia.Month.ZeroFill(2)));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "CPFCNPJ", 0, 0, Ocorrencia.Obrigatoria, nota.Prestador.CpfCnpj.ZeroFill(14)));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "DTIni", 0, 0, Ocorrencia.Obrigatoria, nota.Competencia.ToString("01/MM/yyyy")));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "DTFin", 0, 0, Ocorrencia.Obrigatoria, DateTime.Parse(nota.Competencia.AddMonths(1).ToString("01/MM/yyyy")).AddDays(-1).ToString("dd/MM/yyyy")));
            sdt.AddChild(AdicionarTag(TipoCampo.Int, "", "TipoTrib", 0, 0, Ocorrencia.Obrigatoria, tipoTrib));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "DtAdeSN", 0, 0, Ocorrencia.Obrigatoria, nota.DataOptanteSimplesNacional == DateTime.MinValue || tipoTrib != 4 ? "" : nota.DataOptanteSimplesNacional.ToString("dd/MM/yyyy")));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "AlqIssSN_IP", 0, 0, Ocorrencia.Obrigatoria, tipoTrib != 4 ? "" :  nota.Servico.Valores.Aliquota.ToString("##0.00")));
            sdt.AddChild(AdicionarTag(TipoCampo.Str, "", "Versao", 0, 0, Ocorrencia.Obrigatoria, "2.00"));

            sdt.Add(WriteREG20(nota));

            if (
                nota.Servico.Valores.ValorCofins > 0 ||
                nota.Servico.Valores.ValorCsll > 0 ||
                nota.Servico.Valores.ValorInss > 0 ||
                nota.Servico.Valores.ValorIr > 0 ||
                nota.Servico.Valores.IssRetido == SituacaoTributaria.Retencao ||
                nota.Servico.Valores.ValorPis > 0
                )
            {
                sdt.Add(WriteREG30(nota));
            }

            sdt.Add(WriteREG90(nota));

            return(xmlDoc.AsString(identado, showDeclaration));
        }
Ejemplo n.º 2
0
        public override string GetXmlNFSe(NotaFiscal nota, bool identado = true, bool showDeclaration = true)
        {
            var xmlDoc   = new XDocument(new XDeclaration("1.0", "UTF-8", null));
            var compNfse = new XElement("CompNfse");

            compNfse.AddChild(GenerateNFSe(nota));
            compNfse.AddChild(GenerateNFSeCancelamento(nota));
            compNfse.AddChild(GenerateNFSeSubstituicao(nota));

            xmlDoc.AddChild(compNfse);
            return(xmlDoc.AsString(identado, showDeclaration));
        }