Example #1
0
        public static MDFeRetConsMDFeNao LoadXmlString(string xml)
        {
            var retorno = FuncoesXml.XmlStringParaClasse <MDFeRetConsMDFeNao>(xml);

            retorno.RetornoXmlString = xml;
            return(retorno);
        }
Example #2
0
        public static retCTeOS LoadXml(string xml)
        {
            var retorno = FuncoesXml.XmlStringParaClasse <retCTeOS>(xml);

            retorno.RetornoXmlString = xml;
            return(retorno);
        }
Example #3
0
        private static DanfeFrEvento GeraClasseDanfeFrEvento(string xml, string xmlEvento)
        {
            var configuracaoDanfeNfe = _configuracoes.ConfiguracaoDanfeNfe;

            var proc = new nfeProc().CarregarDeXmlString(xml);

            if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe)
            {
                throw new Exception("O XML informado não é um NFe!");
            }

            var procEvento = FuncoesXml.XmlStringParaClasse <procEventoNFe>(xmlEvento);

            DanfeFrEvento danfe = new DanfeFrEvento(proc: proc, procEventoNFe: procEvento, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe()
            {
                Logomarca               = configuracaoDanfeNfe.Logomarca,
                DuasLinhas              = false,
                DocumentoCancelado      = false,
                QuebrarLinhasObservacao = configuracaoDanfeNfe.QuebrarLinhasObservacao,
                ExibirResumoCanhoto     = configuracaoDanfeNfe.ExibirResumoCanhoto,
                ResumoCanhoto           = configuracaoDanfeNfe.ResumoCanhoto,
                ChaveContingencia       = configuracaoDanfeNfe.ChaveContingencia,
                ExibeCampoFatura        = configuracaoDanfeNfe.ExibeCampoFatura,
                ImprimirISSQN           = configuracaoDanfeNfe.ImprimirISSQN,
                ImprimirDescPorc        = configuracaoDanfeNfe.ImprimirDescPorc,
                ImprimirTotalLiquido    = configuracaoDanfeNfe.ImprimirTotalLiquido,
                ImprimirUnidQtdeValor   = configuracaoDanfeNfe.ImprimirUnidQtdeValor,
                ExibirTotalTributos     = configuracaoDanfeNfe.ExibirTotalTributos
            },
                                                    desenvolvedor: "NOME DA SOFTWARE HOUSE");

            return(danfe);
        }
Example #4
0
        private static retConsStatServCte LoadXml(string xml)
        {
            var retorno = FuncoesXml.XmlStringParaClasse <retConsStatServCte>(xml);

            retorno.RetornoXmlString = xml;

            return(retorno);
        }
Example #5
0
        public static MDFeRetEnviMDFe LoadXml(string xml)
        {
            var retorno = FuncoesXml.XmlStringParaClasse <MDFeRetEnviMDFe>(xml);

            retorno.RetornoXmlString = xml;

            return(retorno);
        }
Example #6
0
        private static retInutCTe LoadXml(string xml)
        {
            var retorno = FuncoesXml.XmlStringParaClasse <retInutCTe>(xml);

            retorno.RetornoXmlString = xml;

            return(retorno);
        }
