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));
            }
        }
示例#3
0
        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);
            }
        }