Сначала общая идея. Некоторые действия с деньгами удобно представлять в виде виртуального счета. С такими счетами нужно оперировать осторожно. В частности:
* Операции со счетом будут представляться как проводки со своих активов на этот счет и обратно.
* Счет должен быть закрыт по достижению балансом нуля.
* Если деньги на счете не наши, то этот счет не нужно включать в общий баланс. Если баланс по счету неважен, то можно слить счет со Вселенским и проводки на него превратить в расходы.
* Часто возникает вопрос со знаком баланса на таком счете. Простейшая логика такая: поймите, какой знак будет у проводок в активах, на этом счете проводки будут иметь обратный знак. Соответственно отсюда можно понять, будет ли счет увеличиваться до нуля или уменьшаться.
Простой пример: вы дали в долг. Как это учитывать?
* Заводится новый счет "васин долг". Счет не должен включаться в общий баланс!
* Баланс на счете устанавливается в величину, равную объему долга.
* Счет помечается как пассив.
* Факт отдачи васей части долга фиксируется как проводка со счета "васин долг" на счет "наличные".
* Баланс счета указывает сколько васе осталось отдать.
* Достижение нуля указывает на то, что вася расплатился.
Рассмотрим пример посложнее : отдача кредита. К сожалению финансовые программы не имеют возможности рассчитывать сложные проценты, поэтому процентные коррекции придется вводить вручную.
Рассмотрим сначала беспроцентный кредит.
* Заводится новый счет "кредит на квартиру". Счет не должен включаться в общий баланс!
* Баланс на счете устанавливается в отрицательную величину, равную объему кредита.
* Устанавливается [[FinanceSchedule|периодическая планируемая транзакция]] на дату вноса следующего платежа
* Транзакция представляет из себя проводку из счета "наличные" на счет "кредит на квартиру".
* Сумма денег равна регулярному платежу
* При наступлении дня платежа транзакция вводится в реестр с суммой денег, равной реально внесенной сумме.
* Таким образом, при каждом платеже сумма увеличивается и приближается к нулю. Баланс с обратным знаком равен остатку платежа.
* Достижение нуля обозначает конец выплат.
Если размер процента абсолютный, то достаточно откорректировать стартовый баланс и все выплаты на его сумму.
Если же проценты сложные, то проценты нужно учитывать при каждом взносе. Один из вариантов - это добавлять каждый раз транзакцию "расход денег на счете, равный размеру накопленных процентов" (заметим, что такая транзакция будет уменьшать баланс, увеличивая его абсолютное значение). Тогда взнос будет покрывать частично проценты, а частично - сам кредит. Другой вариант - корректировать начальный баланс. Тогда к концу текущий баланс будет ноль, а начальный - общая сумма выплаченных денег. Оба способа требуют хорошего понимания рассчетов кредитных процентов.
Пример сложных процентов.
Выдана сумма 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) (категория "погашение процентов").