Example #7
0
        /// <summary>
        ///     Obtém a assinatura de um objeto serializável
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="objeto"></param>
        /// <param name="id"></param>
        /// <param name="certificadoDigital">Informe o certificado digital</param>
        /// <param name="manterDadosEmCache">Validador para manter o certificado em cache</param>
        /// <returns>Retorna um objeto do tipo Classes.Assinatura.Signature, contendo a assinatura do objeto passado como parâmetro</returns>
        public static Signature ObterAssinatura <T>(T objeto, string id, X509Certificate2 certificadoDigital, bool manterDadosEmCache = false, string signatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1", string digestMethod = "http://www.w3.org/2000/09/xmldsig#sha1") where T : class
        {
            var objetoLocal = objeto;

            if (id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            try
            {
                var documento = new XmlDocument {
                    PreserveWhitespace = true
                };
                documento.LoadXml(FuncoesXml.ClasseParaXmlString(objetoLocal));
                var docXml = new SignedXml(documento)
                {
                    SigningKey = certificadoDigital.PrivateKey
                };

                docXml.SignedInfo.SignatureMethod = signatureMethod;

                var reference = new Reference {
                    Uri = "#" + id, DigestMethod = digestMethod
                };

                // adicionando EnvelopedSignatureTransform a referencia
                var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform();
                reference.AddTransform(envelopedSigntature);

                var c14Transform = new XmlDsigC14NTransform();
                reference.AddTransform(c14Transform);

                docXml.AddReference(reference);

                // carrega o certificado em KeyInfoX509Data para adicionar a KeyInfo
                var keyInfo = new KeyInfo();
                keyInfo.AddClause(new KeyInfoX509Data(certificadoDigital));

                docXml.KeyInfo = keyInfo;
                docXml.ComputeSignature();

                //// recuperando a representação do XML assinado
                var xmlDigitalSignature = docXml.GetXml();
                var assinatura          = FuncoesXml.XmlStringParaClasse <Signature>(xmlDigitalSignature.OuterXml);
                return(assinatura);
            }
            finally
            {
                //Se não mantém os dados do certificado em cache e o certificado não foi passado por parâmetro(isto é, ele foi criado dentro deste método),
                //então libera o certificado, chamando o método reset.
                if (!manterDadosEmCache & certificadoDigital == null)
                {
                    certificadoDigital.Reset();
                }
            }
        }
Example #8
0
        /// <summary>
        ///     Obtém a asinatura de um objeto serializável
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="objeto"></param>
        /// <param name="id"></param>
        /// <returns>Retorna um objeto do tipo Classes.Assinatura.Signature, contendo a assinatura do objeto passado como parâmetro</returns>
        public static Signature ObterAssinatura <T>(T objeto, string id) where T : class
        {
            var objetoLocal = objeto;

            if (id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var serialCertificado = ConfiguracaoServico.Instancia.SerialCertificado;

            if (String.IsNullOrEmpty(serialCertificado))
            {
                throw new Exception("O nº de série do certificado não foi informado para a função ObterAssinatura!");
            }

            var certificado = CertificadoDigital.BuscaCertificado(serialCertificado);
            var documento   = new XmlDocument {
                PreserveWhitespace = true
            };

            documento.LoadXml(FuncoesXml.ClasseParaXmlString(objetoLocal));
            var docXml = new SignedXml(documento)
            {
                SigningKey = certificado.PrivateKey
            };
            var reference = new Reference {
                Uri = "#" + id
            };

            // adicionando EnvelopedSignatureTransform a referencia
            var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform();

            reference.AddTransform(envelopedSigntature);

            var c14Transform = new XmlDsigC14NTransform();

            reference.AddTransform(c14Transform);

            docXml.AddReference(reference);

            // carrega o certificado em KeyInfoX509Data para adicionar a KeyInfo
            var keyInfo = new KeyInfo();

            keyInfo.AddClause(new KeyInfoX509Data(certificado));

            docXml.KeyInfo = keyInfo;
            docXml.ComputeSignature();

            //// recuperando a representacao do XML assinado
            var xmlDigitalSignature = docXml.GetXml();
            var assinatura          = FuncoesXml.XmlStringParaClasse <Signature>(xmlDigitalSignature.OuterXml);

            return(assinatura);
        }
Example #9
0
        public static SignatureZeus Assina <T>(T objeto, string id, X509Certificate2 certificado,
                                               string signatureMethod        = "http://www.w3.org/2000/09/xmldsig#rsa-sha1",
                                               string digestMethod           = "http://www.w3.org/2000/09/xmldsig#sha1",
                                               bool cfgServicoRemoverAcentos = false) where T : class
        {
            var objetoLocal = objeto;

            if (id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var documento = new XmlDocument {
                PreserveWhitespace = true
            };

            documento.LoadXml(cfgServicoRemoverAcentos
                ? FuncoesXml.ClasseParaXmlString(objetoLocal).RemoverAcentos()
                : FuncoesXml.ClasseParaXmlString(objetoLocal));

            var docXml = new SignedXml(documento)
            {
                SigningKey = certificado.PrivateKey
            };

            docXml.SignedInfo.SignatureMethod = signatureMethod;
            var reference = new Reference {
                Uri = "#" + id, DigestMethod = digestMethod
            };

            // adicionando EnvelopedSignatureTransform a referencia
            var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform();

            reference.AddTransform(envelopedSigntature);

            var c14Transform = new XmlDsigC14NTransform();

            reference.AddTransform(c14Transform);

            docXml.AddReference(reference);

            // carrega o certificado em KeyInfoX509Data para adicionar a KeyInfo
            var keyInfo = new KeyInfo();

            keyInfo.AddClause(new KeyInfoX509Data(certificado));

            docXml.KeyInfo = keyInfo;
            docXml.ComputeSignature();

            //// recuperando a representacao do XML assinado
            var xmlDigitalSignature = docXml.GetXml();
            var assinatura          = FuncoesXml.XmlStringParaClasse <Classes.Assinatura.Signature>(xmlDigitalSignature.OuterXml);

            return(assinatura);
        }
Example #10
0
        /// <summary>
        ///     Obtém a assinatura de um objeto serializável
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="objeto"></param>
        /// <param name="id"></param>
        /// <param name="certificadoDigital">Informe o certificado digital, se já possuir esse em cache, evitando novo acesso ao certificado</param>
        /// <returns>Retorna um objeto do tipo Classes.Assinatura.Signature, contendo a assinatura do objeto passado como parâmetro</returns>
        public static Signature ObterAssinatura <T>(T objeto, string id, X509Certificate2 certificadoDigital = null) where T : class
        {
            var objetoLocal = objeto;

            if (id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var certificado = certificadoDigital ?? CertificadoDigital.ObterCertificado();

            try
            {
                var documento = new XmlDocument {
                    PreserveWhitespace = true
                };
                documento.LoadXml(FuncoesXml.ClasseParaXmlString(objetoLocal));
                var docXml = new SignedXml(documento)
                {
                    SigningKey = certificado.PrivateKey
                };
                var reference = new Reference {
                    Uri = "#" + id
                };

                // adicionando EnvelopedSignatureTransform a referencia
                var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform();
                reference.AddTransform(envelopedSigntature);

                var c14Transform = new XmlDsigC14NTransform();
                reference.AddTransform(c14Transform);

                docXml.AddReference(reference);

                // carrega o certificado em KeyInfoX509Data para adicionar a KeyInfo
                var keyInfo = new KeyInfo();
                keyInfo.AddClause(new KeyInfoX509Data(certificado));

                docXml.KeyInfo = keyInfo;
                docXml.ComputeSignature();

                //// recuperando a representação do XML assinado
                var xmlDigitalSignature = docXml.GetXml();
                var assinatura          = FuncoesXml.XmlStringParaClasse <Signature>(xmlDigitalSignature.OuterXml);
                return(assinatura);
            }
            finally
            {
                if (!ConfiguracaoServico.Instancia.Certificado.ManterDadosEmCache)
                {
                    certificado.Reset();
                }
            }
        }
        /// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <param name="configuracaoServico"></param>
        /// <returns>Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null)
        {
            var         configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
            distDFeInt  pedDistDFeInt;
            XmlDocument dadosConsulta;
            var         ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico);

            XmlNode retorno = ws.Execute(dadosConsulta);

            var retornoXmlString = retorno.OuterXml;

            var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString, configServico);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo

            if (retConsulta.loteDistDFeInt != null && configServico.UnZip)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chCTe    = string.Empty;

                    if (conteudo.StartsWith("<cteProc"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <CTe.Classes.cteProc>(conteudo);
                        chCTe = retConteudo.protCTe.infProt.chCTe;
                    }
                    else if (conteudo.StartsWith("<procEventoCTe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
                        chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    if (chCTe == string.Empty)
                    {
                        chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE";
                    }

                    SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo, configServico);
                }
            }

            #endregion

            return(new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));
        }
Example #12
0
        private Document TurnIntoDFeDocument(loteDistDFeInt[] loteDistDFeInt)
        {
            var docToReturn = new Document();

            if (loteDistDFeInt != null)
            {
                for (int i = 0; i < loteDistDFeInt.Length; i++)
                {
                    var    documentNsu = loteDistDFeInt[i].NSU;
                    var    xmlInBytes  = loteDistDFeInt[i].XmlNfe;
                    string content     = Compressao.Unzip(xmlInBytes);

                    if (content.StartsWith("<resNFe"))
                    {
                        var resNFeContent =
                            FuncoesXml.XmlStringParaClasse <NFe.Classes.Servicos.DistribuicaoDFe.Schemas.resNFe>(content);

                        docToReturn.AccessKey  = resNFeContent.chNFe;
                        docToReturn.Amount     = resNFeContent.vNF;
                        docToReturn.IssuerName = resNFeContent.xNome;
                        docToReturn.IssuerCnpj = resNFeContent.CNPJ.ToString();
                    }

                    if (CheckIfIsNfeProc(content))
                    {
                        var procNFeContent = new NFe.Classes.nfeProc().CarregarDeXmlString(content);

                        if (procNFeContent != null)
                        {
                            docToReturn.AccessKey  = procNFeContent.protNFe.infProt.chNFe;
                            docToReturn.Amount     = procNFeContent.NFe.infNFe.total.ICMSTot.vNF;
                            docToReturn.IssuerName = procNFeContent.NFe.infNFe.emit.xNome;
                            docToReturn.IssuerCnpj = procNFeContent.NFe.infNFe.emit.CNPJ;
                        }
                    }
                }
            }
            return(docToReturn);
        }
Example #13
0
 /// <summary>
 /// Carrega um objeto do tipo retDistDFeInt a partir de uma string no formato XML
 /// </summary>
 /// <param name="retDistDFeInt">Objeto do tipo retDistDFeInt</param>
 /// <param name="xmlString">String com uma estrutura XML</param>
 /// <returns>Retorna um objeto retDistDFeInt com as informações da string XML</returns>
 public static retDistDFeInt CarregarDeXmlString(this retDistDFeInt retDistDFeInt, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retDistDFeInt>(xmlString));
 }
Example #14
0
        internal static string ObterArquivoSchema(ServicoNFe servicoNFe, VersaoServico versaoServico, string stringXml, bool loteNfe = true)
        {
            switch (servicoNFe)
            {
            case ServicoNFe.NfeRecepcao:
                return(loteNfe ? "enviNFe_v2.00.xsd" : "nfe_v2.00.xsd");

            case ServicoNFe.RecepcaoEventoCancelmento:
                var strEvento = FuncoesXml.ObterNodeDeStringXml(nameof(envEvento), stringXml);
                var evento    = FuncoesXml.XmlStringParaClasse <envEvento>(strEvento);
                return(evento.evento.FirstOrDefault()?.infEvento?.tpEvento ==
                       NFeTipoEvento.TeNfeCancelamentoSubstituicao
                        ? "envEventoCancSubst_v1.00.xsd"
                        : "envEventoCancNFe_v1.00.xsd");

            case ServicoNFe.RecepcaoEventoCartaCorrecao:
                return("envCCe_v1.00.xsd");

            case ServicoNFe.RecepcaoEventoEpec:
                return("envEPEC_v1.00.xsd");

            case ServicoNFe.RecepcaoEventoManifestacaoDestinatario:
                return("envConfRecebto_v1.00.xsd");

            case ServicoNFe.NfeInutilizacao:
                switch (versaoServico)
                {
                case VersaoServico.Versao200:
                    return("inutNFe_v2.00.xsd");

                case VersaoServico.Versao310:
                    return("inutNFe_v3.10.xsd");

                case VersaoServico.Versao400:
                    return("inutNFe_v4.00.xsd");
                }
                break;

            case ServicoNFe.NfeConsultaProtocolo:
                switch (versaoServico)
                {
                case VersaoServico.Versao200:
                    return("consSitNFe_v2.01.xsd");

                case VersaoServico.Versao310:
                    return("consSitNFe_v3.10.xsd");

                case VersaoServico.Versao400:
                    return("consSitNFe_v4.00.xsd");
                }
                break;

            case ServicoNFe.NfeStatusServico:
                switch (versaoServico)
                {
                case VersaoServico.Versao200:
                    return("consStatServ_v2.00.xsd");

                case VersaoServico.Versao310:
                    return("consStatServ_v3.10.xsd");

                case VersaoServico.Versao400:
                    return("consStatServ_v4.00.xsd");
                }
                break;

            case ServicoNFe.NFeAutorizacao:

                if (versaoServico != VersaoServico.Versao400)
                {
                    return(loteNfe ? "enviNFe_v3.10.xsd" : "nfe_v3.10.xsd");
                }

                return(loteNfe ? "enviNFe_v4.00.xsd" : "nfe_v4.00.xsd");

            case ServicoNFe.NfeConsultaCadastro:
                return("consCad_v2.00.xsd");

            case ServicoNFe.NfeDownloadNF:
                return("downloadNFe_v1.00.xsd");

            case ServicoNFe.NFeDistribuicaoDFe:
                return("distDFeInt_v1.01.xsd");    // "distDFeInt_v1.00.xsd";
            }
            return(null);
        }
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto inutNFe
 /// </summary>
 /// <param name="inutNFe"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo inutNFe</returns>
 public static inutNFe CarregarDeXmlString(this inutNFe inutNFe, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <inutNFe>(xmlString));
 }
