Esempio n. 1
0
 private void BtnDescompactarXML_Click(object sender, EventArgs e)
 {
     txtXML.Text = spdNFe.DescompactarXMLZip(txtXML.Text);
 }
        private void DescompactarDFe(string aXmlDFe)
        {
            List <InformacaoArquivoDFe> listDFe = new List <InformacaoArquivoDFe>();

            try
            {
                var _cStat     = string.Empty;
                var _docXmlDFe = new XmlDocument();
                _docXmlDFe.LoadXml(aXmlDFe);

                if (_docXmlDFe.GetElementsByTagName("cStat")[0] != null)
                {
                    _cStat = _docXmlDFe.GetElementsByTagName("cStat")[0].InnerText;
                }

                if (_cStat == "138") //138 = Documento Localizado
                {
                    string _conteudoLinhaDocZip = "";
                    using (XmlTextReader _xml = new XmlTextReader(new System.IO.StringReader(aXmlDFe)))
                    {
                        bool _nodeDocZip = false;
                        int  _i          = 0;
                        while (_xml.Read())
                        {
                            if (_xml.NodeType == XmlNodeType.Element)
                            {
                                _nodeDocZip = (_xml.Name == "docZip");
                            }

                            if ((_nodeDocZip) && (_xml.NodeType == XmlNodeType.Text))
                            {
                                _i += 1;
                                _conteudoLinhaDocZip = _xml.Value;

                                var _xmlDescompactado    = _spdNFeX.DescompactarXMLZip(_conteudoLinhaDocZip);
                                var _docXmlDescompactado = new XmlDocument();
                                _docXmlDescompactado.LoadXml(_xmlDescompactado);

                                if (_docXmlDescompactado.DocumentElement.Name == "resNFe")
                                {
                                    InformacaoArquivoDFe _dfe = new InformacaoArquivoDFe();
                                    _dfe.ChaveNFe     = _docXmlDescompactado.GetElementsByTagName("chNFe")[0].InnerText;
                                    _dfe.NomeEmitente = _docXmlDescompactado.GetElementsByTagName("xNome")[0].InnerText;
                                    _dfe.ValorNFe     = _docXmlDescompactado.GetElementsByTagName("vNF")[0].InnerText;
                                    _dfe.ConteudoXml  = _xmlDescompactado;

                                    var existe = listDFe.Where(reg => reg.ChaveNFe == _docXmlDescompactado.GetElementsByTagName("chNFe")[0].InnerText);
                                    if (!existe.Any())
                                    {
                                        listDFe.Add(_dfe);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao Consultar Distribuição DFe -> " + ex.Message);
            }

            txtQtdNotas.Text = listDFe.Count.ToString();

            grdNotas.DataSource = listDFe;
            grdNotas.AutoResizeColumns();

            tbcDFe.SelectedTab = (listDFe.Count > 0) ? tabListagem : tabXML;
        }