Пример #1
0
        public static TefLinhaLista MontaRequisicaoCnc(
            int idRequisicao,
            string rede,
            string nsu,
            DateTime transacaoEm,
            decimal valor,
            IConfigAcTefDial configAcTefDial
            )
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "CNC"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("003-000", valor),
                new TefLinha("010-000", rede),
                new TefLinha("012-000", nsu),
                new TefLinha("022-000", transacaoEm.Date.ToString("ddMMyyyy")),
                new TefLinha("023-000", transacaoEm.TimeOfDay.ToString("hhmmss")),
                new TefLinha("738-000", configAcTefDial.RegistroCertificado)
            };

            CapacidadesAutomacao(configAcTefDial, listaRequisicao);

            listaRequisicao.Add(new TefLinha("999-999", "0"));

            return(listaRequisicao);
        }
Пример #2
0
        public static TefLinhaLista MontaRequisicaoCrt(
            int idRequisicao,
            decimal valor,
            string documentoVinculado,
            string nomeAutomacao,
            string registroCertificacao,
            IConfigAcTefDial configAcTefDial
            )
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "CRT"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("002-000", documentoVinculado),
                new TefLinha("003-000", valor),
                new TefLinha("004-000", "0"),
                new TefLinha("716-000", nomeAutomacao),
                new TefLinha("738-000", registroCertificacao)
            };

            CapacidadesAutomacao(configAcTefDial, listaRequisicao);

            listaRequisicao.Add(new TefLinha("999-999", "0"));

            return(listaRequisicao);
        }
Пример #3
0
        public override RespostaCrt Crt(decimal valor, string documentoVinculado, bool confirmarManual = false)
        {
            VerificaInicializado();
            var requisicao = FabricarRequisicao.MontaRequisicaoCrt(
                IdRequisicao,
                valor,
                documentoVinculado,
                NomeAutomacaoComercial,
                RegistroCertificacao,
                _configAcTefDial);


            _tefRespostaCrt = _requisicao.Enviar(requisicao, this);

            _respostaRequisicaoCrt = _requisicao.AguardaRespostaRequisicao();

            _requisicao.OnExibeMensagem(new ExibeMensagemEventArgs(_respostaRequisicaoCrt));

            var autorizaDfeEventArgs = new AutorizaDfeEventArgs(_respostaRequisicaoCrt);

            _requisicao.OnAutorizaDfe(autorizaDfeEventArgs);

            _statusTransacao    = ConfereStatus(_respostaRequisicaoCrt);
            _statusTransacaoCrt = _statusTransacao ? AcTefStatus.Sucesso : AcTefStatus.Falha;

            if (confirmarManual)
            {
                return(new RespostaCrt(_tefRespostaCrt, _respostaRequisicaoCrt, _statusTransacaoCrt));
            }

            return(ConfirmarCrt(autorizaDfeEventArgs));
        }
Пример #4
0
        private static void CapacidadesAutomacao(IConfigAcTefDial configAcTefDial, TefLinhaLista listaRequisicao)
        {
            var capacidadesDaAutomacao = 0;

            if (configAcTefDial.SuporteTroco)
            {
                capacidadesDaAutomacao += 1;
            }

            if (configAcTefDial.SuporteDesconto)
            {
                capacidadesDaAutomacao += 2;
            }

            if (configAcTefDial.SuporteValorReajustado)
            {
                capacidadesDaAutomacao += 64;
            }

            if (configAcTefDial.SuporteNsuTamanho40)
            {
                capacidadesDaAutomacao += 128;
            }

            if (capacidadesDaAutomacao > 0)
            {
                listaRequisicao.Add(new TefLinha("706-000", capacidadesDaAutomacao));
            }
        }