Example #16
0
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto retConsReciNFe
 /// </summary>
 /// <param name="retConsReciNFe"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo retConsReciNFe</returns>
 public static retConsReciNFe CarregarDeXmlString(this retConsReciNFe retConsReciNFe, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retConsReciNFe>(xmlString));
 }
Example #17
0
        /// <summary>
        ///     Coverte uma string XML no formato CTe para um objeto CTe
        /// </summary>
        /// <param name="cte"></param>
        /// <param name="xmlString"></param>
        /// <returns>Retorna um objeto do tipo CTe</returns>
        public static CteEletronica CarregarDeXmlString(this CteEletronica cte, string xmlString)
        {
            var s = FuncoesXml.ObterNodeDeStringXml(typeof(CteEletronica).Name, xmlString);

            return(FuncoesXml.XmlStringParaClasse <CteEletronica>(s));
        }
Example #18
0
 public static cteProc LoadXmlString(string xml)
 {
     return(FuncoesXml.XmlStringParaClasse <cteProc>(xml));
 }
Example #19
0
 public static MDFeEnviMDFe LoadXmlString(string xml)
 {
     return(FuncoesXml.XmlStringParaClasse <MDFeEnviMDFe>(xml));
 }
Example #20
0
        /// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <returns>Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0")
        {
            var versaoServico = ConfiguracaoServico.Instancia.VersaoLayout;

            #region Cria o objeto wdsl para consulta

            var ws = WsdlFactory.CriaWsdlCTeDistDFeInteresse();

            #endregion

            #region Cria o objeto distCTeInt

            var pedDistDFeInt = new distDFeInt
            {
                versao   = "1.00",
                tpAmb    = ConfiguracaoServico.Instancia.tpAmb,
                cUFAutor = ConfiguracaoServico.Instancia.cUF
            };

            if (documento.Length == 11)
            {
                pedDistDFeInt.CPF = documento;
            }
            if (documento.Length > 11)
            {
                pedDistDFeInt.CNPJ = documento;
            }


            pedDistDFeInt.distNSU = new distNSU {
                ultNSU = ultNSU.PadLeft(15, '0')
            };

            if (!nSU.Equals("0"))
            {
                pedDistDFeInt.consNSU = new consNSU {
                    NSU = nSU.PadLeft(15, '0')
                };
                pedDistDFeInt.distNSU = null;
            }

            #endregion

            #region Valida, Envia os dados e obtém a resposta


            pedDistDFeInt.ValidaSchema();

            var xmlConsulta = pedDistDFeInt.ObterXmlString();

            var dadosConsulta = new XmlDocument();
            dadosConsulta.LoadXml(xmlConsulta);

            string path = DateTime.Now.ParaDataHoraString() + "-ped-DistDFeInt.xml";

            SalvarArquivoXml(path, xmlConsulta);

            XmlNode retorno = ws.Execute(dadosConsulta);

            var retornoXmlString = retorno.OuterXml;

            var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo

            if (retConsulta.loteDistDFeInt != null)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chCTe    = string.Empty;

                    if (conteudo.StartsWith("<cteProc"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <CTe.Classes.cteProc>(conteudo);
                        chCTe = retConteudo.protCTe.infProt.chCTe;
                    }
                    else if (conteudo.StartsWith("<procEventoCTe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
                        chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    if (chCTe == string.Empty)
                    {
                        chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE";
                    }

                    SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo);
                }
            }

            #endregion

            return(new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));

            #endregion
        }
