コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }