Пример #1
0
        public void Generate(DownloadedHtmlData downloadedData, string directory)
        {
            var nota = new TNfeProc();

            UpdateDadosNfe(downloadedData.ChaveAcessso,
                            nota,
                            downloadedData.DadosNfe,
                            downloadedData.DadosEmitente,
                            downloadedData.InformacoesAdicionais);

            UpdateDadosEmitente(nota, downloadedData.DadosEmitente);
            UpdateDadosDestinatario(nota, downloadedData.DadosDestinatario);
            UpdateProdutos(nota, downloadedData.Products);
            UpdateTotais(nota, downloadedData.Totais);
            UpdateTransporte(nota, downloadedData.DadosTransporte);
            UpdateAdicionais(nota, downloadedData.InformacoesAdicionais);

            var xml = Util.Serialize(nota);
            xml = xml.Replace("protNFe versao=\"2.00\"", "protNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\"");
            SaveXml(xml, directory);
        }
Пример #2
0
        public DownloadedHtmlData Post(PostItems itemsForPost)
        {
            ValidatePost(itemsForPost);

            var postData = ComposePost(itemsForPost);
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            var request = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=");
            request.CookieContainer = sessionCookie;
            request.UserAgent = UserAgent;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;
            var dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            var pageResponse = request.GetResponse();

            var docUserWebPage = new HtmlDocument();
            docUserWebPage.Load(pageResponse.GetResponseStream());
            var documentText = docUserWebPage.DocumentNode.InnerHtml;
            if (documentText.Contains("Código da Imagem inválido."))
            {
                throw new InvalidDataException("Código da Imagem inválido. Tente novamente.");
            }

            if (documentText.Contains("NF-e INEXISTENTE na base nacional"))
            {
                throw new InvalidDataException("NF-e INEXISTENTE na base nacional.");
            }

            var printRequest = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consultaImpressao.aspx?tipoConsulta=completa");
            printRequest.CookieContainer = sessionCookie;
            printRequest.UserAgent = UserAgent;
            printRequest.ContentType = "application/x-www-form-urlencoded";
            var printResponse = printRequest.GetResponse();
            var printResponseStream = printResponse.GetResponseStream();

            var printUserPage = new HtmlDocument();
            printUserPage.Load(printResponseStream);

            var result = new DownloadedHtmlData();
            var spanChaveAcesso = printUserPage.GetElementbyId("lblChaveAcesso");
            Check(spanChaveAcesso);
            result.ChaveAcessso = spanChaveAcesso.InnerText.Trim();
            result.DadosNfe = GetDataItems(printUserPage, "NFe");
            var operationScience = printUserPage.DocumentNode.Descendants().Where(e => e.Id.Contains("CienciaOperacao")).ToList();
            var scienceOperationsList = operationScience.Select(science => GetDataItems(printUserPage, science.Id)).ToList();
            result.ScienceOperations = scienceOperationsList;
            result.DadosEmitente = GetDataItems(printUserPage, "Emitente");
            result.DadosDestinatario = GetDataItems(printUserPage, "DestRem");
            result.Products = GetProducts(printUserPage);
            result.Totais = GetDataItems(printUserPage, "Totais");
            result.DadosTransporte = GetDataItems(printUserPage, "Transporte");
            result.DadosCobranca = GetDataItems(printUserPage, "Cobranca");
            result.InformacoesAdicionais = GetDataItems(printUserPage, "Inf");
            result.NotaFiscalAvulsa = GetDataItems(printUserPage, "Avulsa");

            return result;
        }
Пример #3
0
        public DownloadedHtmlData Post(PostItems itemsForPost)
        {
            ValidatePost(itemsForPost);

            var postData = ComposePost(itemsForPost);

            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            var request = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=");

            request.CookieContainer = sessionCookie;
            request.UserAgent       = UserAgent;
            request.Method          = "POST";
            request.ContentType     = "application/x-www-form-urlencoded";
            request.ContentLength   = byteArray.Length;
            var dataStream = request.GetRequestStream();

            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            var pageResponse = request.GetResponse();

            var docUserWebPage = new HtmlDocument();

            docUserWebPage.Load(pageResponse.GetResponseStream());
            var documentText = docUserWebPage.DocumentNode.InnerHtml;

            if (documentText.Contains("Código da Imagem inválido."))
            {
                throw new InvalidDataException("Código da Imagem inválido. Tente novamente.");
            }

            if (documentText.Contains("NF-e INEXISTENTE na base nacional"))
            {
                throw new InvalidDataException("NF-e INEXISTENTE na base nacional.");
            }

            var printRequest = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consultaImpressao.aspx?tipoConsulta=completa");

            printRequest.CookieContainer = sessionCookie;
            printRequest.UserAgent       = UserAgent;
            printRequest.ContentType     = "application/x-www-form-urlencoded";
            var printResponse       = printRequest.GetResponse();
            var printResponseStream = printResponse.GetResponseStream();

            var printUserPage = new HtmlDocument();

            printUserPage.Load(printResponseStream);

            var result          = new DownloadedHtmlData();
            var spanChaveAcesso = printUserPage.GetElementbyId("lblChaveAcesso");

            Check(spanChaveAcesso);
            result.ChaveAcessso = spanChaveAcesso.InnerText.Trim();
            result.DadosNfe     = GetDataItems(printUserPage, "NFe");
            var operationScience      = printUserPage.DocumentNode.Descendants().Where(e => e.Id.Contains("CienciaOperacao")).ToList();
            var scienceOperationsList = operationScience.Select(science => GetDataItems(printUserPage, science.Id)).ToList();

            result.ScienceOperations     = scienceOperationsList;
            result.DadosEmitente         = GetDataItems(printUserPage, "Emitente");
            result.DadosDestinatario     = GetDataItems(printUserPage, "DestRem");
            result.Products              = GetProducts(printUserPage);
            result.Totais                = GetDataItems(printUserPage, "Totais");
            result.DadosTransporte       = GetDataItems(printUserPage, "Transporte");
            result.DadosCobranca         = GetDataItems(printUserPage, "Cobranca");
            result.InformacoesAdicionais = GetDataItems(printUserPage, "Inf");
            result.NotaFiscalAvulsa      = GetDataItems(printUserPage, "Avulsa");

            return(result);
        }