/// <summary>
        ///     Salvar arquivo Xml
        /// </summary>
        private void SalvarArquivo(RetConsStat entity)
        {
            if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno)
            {
                return;
            }
            //SalvarArquivo
            if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml))
            {
                throw new InvalidOperationException("Informe um diretório válido.");
            }
            var nomeArq = $"{DateTime.Now.ParaDataHoraString()}-ped-sta.xml";
            var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Status", "Recebidos");

            Utils.EscreverArquivo(caminho, nomeArq, entity.XmlRecebido);
        }
        public IRetConsStat 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");
            }
            //Obter endereços
            _urlServico     = ObterUrlServico();
            _urlWsdlServico = ObterWsdlServico();
            //Obter dados
            var d1 = ObterDados();

            //Validar xml
            if (_emisorEmissorServicoConfig.ValidarSchema)
            {
                ValidarSchema(d1);
            }
            //Criar corpo SOAP
            var soapXml = ObterCorpoMensagemSoap(_urlWsdlServico, d1);
            var ws      = _servicoBase.ObterRequisicaoSoap(_urlServico, soapXml);
            //Executar serviço
            var resposta = _servicoBase.ObterResposta(ws);

            //Obter Node
            var node       = Utils.ObterNodeDeStringXml("retConsStatServ", resposta);
            var retorno1   = Utils.ConverterXMLParaClasse <retConsStatServ>(node);
            var xmlEnviado = Utils.ObterStringXML(d1);

            _processadas++;
            if (StatusSefaz.ListarCodigo.All(n => n.Key != retorno1.cStat))
            {
                _rejeitadas++;
            }
            var retorno2 = new RetConsStat(retorno1, node, _processadas, _rejeitadas, xmlEnviado);

            //Salvar arquivo
            SalvarArquivo(retorno2);
            return(retorno2);
        }