Пример #5
0
        protected override TefLinhaLista EfetuaRequisicao(TefLinhaLista requisicao, out TefLinhaLista respostaRequisicaoAdm)
        {
            var tefResposta = _requisicao.Enviar(requisicao, this);

            respostaRequisicaoAdm = _requisicao.AguardaRespostaRequisicao();


            _requisicao.OnExibeMensagem(new ExibeMensagemEventArgs(respostaRequisicaoAdm));

            if (ConfereStatus(respostaRequisicaoAdm))
            {
                if (respostaRequisicaoAdm.RequerConfirmacao())
                {
                    Cnf(
                        respostaRequisicaoAdm.BuscaLinha(AcTefIdentificadorCampos.RedeAdquirente).Valor,
                        respostaRequisicaoAdm.BuscaLinha(AcTefIdentificadorCampos.CodigoControle).Valor,
                        NomeAplicativoComercial,
                        VersaoAplicativoComercial,
                        RegistroCertificacao
                        );
                }

                ImprimirVias(respostaRequisicaoAdm);
            }

            return(tefResposta);
        }
Пример #6
0
 public void VerificaSeTefEstaAtivo(TefLinhaLista requisicao)
 {
     if (requisicao.BuscaLinha(AcTefIdentificadorCampos.Comando)?.Valor != "ATV")
     {
         Atv();
     }
 }
Пример #7
0
        protected virtual TefLinhaLista EfetuaRequisicao(TefLinhaLista requisicao, out TefLinhaLista respostaRequisicaoAdm)
        {
            var tefResposta = _requisicao.Enviar(requisicao, this);

            respostaRequisicaoAdm = _requisicao.AguardaRespostaRequisicao();

            return(tefResposta);
        }
Пример #8
0
        public void Adicionar(TefLinha linha)
        {
            if (Requisicao.BuscaLinha(linha.Identificacao) == linha)
            {
                return;
            }

            Requisicao.Add(linha);
            Requisicao = new TefLinhaLista(Requisicao.OrderBy(req => req.Identificacao).ToList());
        }
Пример #9
0
        public static bool NaoRequerConfirmacao(this TefLinhaLista tefLinhaLista)
        {
            var statusConfirmacao = tefLinhaLista.FirstOrDefault(resp => resp.Identificacao == 729);

            if (statusConfirmacao == null)
            {
                return(false);
            }

            return(statusConfirmacao.Valor == "1");
        }
Пример #10
0
        public static TefLinhaLista MontaRequisicaoAtv(int idRequisicao, IConfigAcTefDial configAcTefDial)
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "ATV"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("738-000", configAcTefDial.RegistroCertificado),
                new TefLinha("999-999", "0")
            };

            return(listaRequisicao);
        }
Пример #11
0
        public static void EfetuarBackupResposta(string pastaBackup, TefLinhaLista tefLinhaLista)
        {
            var    idBackup = 0;
            string arquivo;

            do
            {
                idBackup++;
                arquivo = Path.Combine(pastaBackup, $@"AcTef_{idBackup:000}.tef");
            } while (File.Exists(arquivo));

            File.WriteAllLines(arquivo, tefLinhaLista.GetRequisicao());
        }
Пример #12
0
        public static TefLinhaLista LoadArquivo(string arquivo)
        {
            var listaDeLinhas = new TefLinhaLista();

            var conteudoArquivoSts = File.ReadAllLines(arquivo);

            foreach (var conteudoArquivoSt in conteudoArquivoSts)
            {
                listaDeLinhas.Add(new TefLinha(conteudoArquivoSt));
            }

            return(listaDeLinhas);
        }
Пример #13
0
        public static TefLinhaLista MontaRequisicaoAdm(int idRequisicao, IConfigAcTefDial configAcTefDial)
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "ADM"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("738-000", configAcTefDial.RegistroCertificado)
            };

            CapacidadesAutomacao(configAcTefDial, listaRequisicao);

            listaRequisicao.Add(new TefLinha("999-999", "0"));

            return(listaRequisicao);
        }
Пример #14
0
        protected virtual void TransacaoPendente()
        {
            if (!Arquivo.Existe(_requisicao.ArquivoResposta))
            {
                return;
            }

            var listaLinha = TefLinhaLista.LoadArquivo(_requisicao.ArquivoResposta);

            if (listaLinha.ConfereStatus())
            {
                Ncn(
                    listaLinha.BuscaLinha(AcTefIdentificadorCampos.RedeAdquirente).Valor,
                    listaLinha.BuscaLinha(AcTefIdentificadorCampos.CodigoControle).Valor
                    );
            }
        }
