示例#1
0
 public ActionResult <Transactions> PostReversal(TransactionsReversalDTO transactionsReversalDTO, [FromServices] TransactionsApplication transactionsApplication)
 {
     try
     {
         return(Ok(transactionsApplication.PostReversal(transactionsReversalDTO)));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex));
     }
 }
示例#2
0
        private Transactions ReversalDeposit(Transactions transactions, TransactionsReversalDTO transactionsReversalDTO)
        {
            Account AccountDestination = transactions.AccountDestination;
            Account AccountSource      = transactions.AccountSource;

            _transactionRepository.Begin();

            try
            {
                if (transactions.TransactionCode != transactionsReversalDTO.TransactionCode)
                {
                    throw new Exception("O codigo informado é diferente do codigo registrado na transacao!");
                }

                AccountDestination.Money = AccountDestination.Money - transactions.Money;

                if (AccountDestination.Money < 0)
                {
                    throw new Exception("A transacao selecionada nao pode ser estornada,porque o valor ja foi utilizado!");
                }

                _accountRepository.Save(AccountDestination);

                Transactions transactionsReversal = new Transactions();
                transactionsReversal.AccountSourceId   = AccountDestination.Id;
                transactionsReversal.Money             = transactions.Money;
                transactionsReversal.TransactionCode   = GeneratedCodeContribution.GetCode();
                transactionsReversal.TransactionTypeId = (int)TransactionsTypeEnum.REVERSAL;
                transactionsReversal.Created           = DateTime.Now;

                _transactionRepository.Save(transactionsReversal);


                transactions.Reversed = true;
                _transactionRepository.Save(transactions);

                _transactionRepository.Commit();

                return(transactionsReversal);
            }
            catch (Exception ex)
            {
                _transactionRepository.RollBack();
                throw ex;
            }
        }
示例#3
0
        public Transactions PostReversal(TransactionsReversalDTO transactionsReversalDTO)
        {
            Transactions transactions = _transactionRepository.GetTransactionReversal(transactionsReversalDTO.TransactionId);

            if (transactions.AccountSource == null && transactions.AccountDestination.Master == true &&
                String.IsNullOrEmpty(transactionsReversalDTO.TransactionCode))
            {
                throw new Exception("É necessario informar o codigo gerado na transacao para realizaar o estorno!");
            }

            if (transactions.Reversed == true)
            {
                throw new Exception("Essa transacao ja foi estornada!");
            }

            Account AccountDestination = transactions.AccountDestination;
            Account AccountSource      = transactions.AccountSource;

            try
            {
                switch (transactions.TransactionTypeId)
                {
                case (int)TransactionsTypeEnum.DEPOSIT:
                    return(ReversalDeposit(transactions, transactionsReversalDTO));

                case (int)TransactionsTypeEnum.LOAD:
                    return(ReversalLoad(transactions, transactionsReversalDTO));

                case (int)TransactionsTypeEnum.REVERSAL:
                    throw new Exception("Nao é possivel realizar esta operacao!");

                case (int)TransactionsTypeEnum.TRANSFERENCE:
                    return(ReversalTransference(transactions));
                }

                throw new Exception("Nao foi encontrada nenhum transacao para o codigo de transacao informado!");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }