Сначала общая идея. Некоторые действия с деньгами удобно представлять в виде виртуального счета. С такими счетами нужно оперировать осторожно. В частности:
Простой пример: вы дали в долг. Как это учитывать?
Рассмотрим пример посложнее : отдача кредита. К сожалению финансовые программы не имеют возможности рассчитывать сложные проценты, поэтому процентные коррекции придется вводить вручную.
Рассмотрим сначала беспроцентный кредит.
Если размер процента абсолютный, то достаточно откорректировать стартовый баланс и все выплаты на его сумму.
Если же проценты сложные, то проценты нужно учитывать при каждом взносе. Один из вариантов - это добавлять каждый раз транзакцию “расход денег на счете, равный размеру накопленных процентов” (заметим, что такая транзакция будет уменьшать баланс, увеличивая его абсолютное значение). Тогда взнос будет покрывать частично проценты, а частично - сам кредит. Другой вариант - корректировать начальный баланс. Тогда к концу текущий баланс будет ноль, а начальный - общая сумма выплаченных денег. Оба способа требуют хорошего понимания рассчетов кредитных процентов.
Пример сложных процентов. Выдана сумма S под P процентов годовых на Y лет. Ежедневная сумма выплаты
Sd = S / (Y * 360)
. Допустим, что после предыдущей выплаты в день d(n-1) суммы S(n-1) нужно оплатить в день d(n) (дни считаются от дня выдачи из расчета 360 дней в году). Тогда нужно вернуть
A(n) = S / (Y * 360) * (d(n-1) - d(n))
собственно кредита. Набежавшие проценты составляют
B(n) = S(n-1) * P/100 * (d(n-1) - d(n))/360
. Выплата D(n) = A(n) + B(n) + C(n) , где C(n) - величина досрочного погашения.
S(n) = S(n-1) - A(n) - C(n)
. B(n) гасит проценты. На нашем счете стартовый баланс -S, текущий - -S(n-1). Добавляем расход B(n) (или доход -B(n)) с категорией “набежавщие проценты”. Также добавляем проводки “ перевод со счета наличные” с суммами A(n) + C(n) (категория “погашение кредита”) и B(n) (категория “погашение процентов”).