Пример #15
0
        public static bool ConfereStatus(this TefLinhaLista tefLinhaLista)
        {
            var campoStatus = 009;

            var campo009Status = tefLinhaLista.BuscaLinha(campoStatus);

            if (campo009Status == null)
            {
                return(false);
            }

            if (campo009Status.Valor != "0")
            {
                return(false);
            }

            return(true);
        }
Пример #16
0
        public static TefLinhaLista MontaRequisicaoNcn(
            int idRequisicao,
            string redeAdquirente,
            string registroCertificacao,
            string codigoControle
            )
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "NCN"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("010-000", redeAdquirente),
                new TefLinha("027-000", codigoControle),
                new TefLinha("738-000", registroCertificacao),
                new TefLinha("999-999", "0")
            };

            return(listaRequisicao);
        }
Пример #17
0
        public static TefLinhaLista MontaRequisicaoCnf(
            int idRequisicao,
            string redeAdquirente,
            string codigoControle,
            string nomeAutomacao,
            string versaoAutomacao,
            string registroCertificacao)
        {
            var listaRequisicao = new TefLinhaLista
            {
                new TefLinha("000-000", "CNF"),
                new TefLinha("001-000", idRequisicao),
                new TefLinha("010-000", redeAdquirente),
                new TefLinha("027-000", codigoControle),
                new TefLinha("735-000", nomeAutomacao),
                new TefLinha("736-000", versaoAutomacao),
                new TefLinha("738-000", registroCertificacao),
                new TefLinha("999-999", "0")
            };

            return(listaRequisicao);
        }
Пример #18
0
 public AcTefResposta(TefLinhaLista tefLinhaLista)
 {
     TefLinhaLista = tefLinhaLista;
 }
Пример #19
0
 private static void Identificacao(IConfigAcTefDial configAcTefDial, TefLinhaLista listaRequisicao)
 {
     listaRequisicao.Add(new TefLinha("735-000", configAcTefDial.NomeAplicacaoComercial));
     listaRequisicao.Add(new TefLinha("736-000", configAcTefDial.VersaoAplicacaoComercial));
 }
Пример #20
0
 public RespostaCrt(TefLinhaLista tefResposta, TefLinhaLista resposta, AcTefStatus acTefStatus)
 {
     TefResposta = tefResposta;
     Resposta    = resposta;
     TefStatus   = acTefStatus;
 }
Пример #21
0
 public AntesRequisicaoEventArgs(TefLinhaLista requisicao)
 {
     Requisicao = requisicao;
 }
Пример #22
0
 public static TefLinha BuscaLinha(this TefLinhaLista tefLinhaLista, int identificacao, int posicao)
 {
     return(tefLinhaLista.FirstOrDefault(resp => resp.Identificacao == identificacao && resp.Posicao == posicao));
 }
Пример #23
0
 public AutorizaDfeEventArgs(TefLinhaLista tefLinhaLista)
 {
     TefLinhaLista = tefLinhaLista;
 }
Пример #24
0
 public ExibeMensagemEventArgs(TefLinhaLista tefLinhaLista)
 {
     Mensagem = tefLinhaLista.BuscaLinha(030)?.Valor ?? string.Empty;
 }
Пример #25
0
 protected virtual void ImprimirVias(TefLinhaLista respostaRequisicao)
 {
     _requisicao.OnImprimirVia(new ImprimeViaEventArgs(respostaRequisicao));
 }
Пример #26
0
        public static bool RequerConfirmacao(this TefLinhaLista tefLinhaLista)
        {
            var statusConfirmacao = tefLinhaLista.FirstOrDefault(resp => resp.Identificacao == 729);

            return(statusConfirmacao == null || statusConfirmacao.Valor == "2");
        }
Пример #27
0
 protected virtual bool ConfereStatus(TefLinhaLista respostaRequisicaoAdm)
 {
     return(respostaRequisicaoAdm.ConfereStatus());
 }
Пример #28
0
 public RespostaAtv(TefLinhaLista tefLinhaLista)
 {
     Header        = tefLinhaLista[0].Valor;
     Identificadao = tefLinhaLista[1].Valor;
     TefLinhaLista = tefLinhaLista;
 }