private void CreateLedgerTransactionsShowingTransfer(IEnumerable <Transaction> wrongAccountPayments, string reference) { foreach (var transaction in wrongAccountPayments) { var journal1 = new CreditLedgerTransaction { Amount = transaction.Amount, // Amount is already negative/debit AutoMatchingReference = reference, Date = NewReconLine.Date, Narrative = "Transfer to rectify payment made from wrong account." }; var journal2 = new CreditLedgerTransaction { Amount = -transaction.Amount, AutoMatchingReference = reference, Date = NewReconLine.Date, Narrative = "Transfer to rectify payment made from wrong account." }; var ledger = NewReconLine.Entries.Single(l => l.LedgerBucket.BudgetBucket == transaction.BudgetBucket); List <LedgerTransaction> replacementTransactions = ledger.Transactions.ToList(); replacementTransactions.Add(journal1); replacementTransactions.Add(journal2); ledger.SetTransactionsForReconciliation(replacementTransactions); NewReconLine.BalanceAdjustment(transaction.Amount, $"Decrease balance to show transfer to rectify {ledger.LedgerBucket.BudgetBucket.Code} payment made from wrong account.", ledger.LedgerBucket.StoredInAccount); NewReconLine.BalanceAdjustment(-transaction.Amount, $"Increase balance to show transfer to rectify {ledger.LedgerBucket.BudgetBucket.Code} payment made from wrong account.", transaction.Account); } }
public void ConstructWithGuidShouldSetId() { Guid id = Guid.NewGuid(); var subject = new CreditLedgerTransaction(id); Assert.AreEqual(id, subject.Id); }
public LedgerTransaction CreateLedgerTransaction(LedgerBook ledgerBook, LedgerEntryLine reconciliation, LedgerEntry ledgerEntry, decimal amount, string narrative) { if (reconciliation == null) { throw new ArgumentNullException(nameof(reconciliation)); } if (ledgerEntry == null) { throw new ArgumentNullException(nameof(ledgerEntry)); } if (narrative == null) { throw new ArgumentNullException(nameof(narrative)); } LedgerTransaction newTransaction = new CreditLedgerTransaction(); newTransaction.WithAmount(amount).WithNarrative(narrative); newTransaction.Date = reconciliation.Date; // ledgerEntry.AddTransactionForPersistenceOnly(newTransaction); List <LedgerTransaction> replacementTxns = ledgerEntry.Transactions.ToList(); replacementTxns.Add(newTransaction); ledgerEntry.SetTransactionsForReconciliation(replacementTxns); ledgerEntry.RecalculateClosingBalance(ledgerBook); return(newTransaction); }
public LedgerTransactionToDtoMapperTest() { TestData = new CreditLedgerTransaction(new Guid("7F921750-4467-4EA4-81E6-3EFD466341C6")) { Amount = 123.99M, Narrative = "Foo bar." }; }
public void WithAmountMinus50ShouldCreateADebitOf50() { var subject = new CreditLedgerTransaction(); LedgerTransaction result = subject.WithAmount(-50); Assert.AreEqual(-50M, result.Amount); }
public void WithAmount50ShouldReturnSameObjectForChaining() { var subject = new CreditLedgerTransaction(); LedgerTransaction result = subject.WithAmount(50); Assert.AreSame(subject, result); }
public void UsingTestData1_AddTransactionShouldEffectEntryNetAmount() { var entryLine = Act(this.subject, this.testDataBudget); var newTransaction = new CreditLedgerTransaction { Amount = -100 }; var entry = entryLine.Reconciliation.Entries.First(); entry.AddTransactionForPersistenceOnly(newTransaction); Assert.AreEqual(-100, entry.NetAmount); }
private void PerformBankTransfer(LedgerBook ledgerBook, TransferFundsCommand transferDetails, LedgerEntryLine ledgerEntryLine) { var sourceTransaction = new CreditLedgerTransaction { Amount = -transferDetails.TransferAmount, AutoMatchingReference = transferDetails.AutoMatchingReference, Date = ledgerEntryLine.Date, Narrative = transferDetails.Narrative }; var destinationTransaction = new CreditLedgerTransaction { Amount = transferDetails.TransferAmount, AutoMatchingReference = transferDetails.AutoMatchingReference, Date = ledgerEntryLine.Date, Narrative = transferDetails.Narrative }; if (transferDetails.BankTransferRequired) { ledgerEntryLine.BalanceAdjustment(-transferDetails.TransferAmount, transferDetails.Narrative, transferDetails.FromLedger.StoredInAccount); ledgerEntryLine.BalanceAdjustment(transferDetails.TransferAmount, transferDetails.Narrative, transferDetails.ToLedger.StoredInAccount); this.transactionRuleService.CreateNewSingleUseRule( transferDetails.FromLedger.BudgetBucket.Code, null, new[] { transferDetails.AutoMatchingReference }, null, -transferDetails.TransferAmount, true); this.transactionRuleService.CreateNewSingleUseRule( transferDetails.ToLedger.BudgetBucket.Code, null, new[] { transferDetails.AutoMatchingReference }, null, transferDetails.TransferAmount, true); } // No need for a source transaction for surplus ledger. if (!(transferDetails.FromLedger.BudgetBucket is SurplusBucket)) { var ledgerEntry = ledgerEntryLine.Entries.Single(e => e.LedgerBucket == transferDetails.FromLedger); var replacementTxns = ledgerEntry.Transactions.ToList(); replacementTxns.Add(sourceTransaction); ledgerEntry.SetTransactionsForReconciliation(replacementTxns); ledgerEntry.RecalculateClosingBalance(ledgerBook); } // No need for a destination transaction for surplus ledger. if (!(transferDetails.ToLedger.BudgetBucket is SurplusBucket)) { var ledgerEntry = ledgerEntryLine.Entries.Single(e => e.LedgerBucket == transferDetails.ToLedger); var replacementTxns = ledgerEntry.Transactions.ToList(); replacementTxns.Add(destinationTransaction); ledgerEntry.SetTransactionsForReconciliation(replacementTxns); ledgerEntry.RecalculateClosingBalance(ledgerBook); } }