public IRetInut 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"); } var d1 = ObterDados(); _urlServico = ObterUrlServico(d1.infInut); _urlWsdlServico = ObterWsdlServico(); //Gerar Id GerarId(d1); //Validar regras de negocio ValidarRegra(d1); //Assinar Xml Assinar(d1); //Validar schemas ValidarSchema(d1); var soapXml = ObterCorpoMensagemSoap(_urlWsdlServico, d1); var ws = _servicoBase.ObterRequisicaoSoap(_urlServico, soapXml); var resposta = _servicoBase.ObterResposta(ws); //Obter Node var node = Utils.ObterNodeDeStringXml("retInutNFe", resposta); var retorno1 = Utils.ConverterXMLParaClasse <retInutNFe>(node); retorno1.cStat = retorno1.infInut.cStat; retorno1.dhResp = retorno1.infInut.dhRecbto; retorno1.tpAmb = retorno1.infInut.tpAmb; retorno1.verAplic = retorno1.infInut.verAplic; retorno1.xMotivo = retorno1.infInut.xMotivo; var xmlEnviado = Utils.ObterStringXML(d1); _processadas++; if (retorno1.infInut == null) { _rejeitadas++; } if (retorno1.infInut != null) { if (StatusSefaz.ListarCodigo.All(n => n.Key != retorno1.infInut.cStat)) { _rejeitadas++; } } var retorno2 = new RetInut(retorno1, node, _processadas, _rejeitadas, xmlEnviado); //Salvar arquivo SalvarArquivo(retorno2); return(retorno2); }
/// <summary> /// Salvar arquivo Xml /// </summary> private void SalvarArquivo(RetInut entity) { if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno) { return; } //SalvarArquivo if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml)) { throw new InvalidOperationException("Informe um diretório válido."); } var nomeArq = $"{entity.Retorno.infInut.Id}-ped-inu.xml"; var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Inutilizacao", "Recebidos"); Utils.EscreverArquivo(caminho, nomeArq, entity.XmlRecebido); }