Example #21
0
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto retConsCad
 /// </summary>
 /// <param name="retConsCad"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo retConsCad</returns>
 public static retConsCad CarregarDeXmlString(this retConsCad retConsCad, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retConsCad>(xmlString));
 }
Example #22
0
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto retEnviCte
 /// </summary>
 /// <param name="retEnviCte"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo retEnviCte</returns>
 public static retCTeOS CarregarDeXmlString(this retCTeOS retEnviCte, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retCTeOS>(xmlString));
 }
        /// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <returns>Retorna um objeto da classe RetornoNfeDistDFeInt com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoNfeDistDFeInt NfeDistDFeInteresse(string ufAutor, string documento, string ultNSU, string nSU = "0")
        {
            var versaoServico = ServicoNFe.NFeDistribuicaoDFe.VersaoServicoParaString(_cFgServico.VersaoNFeDistribuicaoDFe);

            #region Cria o objeto wdsl para consulta

            var ws = CriarServico(ServicoNFe.NFeDistribuicaoDFe);

            ws.nfeCabecMsg = new nfeCabecMsg
            {
                cUF         = _cFgServico.cUF,
                versaoDados = versaoServico
            };

            #endregion

            #region Cria o objeto distDFeInt

            var pedDistDFeInt = new distDFeInt
            {
                versao   = versaoServico,
                tpAmb    = _cFgServico.tpAmb,
                cUFAutor = _cFgServico.cUF,
                distNSU  = new distNSU {
                    ultNSU = ultNSU.PadLeft(15, '0')
                }
            };

            if (documento.Length == 11)
            {
                pedDistDFeInt.CPF = documento;
            }
            if (documento.Length > 11)
            {
                pedDistDFeInt.CNPJ = documento;
            }
            if (!nSU.Equals("0"))
            {
                pedDistDFeInt.consNSU = new consNSU {
                    NSU = nSU.PadLeft(15, '0')
                }
            }
            ;

            #endregion

            #region Valida, Envia os dados e obtém a resposta

            var xmlConsulta = pedDistDFeInt.ObterXmlString();
            Validador.Valida(ServicoNFe.NFeDistribuicaoDFe, _cFgServico.VersaoNFeDistribuicaoDFe, xmlConsulta);
            var dadosConsulta = new XmlDocument();
            dadosConsulta.LoadXml(xmlConsulta);

            SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-DistDFeInt.xml", xmlConsulta);

            var retorno          = ws.Execute(dadosConsulta);
            var retornoXmlString = retorno.OuterXml;
            var retConsulta      = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-distDFeInt.xml", retornoXmlString);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo
            if (retConsulta.loteDistDFeInt != null)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chNFe    = string.Empty;

                    if (conteudo.StartsWith("<retNFe"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.resNFe>(conteudo);
                        chNFe = retConteudo.chNFe;
                    }
                    else if (conteudo.StartsWith("<procEventoNFe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoNFe>(conteudo);
                        chNFe = procEventoNFeConteudo.retEvento.infEvento.chNFe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    SalvarArquivoXml(chNFe + "_" + schema[0] + ".xml", conteudo);
                }
            }
            #endregion

            return(new RetornoNfeDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));

            #endregion
        }
