This happens already in xaccAccountCommitEdit() and if the Account isn't
being edited, then we inserted the Split in sorted order anyway.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13498 57a11ea4-9604-0410-9ed3-97b8803252fd
index and count reflective of any in-progress edit.
Convert some split iterators from directly using the GList of Splits to
using xaccTransGetSplit().
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13487 57a11ea4-9604-0410-9ed3-97b8803252fd
In contrast to the previous looping construct, this will work even if
the split operations don't have side-effects on the split lists.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13476 57a11ea4-9604-0410-9ed3-97b8803252fd
transaction. This makes it easier to safely iterate over a split list.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13471 57a11ea4-9604-0410-9ed3-97b8803252fd
Pass the *old* parent transaction (since the Split may be moving into
a new transaction) and the old index of the Split in the old Transaction's
list of Splits.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13468 57a11ea4-9604-0410-9ed3-97b8803252fd
(Actually, xaccAccountInsertSplit is #def'd to xaccSplitSetAccount().)
Accounts no longer manage their Split lists. The Account split lists
should only ever be modified from within xaccTransCommitEdit(). This
simplifies some of the operations on Accounts, since they can now be
expressed in terms of operations on Splits.
Also, the consolidation of two operations (RemoveSplit and InsertSplit)
into one operation (xaccSplitSetAccount) means that it's no longer
possible to orphan a Split.
Incidental:
Fix a leak of a KVP frame.
Don't recompute the account balance if we're shutting down.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13462 57a11ea4-9604-0410-9ed3-97b8803252fd
Broken out just for clarity.
Note: There's one piece that I didn't change that I think is conceptually
awkward. It has to do with how/when we would discover that another
user has deleted the transaction we're currently editing. I think it makes
more sense to detect and handle this case in xaccTransCommitEdit() instead
of xaccTransRollbackEdit(), because (a) we don't actually have to do the
rollback if we just destroy the trans, (b) some rollbacks are not backend-
induced, but rather voluntary, (c) we need a generalized mechanism
anyway for detecting and handling deleted transactions even when
we're not editing them.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13461 57a11ea4-9604-0410-9ed3-97b8803252fd
One simplification in xaccTransScrubImbalance() to always find the root
AccountGroup from the Transaction's book.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13460 57a11ea4-9604-0410-9ed3-97b8803252fd
edit-blocks should work, and why.
Converts the very important xaccTransCommitEdit function to use the
qof_commit_edit_part2() function instead of something that is 90%
similar.
Transactions have a Split list that keeps track of Splits during the edit.
During edits, this list only grows and never shrinks. Splits that
have been destroyed or reparented to other transactions remain in
the list, along with pre-edit Splits and newly added Splits. Only after a
successful commit does the Split list drop reparented or destroyed
Splits. A couple out-of-engine users (mainly the register) call
xaccTransGetSplitList() an work from the Transaction's split list,
but they expect to be working with only the Splits that would still be in
the Transaction if the in-progress edit would be committed. So, we
provide the function xaccTransStillHasSplit(t, s) to allow users to query
the in-edit state of the Transaction's Split list.
xaccTransRemoveSplit() and xaccTransInsertSplit() have been replaced by
xaccSplitSetParent().
The new xaccTransCommitEdit tries to take a more conservative approach
to event generation, too. Instead of generating every possible event for
any commit, it should generate only events that indicate a change to an
engine object or relation.
Move some of the financial-constraint-enforcing functions closer to the
relevant data-structures. (from Scrub.c)
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13459 57a11ea4-9604-0410-9ed3-97b8803252fd
The engine used to have functions that made it possible to orphan a Split.
As this is no longer possible, we can't test anymore.
Incidental:
Fix three or four small leaks in the test functions.
Allow test-period to be randomized based on optional command-line arg.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13458 57a11ea4-9604-0410-9ed3-97b8803252fd
The Split <-> Account and Split <-> Transaction relationships are now
treated as properties of the Split. In terms of the BeginEdit/CommitEdit
block, Splits are subordinate to Transactions. There is no public
BeginEdit/CommitEdit block for Splits; changes to Splits should be wrapped
in their Transaction's Edit-block.
In the case of the Split <-> Account relationship, the call to
xaccSplitSetAccount() will be immediately visible from
xaccSplitGetAccount(), but the Account does not learn about the
Split until and if the edit is committed.
In the case of the Split <-> Transaction relationship, calling
xaccSplitSetParent() will immediately add the Split to the
Transactions split list. This is because the Split's Transaction
owns the reference to the Split. However, see the Transaction.c
patch for how to distinguish pre-edit state from in-edit state.
In both cases, events are not generated until the edits are committed.
Most of this new logic is in an engine-private helper xaccSplitCommitEdit(),
which is called from xaccTransCommitEdit().
Incidental:
Increased error-checking in xaccSplitSetValue().
Internalize a Transaction Begin/Commit edit-block in every setter func.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13457 57a11ea4-9604-0410-9ed3-97b8803252fd
gnc:transaction-map-splits, both unused.
Remove g-wrapped versions of functions being removed:
gnc:account-fix-split-date-order,
gnc:trans-fix-split-date-order
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13456 57a11ea4-9604-0410-9ed3-97b8803252fd
Any of the callbacks passed to this function may be NULL to decline the
use of that callback. Also, the three callbacks are now called in three
mutually exclusive cases, corresponding to:
1) a failed commit, ('on_error')
2) a successful commit where the object remains valid, ('on_done'), and
3) a successful commit where the object has been destroyed, ('on_free').
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13390 57a11ea4-9604-0410-9ed3-97b8803252fd
qof_session_destroy() no longer clears the current session when we destroy
it. Therefore, explicitly call gnc_clear_current_session() when we want
to destroy the current session.
Also, avoid accidentally creating a new book and session if there is no
open book/current session when we run the bill reminder.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13378 57a11ea4-9604-0410-9ed3-97b8803252fd
just call xaccTransDestroy(), xaccTransCommitEdit(). No rollback needed.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13369 57a11ea4-9604-0410-9ed3-97b8803252fd
Add const to Split where appropriate.
Fix GCache crash cause by using non-cached value in cached 'action' field
from the qsf-backend.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13368 57a11ea4-9604-0410-9ed3-97b8803252fd
Introduce xaccSplitVoid() and xaccSplitUnvoid() to aid the separation.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13363 57a11ea4-9604-0410-9ed3-97b8803252fd
And no need to run it at all when we fail to open a book.
Also, require HAVE_GTK26 before using gtk_get_option_group().
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13358 57a11ea4-9604-0410-9ed3-97b8803252fd
qof_session_set_current_session(). GnuCash now manages its own current
session. New function: gnc_current_session_exist() to test whether there
is a current session.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13355 57a11ea4-9604-0410-9ed3-97b8803252fd
This includes when the KVP is changed via the setters.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13350 57a11ea4-9604-0410-9ed3-97b8803252fd
from add_random_splits() to get_random_split().
Avoid numeric overflow when creating split values.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13345 57a11ea4-9604-0410-9ed3-97b8803252fd
called GncTreeModelSort. This newer version of GtkTreeModelSort fixes at
least one observed bug with our use of sorted models. The
gtktreedatalist.[ch] files are used by GtkTreeModelSort and are directly
from gtk 2.8.12 without any renames because they aren't exported by gtk.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13330 57a11ea4-9604-0410-9ed3-97b8803252fd
from views using the filtered GncTreeModelAccountTypes.
Privatize the unfiltered GncTreeModelAccountTypes - now, every accessible
account-types TreeModel is a new GtkTreeModelFilter, and their
ref-counting is always the same.
Add some tweaks to gnc-tree-model-account-types.[ch] from
Andreas Köhler <andi5.py@gmx.net>, plus the conversion of the Account
Dialog's account-types field to use the filtered GncTreeModelAccountTypes
instead of a GtkListStore, but simplified to use the AccountType
selection functions.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13271 57a11ea4-9604-0410-9ed3-97b8803252fd
copies of buggy accountlist-get-comm-balance-at-date to using a new
gnc:accountlist-get-comm-balance-interval provided by
report-utilities.scm. For the affected calculations, the balances no
longer exclude transactions on the first day of the reporting period.
This fixes http://bugzilla.gnome.org/show_bug.cgi?id=331005.
Changed calculations:
Income Statement: Total Expenses, Total Revenues
Balance Sheet: Retained Earnings (*)
Equity Statement: Retained Earnings (*), Net Income
(*) The Retained Earning calculations use a start-date of "forever-ago"
so they are not affected, but still converted to the new function.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13266 57a11ea4-9604-0410-9ed3-97b8803252fd
Patch by Mike Alexander <mta.umich.edu>, closes bug #330361
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13229 57a11ea4-9604-0410-9ed3-97b8803252fd
This prevents the whole program from crashing when unrecognized report
options are used.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13227 57a11ea4-9604-0410-9ed3-97b8803252fd
Also, use gfec to be a bit more defensive about potential errors while
running a report.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13223 57a11ea4-9604-0410-9ed3-97b8803252fd
accounting period set in the preferences. Both the start date and the end
date are used, so the user is free to choose any arbitrary period.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13199 57a11ea4-9604-0410-9ed3-97b8803252fd
These are the recursive and non-recursive, respectively, period balances,
where the accounting period is specified in the preferences.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13165 57a11ea4-9604-0410-9ed3-97b8803252fd
Factor out and publicize functions to get the start and end of the
accounting period in the preferences.
Mark one comment as probably obsolete.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13158 57a11ea4-9604-0410-9ed3-97b8803252fd
GtkTreeViewColumn that's been added to a GncTreeView with one of the
convenience functions.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13156 57a11ea4-9604-0410-9ed3-97b8803252fd
This change isn't ideal in the sense that the handler list is now a
monotonically increasing resource, but it's better than crashing when the
handler in node N+1 happens to be deleted while servicing the handler in
node N.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13152 57a11ea4-9604-0410-9ed3-97b8803252fd
Replace gtk_object_sink calls on the models with g_object_unref calls.
Correctly increase the refcount of "remembered" models when we return them.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13150 57a11ea4-9604-0410-9ed3-97b8803252fd
the GtkObject destroy path. Also, remove the gconf callback during dispose.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13148 57a11ea4-9604-0410-9ed3-97b8803252fd
with account balances.
Comment two possible bugs related to capgains and dirtying (or not) Splits.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13134 57a11ea4-9604-0410-9ed3-97b8803252fd
Also, dirty transactions upon changing due date and read-only status,
which didn't used to happen.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13132 57a11ea4-9604-0410-9ed3-97b8803252fd
Let QofInstance manage the book pointer and kvp frame instead of Split
managing its own.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13131 57a11ea4-9604-0410-9ed3-97b8803252fd
These calls were probably a copied idiom from the Split setters in this
same file, but Split and Transaction use completely different mechanisms
for managing dirty state. Transactions inherit from QofInstance and so
use the .dirty field. Splits inherit from QofEntity, so their
check_open(split->parent) calls are their way of letting someone know
they've changed.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13128 57a11ea4-9604-0410-9ed3-97b8803252fd
estimation code can use stand-alone recurrences to estimate budget values.
Also, tweak the initial budget so that it begins at the beginning of the
current month.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13092 57a11ea4-9604-0410-9ed3-97b8803252fd
Even though we don't explicitly ask for this representation, certain
calculations (e.g. those involving GNC_HOW_DENOM_SIGFIGS in the loan
druid and soon in budgets) will return numbers using this representation.
Unfortunately, these numbers aren't handled correctly by most of the
gnc_numeric functions, like the ones for comparison, equality testing,
arithmetic and conversion.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13090 57a11ea4-9604-0410-9ed3-97b8803252fd
Dirty the book when the budget changes.
Remove some obsolete budget code.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13089 57a11ea4-9604-0410-9ed3-97b8803252fd
Better documentation of exactly what m-g-potfiles excludes, and a general
clean-up of the script.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13079 57a11ea4-9604-0410-9ed3-97b8803252fd
The failure will also helpfully explain which files are the problem.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13065 57a11ea4-9604-0410-9ed3-97b8803252fd
This function is only compiled when HAVE_GTK26 because it uses
GtkCellRendererCombo.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13047 57a11ea4-9604-0410-9ed3-97b8803252fd