コード例 #1
0
        public async Task Remove(CashAccount entity)
        {
            _context.CashAccounts.Remove(entity);
            await UpdateBalance(entity, false);

            await _context.SaveChangesAsync();
        }
        public async Task <int> UpdateCashAccountAsync(CashAccount model)
        {
            _dataSource.Entry(model).State = EntityState.Modified;
            int res = await _dataSource.SaveChangesAsync();

            return(res);
        }
コード例 #3
0
        public virtual void VendorClass_RowPersisting(PXCache cache, PXRowPersistingEventArgs e)
        {
            VendorClass row = (VendorClass)e.Row;
            PXSelectBase <CashAccount> select = new PXSelect <CashAccount, Where <CashAccount.cashAccountID,
                                                                                  Equal <Required <VendorClass.cashAcctID> > > >(this);

            if (!String.IsNullOrEmpty(row.CuryID) && (row.AllowOverrideCury ?? false) != true)
            {
                CashAccount acct = select.Select(row.CashAcctID);
                if (acct != null)
                {
                    if (row.CuryID != acct.CuryID)
                    {
                        if (cache.RaiseExceptionHandling <VendorClass.cashAcctID>(e.Row, acct.CashAccountCD, new PXSetPropertyException(Messages.VendorCuryDifferentDefPayCury, typeof(VendorClass.cashAcctID).Name)))
                        {
                            throw new PXRowPersistingException(typeof(VendorClass.cashAcctID).Name, null, Messages.VendorCuryDifferentDefPayCury, typeof(VendorClass.cashAcctID).Name);
                        }
                    }
                }
            }
            if (VendorClassRecord.Cache.GetStatus(e.Row) == PXEntryStatus.Inserted)
            {
                EPEmployeeClass e1 = PXSelect <EPEmployeeClass, Where <EPEmployeeClass.vendorClassID, Equal <Current <VendorClass.vendorClassID> > > > .SelectSingleBound(this, new object[] { e.Row });

                if (e1 != null)
                {
                    cache.IsDirty = false;
                    e.Cancel      = true;
                    throw new PXRowPersistingException(typeof(VendorClass.vendorClassID).Name, null, Messages.EmployeeClassExists);
                }
            }
        }
