예제 #1
0
        /// <summary>
        /// Gravar os XML contidos no DocZIP da consulta em uma pasta no HD
        /// </summary>
        /// <param name="folder">Nome da pasta onde é para salvar os XML</param>
        /// <param name="saveXMLResumo">Salvar os arquivos de resumo da NFe e Eventos da NFe?</param>
        public void GravarXMLDocZIP(string folder, bool saveXMLResumo)
        {
            foreach (var item in Result.LoteDistDFeInt.DocZip)
            {
                var save        = true;
                var conteudoXML = Compress.GZIPDecompress(Convert.ToBase64String(item.Value));
                var nomeArquivo = string.Empty;

                var docXML = new XmlDocument();
                docXML.Load(Converter.StringToStreamUTF8(conteudoXML));

                if (item.Schema.StartsWith("resEvento"))
                {
                    nomeArquivo = item.NSU + "-resEvento.xml";
                    save        = saveXMLResumo;
                }
                else if (item.Schema.StartsWith("procEventoNFe"))
                {
                    var chNFe      = XMLUtility.TagRead(((XmlElement)((XmlElement)docXML.GetElementsByTagName("evento")[0]).GetElementsByTagName("infEvento")[0]), "chNFe");
                    var tpEvento   = XMLUtility.TagRead(((XmlElement)((XmlElement)docXML.GetElementsByTagName("evento")[0]).GetElementsByTagName("infEvento")[0]), "tpEvento");
                    var nSeqEvento = XMLUtility.TagRead(((XmlElement)((XmlElement)docXML.GetElementsByTagName("evento")[0]).GetElementsByTagName("infEvento")[0]), "nSeqEvento");
                    nomeArquivo = chNFe + "_" + tpEvento + "_" + nSeqEvento.PadLeft(2, '0') + "-procEventoNFe.xml";
                }
                else if (item.Schema.StartsWith("procNFe"))
                {
                    var chave = ((XmlElement)docXML.GetElementsByTagName("infNFe")[0]).GetAttribute("Id").Substring(3, 44);
                    nomeArquivo = chave + "-procNFe.xml";
                }
                else if (item.Schema.StartsWith("resNFe"))
                {
                    nomeArquivo = item.NSU + "-resNFe.xml";
                    save        = saveXMLResumo;
                }

                if (save && !string.IsNullOrEmpty(nomeArquivo))
                {
                    base.GravarXmlDistribuicao(folder, nomeArquivo, conteudoXML);
                }
            }
        }