Example #24
0
 /// <summary>
 ///     Carrega um objeto do tipo retEnvEvento a partir de uma string no formato XML
 /// </summary>
 /// <param name="retEnvEvento"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto retEnvEvento com as informações da string XML</returns>
 public static retEnvEvento CarregarDeXmlString(this retEnvEvento retEnvEvento, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retEnvEvento>(xmlString));
 }
Example #25
0
        /// <summary>
        ///     Carrega um arquivo XML para um objeto da classe CTe
        /// </summary>
        /// <param name="cte"></param>
        /// <param name="arquivoXml">arquivo XML</param>
        /// <returns>Retorna uma NFe carregada com os dados do XML</returns>
        public static CteEletronica CarregarDeArquivoXml(this CteEletronica cte, string arquivoXml)
        {
            var s = FuncoesXml.ObterNodeDeArquivoXml(typeof(CteEletronica).Name, arquivoXml);

            return(FuncoesXml.XmlStringParaClasse <CteEletronica>(s));
        }
Example #26
0
        public static Models.evtInfoContri CarregarDeArquivoXml(this Models.evtInfoContri contri, string arquivoXml)
        {
            var s = FuncoesXml.ObterNodeDeArquivoXml(typeof(Models.evtInfoContri).Name, arquivoXml);

            return(FuncoesXml.XmlStringParaClasse <Models.evtInfoContri>(s));
        }
