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);
        }
Beispiel #2
0
        /// <summary>
        ///     Processar envio e retorno da mensagem
        /// </summary>
        /// <param name="d1"></param>
        /// <returns></returns>
        private IRetAutorz ProcessarEnvioMensagem(enviNFe d1)
        {
            var soapXml = ObterCorpoMensagemSoap(_urlWsdlServico, d1);

            SalvarArquivoLoteEnviado(soapXml);
            var ws       = _servicoBase.ObterRequisicaoSoap(_urlServico, soapXml);
            var resposta = _servicoBase.ObterResposta(ws);

            if (string.IsNullOrWhiteSpace(resposta))
            {
                throw new InvalidOperationException("Não foi possível obter resposta a chamada do serviço");
            }
            return(RetornoProcessamento(resposta, d1, _contingencia));
        }
        /// <summary>
        ///     Executar
        /// </summary>
        /// <returns></returns>
        public IRetCancelar 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();

            //Assinar
            d1.evento.ForEach(Assinar);
            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("retEnvEvento", resposta);
            var retorno1   = Utils.ConverterXMLParaClasse <retEnvEvento>(node);
            var xmlEnviado = Utils.ObterStringXML(d1);

            _processadas++;
            if (retorno1.retEvento.Any(n => n.infEvento == null))
            {
                _rejeitadas++;
            }
            if (retorno1.retEvento.Any(n => n.infEvento != null))
            {
                if (StatusSefaz.ListarCodigo.All(n => retorno1.retEvento.All(k => k.infEvento.cStat != n.Key)))
                {
                    _rejeitadas++;
                }
            }

            var retorno2 = new RetCancelar(retorno1, node, _processadas, _rejeitadas, xmlEnviado);

            //Salvar arquivo
            SalvarResposta(retorno2);
            return(retorno2);
        }
        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);
        }