/// <summary> /// Executar /// </summary> /// <returns></returns> public IRetConsRec 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("retConsReciNFe", resposta); var retorno1 = Utils.ConverterXMLParaClasse <retConsReciNFe>(node); var xmlEnviado = Utils.ObterStringXML(d1); _processadas++; if (retorno1.protNFe == null) { _rejeitadas++; } if (retorno1.protNFe != null) { if (StatusSefaz.ListarCodigo.All(n => retorno1.protNFe.All(m => m.infProt.All(k => k.cStat != n.Key)))) { _rejeitadas++; } } var retorno2 = new RetConsRec(retorno1, node, _processadas, _rejeitadas, xmlEnviado); //Salvar arquivo SalvarResposta(retorno2); return(retorno2); }
/// <summary> /// Salvar arquivo Xml /// </summary> private void SalvarResposta(RetConsRec entity) { if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno) { return; } //SalvarArquivo if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml)) { throw new InvalidOperationException("Informe um diretório válido."); } var nomeArq = $"{_numRecibo}-pro-rec.xml.xml"; var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Recibos", "Recebidos"); var xml = Utils.ObterStringXML(entity); Utils.EscreverArquivo(caminho, nomeArq, entity.XmlRecebido); }