Example #27
0
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto retInutCTe
 /// </summary>
 /// <param name="retInutCTe"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo retInutCTe</returns>
 public static retInutCTe CarregarDeXmlString(this retInutCTe retInutCTe, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retInutCTe>(xmlString));
 }
Example #28
0
        /// <summary>
        ///     Carrega um arquivo XML para um objeto da classe NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <param name="arquivoXml">arquivo XML</param>
        /// <returns>Retorna uma NFe carregada com os dados do XML</returns>
        public static Classes.NFe CarregarDeArquivoXml(this Classes.NFe nfe, string arquivoXml)
        {
            var s = FuncoesXml.ObterNodeDeArquivoXml(typeof(Classes.NFe).Name, arquivoXml);

            return(FuncoesXml.XmlStringParaClasse <Classes.NFe>(s));
        }
Example #29
0
 public static CTeOS LoadXmlString(string xml)
 {
     return(FuncoesXml.XmlStringParaClasse <CTeOS>(xml));
 }
Example #30
0
        /// <summary>
        ///     Coverte uma string XML no formato NFe para um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <param name="xmlString"></param>
        /// <returns>Retorna um objeto do tipo NFe</returns>
        public static Classes.NFe CarregarDeXmlString(this Classes.NFe nfe, string xmlString)
        {
            var s = FuncoesXml.ObterNodeDeStringXml(typeof(Classes.NFe).Name, xmlString);

            return(FuncoesXml.XmlStringParaClasse <Classes.NFe>(s));
        }