コード例 #1
0
        private T FinalizaComando <T>(string resposta) where T : SatResposta
        {
            this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {resposta}");
            var resp = (T)Activator.CreateInstance(typeof(T), resposta, Encoding);

            if (resp.CodigoSEFAZ <= 0 || resp.MensagemSEFAZ.IsEmpty())
            {
                return(resp);
            }

            var e = new SatMensagemEventArgs(resp.CodigoSEFAZ, resp.MensagemSEFAZ);

            OnMensagemSefaz.Raise(this, e);
            return(resp);
        }
コード例 #2
0
ファイル: ACBrSat.cs プロジェクト: jaime-pira/ACBr.Net.Sat
        private T FinalizaComando <T>(string resposta) where T : SatResposta
        {
            this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {resposta}");
            var resp = (T)Activator.CreateInstance(typeof(T), resposta, Encoding);

            if (!(resp is MFeSatResposta))
            {
                if (resp.NumeroSessao != Sessao)
                {
                    this.Log().Error($"Sessao retornada pelo SAT [{resp.NumeroSessao}], diferente da enviada [{Sessao}].");
                    if (Configuracoes.ValidarNumeroSessaoResposta)
                    {
                        var fsSessaoAVerificar = Sessao;
                        var consultaCount      = 0;

                        do
                        {
                            consultaCount++;
                            Guard.Against <ACBrException>(consultaCount > Configuracoes.NumeroTentativasValidarSessao, $"Sessao retornada pelo SAT [{resp.NumeroSessao}], diferente da enviada [{fsSessaoAVerificar}].");

                            IniciaComando($"ConsultarNumeroSessao({fsSessaoAVerificar})");
                            var ret = sat.ConsultarNumeroSessao(Sessao, CodigoAtivacao, fsSessaoAVerificar);
                            this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {ret}");
                            resp = (T)Activator.CreateInstance(typeof(T), ret, Encoding);
                        } while (resp.NumeroSessao != fsSessaoAVerificar);
                    }
                }
            }

            if (resp.CodigoSEFAZ <= 0 || resp.MensagemSEFAZ.IsEmpty())
            {
                return(resp);
            }

            var e = new SatMensagemEventArgs(resp.CodigoSEFAZ, resp.MensagemSEFAZ);

            OnMensagemSefaz.Raise(this, e);
            AguardandoResposta = false;
            return(resp);
        }