SX Functional Def [WAS: Re: Gnucash 1.8 proposed schedule (and HBCI status)]

Josh Sled
Thu, 26 Sep 2002 21:08:41 -0700

On Wed, Sep 25, 2002 at 09:56:37AM +0100, wrote:

| I know that this has been asked for before, but does anyone know when
| recurring transactions will be ready? I believe that someone is already
| working on that feature?

On Wed, Sep 25, 2002 at 11:18:16AM +0100, David Parrott wrote:

| Does there exist a functional definition for recurring transactions?
| For example, being in the habit of pre-filling Gnucash with the whole
| month's recurring transactions on pay-day up to the next pay-day (15th
| in my case), in order to project budgets/disposable income, it would be
| nice to know that I will be able to do this automatically.

There isn't a functional definition, exactly [apart from the ultimate one:
the code ;)]  ... but lemme see if I can whip something out which will
fit the bill...

Scheduled Transactions, Functional Definition

GnuCash should support the capability to define transactions which are
scheduled to recur, and subsequently to enter a transaction on the books
on the dates specified by the recurrance definition.  This transaction
should be defined by the user as a template, which will be copied and
fixed-up at instantiation time to contain values correct for the given
instantiation.  Most relevantly, the to-be-determined values are those
of the credit/debit cell values.  To the end of creating a template of
the transactions to be created, we make the following requirements:

1. The interface should be as close as possible to that of the ledger
   editing interface.
2. Acknowledging that the credit/debit cell values can change, we would
   like to have the following abilities:
  a) specify a fixed value
  b) enter an expression containing variables, the values for which the
     user will be prompted for when the transaction is to-be-created.
  c) expression-support for simple functions which ease the calculation
     of the value from a more-easily entered value from the system or user.

As well, there are various flags to control the creation.  The following
properties are to be supported:

1. Creation in advance of the frequency of recurrance.
2. Reminding the user in advance of the frequency of recurrance.
3. Ability to simply create the transaction, and a further option to not
   even notify the user of this creation.

The user should have a reasonable range of control of the frequency of
recurrance, such as:

. Once
. Daily [+interval]
. Weekly [+interval]
. Semi-monthly
. Bi-weekly
. Monthly, day-of-month [+interval]
. Quarterly
. Tri-Yearly
. Semi-Anually
. Yearly [+interval]

As well, the user should be able to select an existing transaction from
their books, and turn it into a Scheduled Transaction, using the selected
transaction as the template transaction.

At the time of creation, the user would like to have the following

1. Select the reminders of instances which are to be created.
2. Ignore or Postpone instances which have been scheduled to be created.
3. Provide the values for variables which have been requested, in order
   to provide the data necessary to create the transaction.
4. Have final approval/editing of the created transactions.
5. Know which transactions have run their course, and optionally remove
   them from the system.


Pardon the tense, and that's what's in CVS with the exception of the
ignore/postpone to-be-created-instance functionality, which is finished,
on my hard drive, and ready-to-be-checked-in except for an unrelated XML
serialization crash I'd like to debug first.  Your testing and feedback
is _much_ appreciated; search the mlist archives for information about
using g-wrap-1.3.2 to get CVS-gnucash up and running w/o breaking your
1.6.x installation.

Also, note that there is a Mortgage/Loan Druid which creates the
scheduled transactions required to support the repayment of a long-term
loan ... there's some bugs filed on it [and the rest of the SX stuff]
... so make sure you check the existing bugs before reporting new ones.

Yes, SXes will be in 1.8.  Any testing done now will likely reduce the
number of bugs present in the 1.8 release.


-- - `a=jsled;; echo ${a}@${b}`, ICQ:4983267, {AIM,YIM}:joshsled