コード例 #4
0
        protected virtual void CABatch_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            CABatch row = e.Row as CABatch;

            if (row == null)
            {
                return;
            }
            CABatchExt rowExt = PXCache <CABatch> .GetExtension <CABatchExt>(row);

            bool isReleased = (row.Released == true);


            PXUIFieldAttribute.SetEnabled(sender, row, false);
            PXUIFieldAttribute.SetEnabled <CABatch.batchNbr>(sender, row, true);

            bool isProcessing = row.Processing ?? false;

            PXUIFieldAttribute.SetEnabled <CABatch.processing>(sender, row, true);

            bool allowDelete = !isReleased;

            if (allowDelete)
            {
                allowDelete = !(this.ReleasedPayments.Select(row.BatchNbr).Count > 0);
            }
            sender.AllowDelete = allowDelete;

            CashAccount cashaccount  = (CashAccount)PXSelectorAttribute.Select <CABatch.cashAccountID>(sender, row);
            bool        clearEnabled = (row.Released != true) && (cashaccount != null) && (cashaccount.Reconcile == true);

            if (!isReleased)
            {
                PXUIFieldAttribute.SetEnabled <CABatch.hold>(sender, row, !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.tranDesc>(sender, row, !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.tranDate>(sender, row, !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.batchSeqNbr>(sender, row, !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.extRefNbr>(sender, row, !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.released>(sender, row, true);

                bool hasDetails = this.BatchPayments.Select().Count > 0;
                PXUIFieldAttribute.SetEnabled <CABatch.paymentMethodID>(sender, row, !hasDetails && !isReleased);
                PXUIFieldAttribute.SetEnabled <CABatch.cashAccountID>(sender, row, !hasDetails && !isReleased);
                if (hasDetails)
                {
                    decimal?curyTotal = Decimal.Zero, total = Decimal.Zero;
                    this.CalcDetailsTotal(ref curyTotal, ref total);
                    row.DetailTotal = total;
                    row.CuryTotal   = curyTotal;
                }
            }
            PXUIFieldAttribute.SetVisible <CABatch.curyDetailTotal>(sender, row, isReleased);
            PXUIFieldAttribute.SetVisible <CABatch.curyTotal>(sender, row, !isReleased);
            PXUIFieldAttribute.SetEnabled <CABatch.exportFileName>(sender, row, isProcessing);
            PXUIFieldAttribute.SetEnabled <CABatch.exportTime>(sender, row, isProcessing);
            PXUIFieldAttribute.SetVisible <CABatch.dateSeqNbr>(sender, row, isReleased);

            this.Release.SetEnabled(!isReleased && (row.Hold == false));
            this.Export.SetEnabled(isReleased);
        }
コード例 #5
0

        
コード例 #6
0
        public void ProcessTransactions_ShouldNotRemoveNewCompletedTransaction()
        {
            // create new cancelled transaction
            var newCompletedTransaction = new CashAccountTransaction
            {
                FinalizationDateTime = DateTime.Now.AddDays(-1),
                StatusId             = (int)TransactionStatusType.Completed
            };

            // create account with old transaction
            var account = new CashAccount {
                Transactions = new Collection <CashAccountTransaction> {
                    newCompletedTransaction
                }
            };

            // return account when retrieving from the repository
            A.CallTo(() => _repository.GetAccountWithTransactions(A <int> .Ignored)).Returns(account);

            // process transactions for the account
            _accountManager.ProcessTransactions();

            // transactions should be retrieved from the repository
            A.CallTo(() => _repository.GetAccountWithTransactions(A <int> .Ignored)).MustHaveHappened();

            // account should have been updated
            var newAccount = _accountManager.GetFieldValue <CashAccount>("_account");

            newAccount.Should().Be(account);

            // check that transactions are as expected
            newAccount.Transactions.Should().Contain(t => t == newCompletedTransaction);
        }
コード例 #7
0
        public async Task <ActionResult> Post([FromBody] CashAccountInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var condition = new QueryCondition <CashAccount>();

            condition.QueryPredicates.Add(x => x.AccountName == model.AccountName);


            var test = await _service.GetBy(condition);

            if (!(test is null))
            {
                ModelState.AddModelError(typeof(CashAccountInputModel).GetType().GetProperty("AccountName").Name,
                                         "The entity you are trying to save already exists!");
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var account = new CashAccount()
            {
                AccountBalance = model.AccountBalance,
                AccountName    = model.AccountName,
                Currency       = model.Currency,
                IsActivated    = model.IsActivated
            };

            var detail = await _service.AddCashAccount(account);

            return(CreatedAtAction(nameof(Get), new { id = detail?.Id }, detail));
        }
コード例 #8
0
ファイル: SessionTest.cs プロジェクト: Midova/mcounter
        /// <summary>
        /// Создание и заполнение тестового класса Budget.
        /// </summary>
        /// <returns>Заболненный класс Budget./returns>
        private Budget PopulateData()
        {
            var budget = new Budget();

            var cashAccount = new CashAccount {
                Description = "Cash account"
            };

            cashAccount.AddOperation(new MoneyOperation()
            {
                OperationName = "Зарплата",
                OperationDate = DateTime.Today,
                Tags          = { "Вова" },
                Value         = 5
            });

            var nonCashaccount = new NonCashAccount {
                Description = "Non-Cash account"
            };

            nonCashaccount.AddOperation(new MoneyOperation()
            {
                OperationName = "Налог",
                OperationDate = new DateTime(2016, 12, 05),
                Tags          = { "Даша", "машина", "Вова" },
                Value         = -2
            });

            budget.AddAccount(cashAccount);
            budget.AddAccount(nonCashaccount);

            return(budget);
        }
コード例 #9
0
        public async Task Create(CashAccount entity)
        {
            _context.CashAccounts.Add(entity);
            await _context.SaveChangesAsync();

            await UpdateBalance(entity, true);
        }
        public async Task ShouldUpdate_CashTransaction_UsingCashAccountAggregate()
        {
            CashAccount account = await _cashAcctRepo.GetByIdAsync(new Guid("417f8a5f-60e7-411a-8e87-dfab0ae62589"));

            CashAccountTransaction transaction = account.CashAccountTransactions.FirstOrDefault(p => p.Id.Equals(25));

            transaction.UpdateCashAcctTransactionDate(CashAcctTransactionDate.Create(new DateTime(2021, 10, 16)));
            transaction.UpdateCashAcctTransactionAmount(CashAcctTransactionAmount.Create(8664.99M));

            //TODO Need to know the business rules for these two.
            // transaction.UpdateExternalAgentId(cashAccountTransaction.AgentId);
            // transaction.UpdateEconomicEventId(cashAccountTransaction.EventId);

            transaction.UpdateCheckNumber(CheckNumber.Create("99999"));
            transaction.UpdateRemittanceAdvice("0000000");
            transaction.UpdateUserId(UserId.Create(new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e")));

            account.UpdateCashAccountTransaction(transaction);
            _cashAcctRepo.Update(account);
            await _unitOfWork.Commit();

            CashAccountTransaction result = account.CashAccountTransactions.FirstOrDefault(p => p.Id.Equals(25));

            Assert.Equal(transaction.CashAcctTransactionDate, result.CashAcctTransactionDate);
            Assert.Equal(transaction.CashAcctTransactionAmount, result.CashAcctTransactionAmount);
            Assert.Equal(transaction.CheckNumber, result.CheckNumber);
            Assert.Equal(transaction.RemittanceAdvice, result.RemittanceAdvice);
            Assert.Equal(transaction.UserId, result.UserId);
        }
コード例 #11
0

        
コード例 #12
0
        public void WithDraw_Successful_On_Sufficient_Fund()
        {
            IAccount account = new CashAccount("1234123412341234", 100);
            ICard    card    = new CashCard(account, 1234);
            var      retVal  = card.WithDraw(1234, 5);

            Assert.IsTrue(retVal == 0);
        }
コード例 #13
0
        public void WithDrawal_Failed_On_Invalid_Pin()
        {
            var      initBalance = 100;
            IAccount account     = new CashAccount("1234123412341234", initBalance);
            ICard    card        = new CashCard(account, 1234);

            var retVal = card.WithDraw(9999, 5);
        }
コード例 #14
0
    public string NameOf(VoucherDetail detail)
    {
        m_CashQuery ??= CashAccounts.Select(sa
                                            => ParsingF.PureDetailQuery(sa.Query, new() { User = User, Today = DateTime.UtcNow.Date })).ToList();
        var id = m_CashQuery.FindIndex(detail.IsMatch);

        return(CashAccount.NameOf(detail, id < 0 ? null : CashAccounts[id]));
    }
コード例 #15
0
        public void WithDraw_Failed_On_Insufficient_Fund()
        {
            IAccount account = new CashAccount("1234123412341234", 100);
            ICard    card    = new CashCard(account, 1234);
            var      retVal  = card.WithDraw(1234, 200);

            Assert.IsFalse(retVal == 0);
        }
コード例 #16
0
        public void Test_AddingSameAccountReferenceTwice()
        {
            AccountRepository accRep = AccountRepository.getInstance();

            CashAccount cashAcc = new CashAccount(accRep.getNewID(), "Gotovina");

            accRep.addAccount(cashAcc);
            accRep.addAccount(cashAcc);
        }
コード例 #17
0
        public void WithDrawal_Successful_On_Valid_Pin()
        {
            var      initBalance = 100;
            IAccount account     = new CashAccount("1234123412341234", initBalance);
            ICard    card        = new CashCard(account, 1234);
            var      retVal      = card.WithDraw(1234, 5);

            Assert.IsTrue(retVal == 0);
        }
コード例 #18
0
        public void BalanceAtSpecificDateWithNoTransactions()
        {
            var account = new CashAccount();

            account.Deposit(new Date(2000, 01, 01), 100.00m, "");
            account.Deposit(new Date(2000, 02, 01), 200.00m, "");
            account.Withdraw(new Date(2000, 03, 01), 50.00m, "");

            account.Balance(new Date(2000, 02, 15)).Should().Be(300.00m);
        }
コード例 #19
0
        public void Test_AddingAccountWithSameName()
        {
            AccountRepository accRep = AccountRepository.getInstance();

            CashAccount    cashAcc = new CashAccount(accRep.getNewID(), "Gotovina");
            CurrentAccount currAcc = new CurrentAccount(accRep.getNewID(), "Gotovina");

            accRep.addAccount(cashAcc);
            accRep.addAccount(currAcc);
        }
コード例 #20
0
 public static CashAccountResult ToResult(CashAccount cashAccount)
 {
     return(new CashAccountResult
     {
         Identification = cashAccount.Identification,
         Name = cashAccount.Name,
         SchemeName = cashAccount.SchemeName?.Name,
         SecondaryIdentification = cashAccount.SecondaryIdentification
     });
 }
コード例 #21
0
        public void BalanceAfterLastTransaction()
        {
            var account = new CashAccount();

            account.Deposit(new Date(2000, 01, 01), 100.00m, "");
            account.Deposit(new Date(2000, 02, 01), 200.00m, "");
            account.Withdraw(new Date(2000, 03, 01), 50.00m, "");

            account.Balance(new Date(2002, 01, 01)).Should().Be(250.00m);
        }
コード例 #22
0
 private void UpdateCashAccountFromModel(CashAccount target, CashAccountModel source)
 {
     target.CashAccountId       = source.CashAccountId;
     target.CashAccountGuid     = source.CashAccountGuid;
     target.CashAccountName     = source.CashAccountName;
     target.IsCashAccountActive = source.IsCashAccountActive;
     target.AccountTypeId       = source.AccountTypeId;
     target.CompanyID           = Convert.ToInt32(source.CompanyID);
     target.OpeningBalance      = Convert.ToDecimal(string.IsNullOrEmpty(source.OpeningBalance) ? "0" : source.OpeningBalance);
 }
コード例 #23
0
ファイル: AccountManager.cs プロジェクト: CarlosVV/mediavf
 /// <summary>
 /// Instantiates an <see cref="AccountManager"/>
 /// </summary>
 /// <param name="settings"></param>
 /// <param name="transactionProcessor"></param>
 /// <param name="repositoryFactory"></param>
 /// <param name="account"></param>
 public AccountManager(IAccountManagementSettings settings,
                       ITransactionProcessor transactionProcessor,
                       IAccountRepositoryFactory repositoryFactory,
                       CashAccount account)
 {
     _settings             = settings;
     _transactionProcessor = transactionProcessor;
     _repositoryFactory    = repositoryFactory;
     _account = account;
 }
コード例 #24
0
        public void Topup_Successful()
        {
            var      initBalance = 100;
            IAccount account     = new CashAccount("1234123412341234", initBalance);
            ICard    card        = new CashCard(account, 1234);

            decimal topUpVal = 100;
            var     retVal   = card.Topup(topUpVal);

            Assert.IsTrue(account.Balance == (initBalance + topUpVal));
        }
コード例 #25
0
        public async Task <int> DeleteCashAccountAsync(CashAccountModel model)
        {
            var bankAcc = new CashAccount {
                CashAccountId = model.CashAccountId
            };

            using (var dataService = DataServiceFactory.CreateDataService())
            {
                return(await dataService.DeleteCashAccountAsync(bankAcc));
            }
        }
コード例 #26
0
        private void OnRemoving(CashAccount account, int operationsCount)
        {
            var result = MessageBox.Show(string.Format(
                                             AppResources.RemoveAccountMessage, account.Name, operationsCount),
                                         AppResources.AttentionCaption, MessageBoxButton.OKCancel);

            if (result == MessageBoxResult.OK)
            {
                _viewModel.KeepRemoving(account);
            }
        }
        public async Task ShouldDelete_CashTransaction_UsingCashAccountAggregate()
        {
            CashAccount account = await _cashAcctRepo.GetByIdAsync(new Guid("417f8a5f-60e7-411a-8e87-dfab0ae62589"));

            CashAccountTransaction transaction = account.CashAccountTransactions.FirstOrDefault(p => p.Id.Equals(25));

            account.DeleteCashAccountTransaction(transaction);
            CashAccountTransaction result = account.CashAccountTransactions.FirstOrDefault(p => p.Id.Equals(25));

            Assert.Null(result);
        }
コード例 #28
0
        public void BalanceNoTransactionsOnThatDate()
        {
            var account = new CashAccount();

            account.Deposit(new Date(2000, 01, 01), 100.00m, "");
            account.Deposit(new Date(2000, 02, 01), 200.00m, "");
            account.Deposit(new Date(2000, 02, 01), 60.00m, "");
            account.Withdraw(new Date(2000, 03, 01), 50.00m, "");

            account.Balance(new Date(2000, 02, 15)).Should().Be(360.00m);
        }
コード例 #29
0
        public async Task <IActionResult> Delete(int id)
        {
            CashAccount cashAccount = await _cashAccountRepository.GetItem(id);

            if (cashAccount == null)
            {
                return(NotFound());
            }
            await _cashAccountRepository.Remove(cashAccount);

            return(Ok());
        }
コード例 #30
0
        private OperationCurrency InitializeCash(CurrencyName currency, CashAccount account)
        {
            var cash = new OperationCurrency()
            {
                Account = account,
                Name    = currency,
                Balance = 0
            };

            _cash.Add(cash);

            return(cash);
        }