Exemplo n.º 1
0
        public async Task <retConsSitNFe> ConsultarPelaChave(string chaveAcesso, string versao)
        {
            var chave   = new ChaveFiscal(chaveAcesso);
            var consSit = new consSitNFe
            {
                chNFe  = chaveAcesso,
                tpAmb  = Configuracao.TipoAmbiente,
                versao = versao
            };

            var xmlEvento = XmlUtils.ClasseParaXmlString <consSitNFe>(consSit);

            var arqEnv = Path.Combine("Logs", $"{DateTime.Now.Ticks}-pedConsSitNFe.xml");
            await storage.SaveAsync(arqEnv, xmlEvento);

            var modeloDoc = chave.Modelo;

            var sefazUrl = Fabrica.FabricarUrl.ObterUrl(eTipoServico.ConsultaSituacaoNFe, Configuracao.TipoAmbiente, modeloDoc, Configuracao.UF);

            var envelope = Fabrica.SoapEnvelopeFabrica.FabricarEnvelope(eTipoServico.ConsultaSituacaoNFe, xmlEvento);

            var retornoXmlString = await Transmitir.TransmitirAsync(sefazUrl, envelope);

            var retornoXmlStringLimpa = Soap.LimparEnvelope(retornoXmlString, "retConsSitNFe").OuterXml;

            var arqRet = Path.Combine("Logs", $"{DateTime.Now.Ticks}-retConsSitNFe.xml");
            await storage.SaveAsync(arqRet, retornoXmlStringLimpa);

            var retEnvEvento = new retConsSitNFe().CarregarDeXmlString(retornoXmlStringLimpa, xmlEvento);

            return(retEnvEvento);
        }
        private async Task <string> PrepararTransmissao(distDFeInt distDFeInt, bool validarXmlConsulta = true)
        {
            var xml = XmlUtils.ClasseParaXmlString <distDFeInt>(distDFeInt);

            if (validarXmlConsulta)
            {
                Schemas.ValidarSchema(eTipoServico.NFeDistribuicaoDFe, xml, Configuracao);
            }

            var nomeArqEnv = $"{Configuracao.Emitente.CNPJ ?? Configuracao.Emitente.CPF}-{DateTime.Now.Ticks}-ped-DistDFeInt.xml";
            var arqEnv     = Path.Combine("Logs", nomeArqEnv);
            var stRet      = await storage.SaveAsync(arqEnv, xml);

            var envelope = SoapEnvelopeFabrica.FabricarEnvelope(eTipoServico.NFeDistribuicaoDFe, xml);

            var sefazUrl = FabricarUrl.ObterUrl(eTipoServico.NFeDistribuicaoDFe, Configuracao.TipoAmbiente, eModeloDocumento.NFe, eUF.AN);
            var retorno  = await Transmitir.TransmitirAsync(sefazUrl, envelope);

            var retornoLimpo = Soap.LimparEnvelope(retorno, "retDistDFeInt").OuterXml;

            var nomeArqRetorno = $"{Configuracao.Emitente.CNPJ ?? Configuracao.Emitente.CPF}-{DateTime.Now.Ticks}-retDistDFeInt.xml";
            var arqRet         = Path.Combine("Logs", nomeArqRetorno);
            await storage.SaveAsync(arqRet, retornoLimpo);

            return(retornoLimpo);
        }