/// <summary>
        /// Grava autorização e relaciona as saídas
        /// </summary>
        /// <param name="resultadoProcessamento"></param>
        /// <param name="listaSolicitacaoSaida"></param>
        /// <returns></returns>
        private long InserirAutorizacao(CartaoCreditoAutorizacao autorizacao)
        {
            var repAutorizacao = new RepositorioGenerico <tb_autorizacao_cartao>();
            tb_autorizacao_cartao _autorizacao_cartaoE = new tb_autorizacao_cartao();

            try
            {
                _autorizacao_cartaoE.header              = autorizacao.Header;
                _autorizacao_cartaoE.codIdentificacao    = autorizacao.CodIndentificacao;
                _autorizacao_cartaoE.cupomFiscal         = autorizacao.CupomFiscal;
                _autorizacao_cartaoE.tipoDocumentoFiscal = autorizacao.TipoDocumentoFiscal;
                _autorizacao_cartaoE.valor = autorizacao.Valor;
                _autorizacao_cartaoE.nomeBandeiraCartao = autorizacao.NomeBandeiraCartao;
                _autorizacao_cartaoE.statusTransacao    = autorizacao.StatusTransacao;
                _autorizacao_cartaoE.tipoTransacao      = autorizacao.TipoTransacao;
                _autorizacao_cartaoE.processado         = autorizacao.Processado;
                _autorizacao_cartaoE.tipoParcelamento   = autorizacao.TipoParcelamento;
                if (autorizacao.StatusTransacao.Equals("0"))
                {
                    _autorizacao_cartaoE.autorizacaoTransacao = autorizacao.AutorizacaoTransacao;
                    _autorizacao_cartaoE.dataHoraAutorizacao  = autorizacao.DataHoraAutorizacao;
                    _autorizacao_cartaoE.nsuTransacao         = autorizacao.NsuTransacao;
                    _autorizacao_cartaoE.quantidadeParcelas   = autorizacao.QuantidadeParcelas == 0 ? 1 : autorizacao.QuantidadeParcelas;
                }
                repAutorizacao.Inserir(_autorizacao_cartaoE);
                repAutorizacao.SaveChanges();

                var saceEntities = (SaceEntities)repAutorizacao.ObterContexto();
                var query        = from saida in saceEntities.tb_saida
                                   where saida.pedidoGerado.Equals(autorizacao.CupomFiscal)
                                   select saida;
                List <tb_saida> listaSaidas = query.ToList();
                foreach (tb_saida saidaE in listaSaidas)
                {
                    _autorizacao_cartaoE.tb_saida.Add(saidaE);
                }
                repAutorizacao.SaveChanges();
            }
            catch (Exception e)
            {
                if (e.InnerException is MySqlException)
                {
                    MySqlException exception = (MySqlException)e.InnerException;
                    if (exception.Number != 1062) // quando a autorização já foi inserida na base não precisa enviar erro.
                    {
                        throw new DadosException("Autorização Cartão", e.Message, e);
                    }
                }
            }
            return(_autorizacao_cartaoE.codAutorizacao);
        }
