run it through a smelling checker

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@9192 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Linas Vepstas 2003-08-29 13:16:50 +00:00
parent 12b7334d1e
commit 2670d4dc53

View File

@ -30,7 +30,7 @@ other similar accounting concepts requires 'Lots' to be correctly
handled. Lots are a way of identifying that an item bought in one handled. Lots are a way of identifying that an item bought in one
transaction is the same as that sold in another transaction. transaction is the same as that sold in another transaction.
When a book is closed, the entire lot must be brought forward, When a book is closed, the entire lot must be brought forward,
and not just the account balance, because depreciation, captial and not just the account balance, because depreciation, capital
gains, taxes, etc. depend on the dates of the originating gains, taxes, etc. depend on the dates of the originating
transaction. See 'lots.txt' for details. transaction. See 'lots.txt' for details.
@ -64,7 +64,7 @@ this. More specifically: Split one file into two, with only 'old'
transactions in one, and only 'new' transactions in the other. transactions in one, and only 'new' transactions in the other.
I believe that this can be 'easily' coded by creating a second instance I believe that this can be 'easily' coded by creating a second instance
of a gnc-book structure in memory, copying all the account info of a qofbook structure in memory, copying all the account info
into it, and using Query.c to copy in only the 'old' transactions. into it, and using Query.c to copy in only the 'old' transactions.
(and v.v. using Query.c to delete the old transactions in the other copy.) (and v.v. using Query.c to delete the old transactions in the other copy.)
Then, look up the ending balance on all asset/liability accounts Then, look up the ending balance on all asset/liability accounts
@ -74,7 +74,7 @@ The transfer description is, of course, 'opening balance'.
Balances of income/expense accounts are zeroed out. Balances of income/expense accounts are zeroed out.
I believe this code would be easy to write in C or scheme. There may be I believe this code would be easy to write in C or scheme. There may be
a few bugs/difficulties lurking in gnc-book that might trip things up. a few bugs/difficulties lurking in qofbook that might trip things up.
Also, at a minimum, there needs to be a GUI dialog, asking for the Also, at a minimum, there needs to be a GUI dialog, asking for the
date on which to close the books. date on which to close the books.
@ -233,20 +233,20 @@ Pro's & Con's
------------- -------------
I am not aware of any con's to plan A at this point. I am not aware of any con's to plan A at this point.
Imlementation Overview Implementation Overview
---------------------- ----------------------
Plan A has been implemented in the engine. To quickly summarize: Plan A has been implemented in the engine. To quickly summarize:
-- Partitioning involves splitting one book into two, called the -- Partitioning involves splitting one book into two, called the
"old, closing book", and the "current open book". "old, closing book", and the "current open book".
-- Accounts are copied between old and new books. One of the copies -- Accounts are copied between old and new books. One of the copies
is issued new GUID's, but the rest of teh account data is copied. is issued new GUID's, but the rest of the account data is copied.
KVP pairs are then added so that each copy points at the other, KVP pairs are then added so that each copy points at the other,
and can thus be easily found. The "gemini" KVP keyword is used. and can thus be easily found. The "gemini" KVP keyword is used.
The opening balance is zeroed for income accounts. A transaction The opening balance is zeroed for income accounts. A transaction
is created to set the correct opening balance on asset accounts. is created to set the correct opening balance on asset accounts.
The transaction is a tranfer from equity. An equity account is The transaction is a transfer from equity. An equity account is
created automagically, if neeeded. created automagically, if needed.
-- Transactions. Transactions are partitioned, and end up either -- Transactions. Transactions are partitioned, and end up either
in the old or the new book. Splits move with transactions. in the old or the new book. Splits move with transactions.
@ -265,7 +265,7 @@ Plan A has been implemented in the engine. To quickly summarize:
-- Scheduled transactions/recurring transactions. These are left -- Scheduled transactions/recurring transactions. These are left
in the new book, untouched. They are not copied into the old in the new book, untouched. They are not copied into the old
book, and no trace of thier existance is left in the old book. book, and no trace of their existence is left in the old book.
-- Business Objects. Not implemented. -- Business Objects. Not implemented.
@ -304,15 +304,15 @@ Implementation Notes:
because they can be easily picked apart by an appropriate SQL query. because they can be easily picked apart by an appropriate SQL query.
(Not tested, probably borken). (Not tested, probably borken).
Period-closing does not delete enything from the SQL database. That's Period-closing does not delete anything from the SQL database. That's
the design. The core assumption is that having lots of old data in the the design. The core assumption is that having lots of old data in the
sql db wouldn't slow it down, and thus, nothing needed to be actually SQL DB wouldn't slow it down, and thus, nothing needed to be actually
deleted. So it doesn't delete anything. deleted. So it doesn't delete anything.
However, an sql admin, if they were desperate to trim the db size, However, an SQL admin, if they were desperate to trim the DB size,
could DELETE FROM * WHERE bookguid='asdfasdfasdf'; could DELETE FROM * WHERE bookguid='asdfasdfasdf';
-- The xml-file backend can store multiple books in one file. There -- The XML-file backend can store multiple books in one file. There
is currently minimal support for writing out multiple books, is currently minimal support for writing out multiple books,
one per file (this enables faster load, by not loading old books). one per file (this enables faster load, by not loading old books).
There is currently no support for loading multiple books from multiple There is currently no support for loading multiple books from multiple
@ -335,7 +335,7 @@ a long time ago.
The biggest drawback to the automatic computation of the gains/losses The biggest drawback to the automatic computation of the gains/losses
is that there is no GUI to specify alternate accounting methods is that there is no GUI to specify alternate accounting methods
(e.g. LIFO, or hand-picked lots, etc.) There is bascially no practical (e.g. LIFO, or hand-picked lots, etc.) There is basically no practical
way to 'undo' the results of the gain/loss computations. way to 'undo' the results of the gain/loss computations.
The other main drawback to book closing is that this will prevent The other main drawback to book closing is that this will prevent
@ -343,17 +343,11 @@ multi-year (multi-period) reports & graphs from being generated.
The old data will be in separate files, and there is currently no The old data will be in separate files, and there is currently no
way to load several files at once. way to load several files at once.
I would like to hear some thoughts/discussion on these issues.
Bug reports, too. A ranking of 'the most important related
task to do next' would be good. One, um, uncomfortable remark:
I am so flooded in email that I may not be able to react for a while.
(Like a week or more).
Open Issues/Questions that Need Discussion: Open Issues/Questions that Need Discussion:
------------------------------------------- -------------------------------------------
*) How to handle business objects? e.g. vendors, customers should be *) How to handle business objects? e.g. vendors, customers should be
copied into both old and new books. But invocies should be in one copied into both old and new books. But invoices should be in one
or the other. Need to document which is which. or the other. Need to document which is which.
*) Discussion Q: What should the naming convention be for the different *) Discussion Q: What should the naming convention be for the different
@ -365,7 +359,7 @@ Open Issues/Questions that Need Discussion:
where the number is the GUID of the closed book (needed to be able to where the number is the GUID of the closed book (needed to be able to
quickly find the book/file) and 'my-gnucash-file.xac' is the name of quickly find the book/file) and 'my-gnucash-file.xac' is the name of
the orignial file whose books were closed. the original file whose books were closed.
Need to change the name to include the word "archive". Need to change the name to include the word "archive".
@ -420,7 +414,7 @@ Open Issues / ToDo
*) add 13-period support to FreqSpec and the FreqSpec widget. *) add 13-period support to FreqSpec and the FreqSpec widget.
e.g. from the mailing list: e.g. from the mailing list:
One of the calenders my company uses is like this: One of the calendars my company uses is like this:
13 periods 13 periods
1st period begins jan 1st, partial first week plus 4 weeks. 1st period begins jan 1st, partial first week plus 4 weeks.
2nd - 13th period begins on a sunday every four weeks. 2nd - 13th period begins on a sunday every four weeks.