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