/// <summary> /// Executar /// </summary> /// <returns></returns> public IRetConsProt Executar() { if (_servicoBase == null) { throw new InvalidOperationException("Uma instância do serviço base é requerido"); } if (_emisorEmissorServicoConfig == null) { throw new InvalidOperationException("Uma instância de configuração do emissor é requerido"); } _urlServico = ObterUrlServico(); _urlWsdlServico = ObterWsdlServico(); var d1 = ObterDados(); if (_emisorEmissorServicoConfig.ValidarSchema) { ValidarSchema(d1); } SalvarPedido(d1); var soapXml = ObterCorpoMensagemSoap(_urlWsdlServico, d1); var ws = _servicoBase.ObterRequisicaoSoap(_urlServico, soapXml); var resposta = _servicoBase.ObterResposta(ws); //Obter Node var node = Utils.ObterNodeDeStringXml("retConsSitNFe", resposta); var retorno1 = Utils.ConverterXMLParaClasse <retConsSitNFe>(node); var xmlEnviado = Utils.ObterStringXML(d1); _processadas++; if (retorno1.protNFe == null) { _rejeitadas++; } if (retorno1.protNFe != null) { if (StatusSefaz.ListarCodigo.All(n => retorno1.protNFe.infProt.All(m => m.cStat != n.Key))) { _rejeitadas++; } } var retorno2 = new RetConsProt(retorno1, node, _processadas, _rejeitadas, xmlEnviado); //Salvar arquivo SalvarResposta(retorno2); return(retorno2); }
/// <summary> /// Salvar arquivo Xml /// </summary> private void SalvarResposta(RetConsProt entity) { if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno) { return; } //SalvarArquivo if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml)) { throw new InvalidOperationException("Informe um diretório válido."); } var nomeArq = $"{_chaveNfe}-sit.xml"; var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Protocolos", "Recebidos"); var xml = Utils.ObterStringXML(entity); Utils.EscreverArquivo(caminho, nomeArq, entity.XmlRecebido); }