Пример #2
0
        public long InserirAutorizacaoCartao(Cartao.ResultadoProcessamento resultadoProcessamento, List <tb_solicitacao_saida> listaSolicitacaoSaida)
        {
            var repAutorizacao = new RepositorioGenerico <tb_autorizacao_cartao>();
            //var repSaida = new RepositorioGenerico<tb_saida>();
            tb_autorizacao_cartao _autorizacao_cartaoE;

            try
            {
                foreach (Cartao.RespostaAprovada respostaAprovada in resultadoProcessamento.ListaRespostaAprovada)
                {
                    _autorizacao_cartaoE = new tb_autorizacao_cartao();
                    _autorizacao_cartaoE.codigoAutorizacaoAdquirente = respostaAprovada.CodAutorizacaoAdquirente;
                    _autorizacao_cartaoE.dataHoraAutorizacao         = respostaAprovada.DataHoraAutorizacao;
                    _autorizacao_cartaoE.nomeAdquirente     = respostaAprovada.NomeAdquirente;
                    _autorizacao_cartaoE.nomeBandeiraCartao = respostaAprovada.NomeBandeiraCartao;
                    _autorizacao_cartaoE.nsuAdquirente      = String.IsNullOrEmpty(respostaAprovada.NsuAdquirente) ? "" : respostaAprovada.NsuAdquirente;
                    _autorizacao_cartaoE.nsuTef             = String.IsNullOrEmpty(respostaAprovada.NsuTef) ? "" : respostaAprovada.NsuTef;
                    _autorizacao_cartaoE.numeroControle     = String.IsNullOrEmpty(respostaAprovada.NumeroControle) ? "" : respostaAprovada.NumeroControle;

                    repAutorizacao.Inserir(_autorizacao_cartaoE);
                    repAutorizacao.SaveChanges();
                    foreach (tb_solicitacao_saida solicitacaoSaida in listaSolicitacaoSaida)
                    {
                        var saceEntities = (SaceEntities)repAutorizacao.ObterContexto();
                        var query        = from saida in saceEntities.tb_saida
                                           where saida.codSaida == solicitacaoSaida.codSaida
                                           select saida;

                        tb_saida saidaE = query.FirstOrDefault();

                        _autorizacao_cartaoE.tb_saida.Add(saidaE);
                    }

                    repAutorizacao.SaveChanges();
                }
            }
            catch (Exception e)
            {
                throw new DadosException("Autorização Cartão", e.Message, e);
            }
            return(0);
        }
        private void AtualizaFormaPagamentoUnica(tb_autorizacao_cartao autorizacaoAprovada, CartaoCredito cartao, SaidaPagamento saidaPagamento, IEnumerable <Conta> listaContas)
        {
            saidaPagamento.CodCartaoCredito  = cartao.CodCartao;
            saidaPagamento.CodFormaPagamento = FormaPagamento.CARTAO;
            saidaPagamento.Data           = (DateTime)autorizacaoAprovada.dataHoraAutorizacao;
            saidaPagamento.NumeroControle = autorizacaoAprovada.nsuTransacao.ToString();
            saidaPagamento.Parcelas       = (int)autorizacaoAprovada.quantidadeParcelas;
            saidaPagamento.Valor          = autorizacaoAprovada.valor;
            GerenciadorSaidaPagamento.GetInstance(null).Atualizar(saidaPagamento);
            int parcela = 1;

            foreach (Conta conta in listaContas)
            {
                GerenciadorConta.GetInstance(null).Atualizar(cartao.CodPessoa,
                                                             autorizacaoAprovada.dataHoraAutorizacao.Value.AddDays(cartao.DiaBase * parcela),
                                                             Conta.FORMATO_CONTA_CARTAO,
                                                             autorizacaoAprovada.nsuTransacao.ToString(),
                                                             autorizacaoAprovada.valor, conta.CodConta);
                parcela++;
            }
        }
        private void AtualizaFormaPagamentoMultipla(tb_autorizacao_cartao autorizacaoAprovada, CartaoCredito cartao, IEnumerable <SaidaPagamento> pagamentos, IEnumerable <Conta> listaContas)
        {
            SaidaPagamento saidaPagamento = pagamentos.Where(p => p.CodFormaPagamento == FormaPagamento.CARTAO).FirstOrDefault();

            if (saidaPagamento == null)
            {
                saidaPagamento = new SaidaPagamento();
            }
            saidaPagamento.CodCartaoCredito  = cartao.CodCartao;
            saidaPagamento.CodFormaPagamento = FormaPagamento.CARTAO;
            saidaPagamento.Data           = (DateTime)autorizacaoAprovada.dataHoraAutorizacao;
            saidaPagamento.NumeroControle = autorizacaoAprovada.nsuTransacao.ToString();
            saidaPagamento.Parcelas       = (int)autorizacaoAprovada.quantidadeParcelas;
            saidaPagamento.Valor          = autorizacaoAprovada.valor;

            if (pagamentos.Where(p => p.CodFormaPagamento == FormaPagamento.CARTAO).Count() == 1)
            {
                GerenciadorSaidaPagamento.GetInstance(null).Atualizar(saidaPagamento);
            }

            foreach (Conta conta in listaContas)
            {
                GerenciadorConta.GetInstance(null).Remover(conta.CodConta);
            }

            List <SaidaPagamento> listaPagamentos = new List <SaidaPagamento>()
            {
                saidaPagamento
            };
            List <SaidaPesquisa> listaSaidas = GerenciadorSaida.GetInstance(null).ObterPorCupomFiscal(autorizacaoAprovada.cupomFiscal);

            foreach (SaidaPesquisa saidaPesquisa in listaSaidas)
            {
                Saida saida = GerenciadorSaida.GetInstance(null).Obter(saidaPesquisa.CodSaida);
                GerenciadorSaidaPagamento.GetInstance(null).RemoverPorSaida(saida);
                GerenciadorSaida.GetInstance(null).RegistrarPagamentosSaida(listaPagamentos, saida);
            }
        }