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); } }
private void AddBalanceAdjustmentsForFutureTransactions(StatementModel statement, DateTime reconciliationDate) { var adjustmentsMade = false; foreach (var futureTransaction in statement.AllTransactions .Where( t => t.Account.AccountType != AccountType.CreditCard && t.Date >= reconciliationDate && !(t.BudgetBucket is PayCreditCardBucket))) { adjustmentsMade = true; NewReconLine.BalanceAdjustment( -futureTransaction.Amount, "Remove future transaction for " + futureTransaction.Date.ToString("d"), futureTransaction.Account); } if (adjustmentsMade) { TodoTasks.Add(new ToDoTask("Check auto-generated balance adjustments for future transactions.", true)); } }
private void CreateBalanceAdjustmentForBudgetAmounts() { List <TransferTask> transferTasks = TodoTasks.OfType <TransferTask>().ToList(); foreach (IGrouping <Account, TransferTask> grouping in transferTasks.GroupBy(t => t.SourceAccount, tasks => tasks)) // Rather than create a task, just do it { NewReconLine.BalanceAdjustment( -grouping.Sum(t => t.Amount), "Adjustment for moving budgeted amounts from income account. ", grouping.Key); } foreach (IGrouping <Account, TransferTask> grouping in transferTasks.GroupBy(t => t.DestinationAccount, tasks => tasks)) // Rather than create a task, just do it { NewReconLine.BalanceAdjustment( grouping.Sum(t => t.Amount), "Adjustment for moving budgeted amounts to destination account. ", grouping.Key); } }