Сначала общая идея. Некоторые действия с деньгами удобно представлять в виде виртуального счета. С такими счетами нужно оперировать осторожно. В частности:

Простой пример: вы дали в долг. Как это учитывать?

Рассмотрим пример посложнее : отдача кредита. К сожалению финансовые программы не имеют возможности рассчитывать сложные проценты, поэтому процентные коррекции придется вводить вручную.

Рассмотрим сначала беспроцентный кредит.

Если размер процента абсолютный, то достаточно откорректировать стартовый баланс и все выплаты на его сумму.

Если же проценты сложные, то проценты нужно учитывать при каждом взносе. Один из вариантов - это добавлять каждый раз транзакцию “расход денег на счете, равный размеру накопленных процентов” (заметим, что такая транзакция будет уменьшать баланс, увеличивая его абсолютное значение). Тогда взнос будет покрывать частично проценты, а частично - сам кредит. Другой вариант - корректировать начальный баланс. Тогда к концу текущий баланс будет ноль, а начальный - общая сумма выплаченных денег. Оба способа требуют хорошего понимания рассчетов кредитных процентов.

Пример сложных процентов. Выдана сумма 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) (категория “погашение процентов”).