mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
2001-06-18 Dave Peticolas <dave@krondo.com>
* src/MultiLedger.c: same as below * src/SplitLedger.c: same as below. fix indentation. please use the indentation style already present in the file. * src/engine/gnc-freqspec-xml-v2.c: same as below * src/engine/FreqSpec.[ch]: fix warnings. use standard C comments * doc/sgml/C/xacc-about.sgml: update credits git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4726 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
d5f96b9ba2
commit
34500dc4eb
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
||||
2001-06-18 Dave Peticolas <dave@krondo.com>
|
||||
|
||||
* src/MultiLedger.c: same as below
|
||||
|
||||
* src/SplitLedger.c: same as below. fix indentation. please
|
||||
use the indentation style already present in the file.
|
||||
|
||||
* src/engine/gnc-freqspec-xml-v2.c: same as below
|
||||
|
||||
* src/engine/FreqSpec.[ch]: fix warnings. use standard C comments
|
||||
|
||||
* doc/sgml/C/xacc-about.sgml: update credits
|
||||
|
||||
2001-06-17 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/engine/gnc-account-xml-v2.c (dom_tree_to_account): Added.
|
||||
|
@ -173,6 +173,15 @@ linkend="scheme"> Scheme </link>, the <link linkend="gwrap"> g-wrap
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry>
|
||||
<glossterm><email>jsled@asynchronous.org</email>Joshua Sled</glossterm>
|
||||
<glossdef>
|
||||
<para>
|
||||
works on scheduled transactions and budgeting.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
</glosslist>
|
||||
|
||||
</para>
|
||||
|
@ -16,9 +16,11 @@ src/gnome/dialog-commodities.c
|
||||
src/gnome/dialog-commodity.c
|
||||
src/gnome/dialog-filebox.c
|
||||
src/gnome/dialog-fincalc.c
|
||||
src/gnome/dialog-nextrun.c
|
||||
src/gnome/dialog-options.c
|
||||
src/gnome/dialog-price-editor.c
|
||||
src/gnome/dialog-progress.c
|
||||
src/gnome/dialog-scheduledxaction.c
|
||||
src/gnome/dialog-totd.c
|
||||
src/gnome/dialog-transfer.c
|
||||
src/gnome/dialog-utils.c
|
||||
@ -37,6 +39,7 @@ src/gnome/glade/progress_strings.c
|
||||
src/gnome/glade/qif_strings.c
|
||||
src/gnome/glade/register_strings.c
|
||||
src/gnome/glade/report_strings.c
|
||||
src/gnome/glade/sched-xact_strings.c
|
||||
src/gnome/glade/stocks_strings.c
|
||||
src/gnome/glade/tax_strings.c
|
||||
src/gnome/glade/transfer_strings.c
|
||||
|
@ -454,7 +454,7 @@ xaccLedgerDisplayTemplateGL( char *id )
|
||||
ag = gnc_book_get_template_group( gncGetCurrentBook() );
|
||||
acct = xaccGetAccountFromName( ag, id );
|
||||
if ( acct == NULL ) {
|
||||
// FIXME
|
||||
/* FIXME */
|
||||
printf( "can't get template account for id \"%s\"\n", id );
|
||||
}
|
||||
xaccQueryAddSingleAccountMatch( q, acct, QUERY_AND );
|
||||
@ -464,7 +464,7 @@ xaccLedgerDisplayTemplateGL( char *id )
|
||||
ld = xaccLedgerDisplayInternal( NULL, q, LD_GL,
|
||||
GENERAL_LEDGER,
|
||||
REG_STYLE_JOURNAL,
|
||||
TRUE ); // template mode? TRUE.
|
||||
TRUE ); /* template mode? TRUE. */
|
||||
|
||||
sr = xaccLedgerDisplayGetSR( ld );
|
||||
sr->templateAcct = acct;
|
||||
@ -759,8 +759,8 @@ xaccLedgerDisplayInternal (Account *lead_account, Query *q,
|
||||
|
||||
case LD_TEMPLATE:
|
||||
class = REGISTER_TEMPLATE_CM_CLASS;
|
||||
// FIXME: sanity checks?
|
||||
// Check for kvp-frame data?
|
||||
/* FIXME: sanity checks?
|
||||
Check for kvp-frame data? */
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -805,7 +805,7 @@ xaccLedgerDisplayInternal (Account *lead_account, Query *q,
|
||||
view.bg_color_handler = xaccSRGetBGColorHandler;
|
||||
view.cell_border_handler = xaccSRGetCellBorderHandler;
|
||||
view.handler_user_data = NULL;
|
||||
// The following handlers are changed in template mode.
|
||||
/* The following handlers are changed in template mode. */
|
||||
if ( templateMode ) {
|
||||
view.entry_handler = xaccSRTemplateGetEntryHandler;
|
||||
view.io_flag_handler = xaccSRTemplateGetIOFlagsHandler;
|
||||
@ -886,8 +886,6 @@ xaccLedgerDisplayRefresh (xaccLedgerDisplay *ld)
|
||||
if (!ld || ld->loading)
|
||||
return;
|
||||
|
||||
//xaccQueryPrint( ld->query );
|
||||
|
||||
xaccLedgerDisplayRefreshInternal (ld, xaccQueryGetSplits (ld->query));
|
||||
}
|
||||
|
||||
@ -962,8 +960,8 @@ xaccDestroyLedgerDisplay (Account *account)
|
||||
xaccDestroyLedgerDisplayClass (account, REGISTER_SINGLE_CM_CLASS);
|
||||
xaccDestroyLedgerDisplayClass (account, REGISTER_SUBACCOUNT_CM_CLASS);
|
||||
xaccDestroyLedgerDisplayClass (account, REGISTER_GL_CM_CLASS);
|
||||
// no TEMPLATE_CM_CLASS, because it doesn't correspond to any account
|
||||
// FIXME: but there probably should be an analagous method
|
||||
/* no TEMPLATE_CM_CLASS, because it doesn't correspond to any account
|
||||
* FIXME: but there probably should be an analagous method */
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -84,7 +84,7 @@ xaccLedgerDisplay * xaccLedgerDisplaySimple (Account *account);
|
||||
xaccLedgerDisplay * xaccLedgerDisplayAccGroup (Account *account);
|
||||
|
||||
xaccLedgerDisplay * xaccLedgerDisplayGL (void);
|
||||
xaccLedgerDisplay * xaccLedgerDisplayGLTemplate( char *id );
|
||||
xaccLedgerDisplay * xaccLedgerDisplayGLTemplate (char *id);
|
||||
|
||||
/**
|
||||
* Displays a template ledger.
|
||||
@ -93,7 +93,7 @@ xaccLedgerDisplay * xaccLedgerDisplayGLTemplate( char *id );
|
||||
* Really, requires a GList of scheduled transactions and kvp-frame
|
||||
* data.
|
||||
**/
|
||||
xaccLedgerDisplay * xaccLedgerDisplayTemplateGL( );
|
||||
xaccLedgerDisplay * xaccLedgerDisplayTemplateGL (char *id);
|
||||
|
||||
/* display a general ledger for an arbitrary query */
|
||||
xaccLedgerDisplay * xaccLedgerDisplayQuery (Query *query,
|
||||
|
@ -2684,7 +2684,7 @@ xaccSRRedrawReg (SplitRegister *reg)
|
||||
* in sync with xaccSRSaveRegEntry and xaccSRSaveChangedCells. */
|
||||
|
||||
|
||||
// jsled: This will need to be modified, as well.
|
||||
/* jsled: This will need to be modified, as well. */
|
||||
static gboolean
|
||||
xaccSRSaveRegEntryToSCM (SplitRegister *reg, SCM trans_scm, SCM split_scm,
|
||||
gboolean use_cut_semantics)
|
||||
@ -2827,9 +2827,8 @@ xaccSRSaveRegEntryToSCM (SplitRegister *reg, SCM trans_scm, SCM split_scm,
|
||||
|
||||
/* ======================================================== */
|
||||
/* Copy from the register object to the engine */
|
||||
// jsled: okay... the fun.
|
||||
// actually, not really the fun, but scan this to see if anything
|
||||
// jumps out; the
|
||||
/* jsled: okay... the fun. actually, not really the fun, but scan
|
||||
this to see if anything jumps out */
|
||||
gboolean
|
||||
xaccSRSaveRegEntry (SplitRegister *reg, gboolean do_commit)
|
||||
{
|
||||
@ -2843,8 +2842,6 @@ xaccSRSaveRegEntry (SplitRegister *reg, gboolean do_commit)
|
||||
const char *memo;
|
||||
const char *desc;
|
||||
|
||||
//DEBUG( "=== In xaccSRSaveRegEntry\n" );
|
||||
|
||||
/* get the handle to the current split and transaction */
|
||||
split = xaccSRGetCurrentSplit (reg);
|
||||
trans = xaccSRGetCurrentTrans (reg);
|
||||
@ -3212,138 +3209,135 @@ xaccSRSaveChangedTemplateCells( SplitRegister *reg,
|
||||
Transaction *trans,
|
||||
Split *split )
|
||||
{
|
||||
SRInfo *info = xaccSRGetInfo( reg );
|
||||
Split *other_split = NULL;
|
||||
guint32 changed;
|
||||
kvp_frame *kvpf;
|
||||
AccountGroup *template_ag;
|
||||
Account *template_acc;
|
||||
kvp_value *tag_val;
|
||||
SRInfo *info = xaccSRGetInfo( reg );
|
||||
Split *other_split = NULL;
|
||||
guint32 changed;
|
||||
kvp_frame *kvpf;
|
||||
AccountGroup *template_ag;
|
||||
Account *template_acc;
|
||||
kvp_value *tag_val;
|
||||
|
||||
DEBUG( "=== In xaccSRSaveChangedTemplateCells\n" );
|
||||
DEBUG( "=== In xaccSRSaveChangedTemplateCells\n" );
|
||||
|
||||
//template_acc = gncGetTemplateAccount();
|
||||
//template_ag = gnc_book_get_template_group( gncGetCurrentBook() );
|
||||
template_acc = reg->templateAcct;
|
||||
template_acc = reg->templateAcct;
|
||||
|
||||
changed = xaccSplitRegisterGetChangeFlag( reg );
|
||||
changed |= xaccSplitRegisterGetConditionalChangeFlag( reg );
|
||||
if ( (MOD_DATE & changed) ||
|
||||
(MOD_NUM & changed) ||
|
||||
(MOD_RECN & changed) )
|
||||
{
|
||||
PERR( "unexpected changed field in a template register: %32x\n", changed );
|
||||
}
|
||||
changed = xaccSplitRegisterGetChangeFlag( reg );
|
||||
changed |= xaccSplitRegisterGetConditionalChangeFlag( reg );
|
||||
if ( (MOD_DATE & changed) ||
|
||||
(MOD_NUM & changed) ||
|
||||
(MOD_RECN & changed) )
|
||||
{
|
||||
PERR( "unexpected changed field in a template register: %32x\n",
|
||||
changed );
|
||||
}
|
||||
|
||||
// We'll be using the Split's KVP frame a lot...
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
/* We'll be using the Split's KVP frame a lot */
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
|
||||
if ( MOD_XFRM & changed )
|
||||
{
|
||||
// FIXME: This should probably do the same checks as
|
||||
// xaccSRSaveChangedCells regarding account types
|
||||
// [between different currency accounts, mainly]
|
||||
char *new_name;
|
||||
Account *acct;
|
||||
AccountGroup *acctGrp;
|
||||
GUID *acctGUID;
|
||||
if ( MOD_XFRM & changed )
|
||||
{
|
||||
/* FIXME: This should probably do the same checks as
|
||||
xaccSRSaveChangedCells regarding account types
|
||||
[between different currency accounts, mainly] */
|
||||
char *new_name;
|
||||
Account *acct;
|
||||
AccountGroup *acctGrp;
|
||||
const GUID *acctGUID;
|
||||
|
||||
// save the account GUID into the kvp_data.
|
||||
new_name = reg->xfrmCell->cell.value;
|
||||
acctGrp = gnc_book_get_group( gncGetCurrentBook() );
|
||||
acct = xaccGetAccountFromFullName( acctGrp, new_name,
|
||||
gnc_get_account_separator() );
|
||||
if ( acct == NULL ) {
|
||||
PERR( "unknown group \"%s\"\n", new_name );
|
||||
return;
|
||||
}
|
||||
acctGUID = (const GUID *)xaccAccountGetGUID( acct );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/xfrm",
|
||||
kvp_value_new_guid( acctGUID ) );
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
changed ^= MOD_XFRM;
|
||||
// +DEBUG
|
||||
if ( 0 ) {
|
||||
GList *foo = xaccAccountGetSplitList( template_acc );
|
||||
if ( foo ) {
|
||||
printf( "Splits:\n" );
|
||||
do {
|
||||
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
|
||||
} while ( (foo = foo->next) );
|
||||
} else {
|
||||
printf( "No Splits.\n" );
|
||||
}
|
||||
}
|
||||
// -DEBUG
|
||||
/* save the account GUID into the kvp_data. */
|
||||
new_name = reg->xfrmCell->cell.value;
|
||||
acctGrp = gnc_book_get_group( gncGetCurrentBook() );
|
||||
acct = xaccGetAccountFromFullName( acctGrp, new_name,
|
||||
gnc_get_account_separator() );
|
||||
if ( acct == NULL ) {
|
||||
PERR( "unknown group \"%s\"\n", new_name );
|
||||
return;
|
||||
}
|
||||
acctGUID = xaccAccountGetGUID( acct );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/xfrm",
|
||||
kvp_value_new_guid( acctGUID ) );
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
changed ^= MOD_XFRM;
|
||||
|
||||
// set the actual account to the fake account for
|
||||
// these templates...
|
||||
xaccAccountInsertSplit (template_acc, split);
|
||||
/* DEBUG */
|
||||
if ( 0 ) {
|
||||
GList *foo = xaccAccountGetSplitList( template_acc );
|
||||
if ( foo ) {
|
||||
printf( "Splits:\n" );
|
||||
do {
|
||||
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
|
||||
} while ( (foo = foo->next) );
|
||||
} else {
|
||||
printf( "No Splits.\n" );
|
||||
}
|
||||
}
|
||||
|
||||
// +DEBUG
|
||||
if ( 0 ) {
|
||||
GList *foo = xaccAccountGetSplitList( template_acc );
|
||||
if ( foo ) {
|
||||
printf( "Splits:\n" );
|
||||
do {
|
||||
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
|
||||
} while ( (foo = foo->next) );
|
||||
} else {
|
||||
printf( "No Splits.\n" );
|
||||
}
|
||||
}
|
||||
// -DEBUG
|
||||
|
||||
}
|
||||
if ( MOD_MXFRM & changed )
|
||||
{
|
||||
// DTRT
|
||||
DEBUG( "Template: Got MOD_MXFRM changed\n" );
|
||||
changed ^= MOD_MXFRM;
|
||||
}
|
||||
if ( MOD_AMNT & changed )
|
||||
{
|
||||
char *amountStr = "x + y/42";
|
||||
gnc_numeric new_amount;
|
||||
gnc_numeric credit;
|
||||
gnc_numeric debit;
|
||||
|
||||
//credit = xaccGetPriceCellValue(reg->creditCell);
|
||||
//debit = xaccGetPriceCellValue(reg->debitCell);
|
||||
//new_amount = gnc_numeric_sub_fixed (debit, credit);
|
||||
/* set the actual account to the fake account for these templates */
|
||||
xaccAccountInsertSplit (template_acc, split);
|
||||
|
||||
// FIXME: the credit/debit cells are limited to
|
||||
// numeric values by definition [and code]. Blegh.
|
||||
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
//amountStr = gnc_numeric_to_string( new_amount );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/credit_formula",
|
||||
kvp_value_new_string( reg->formCreditCell->cell.value ) );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/debit_formula",
|
||||
kvp_value_new_string( reg->formDebitCell->cell.value ) );
|
||||
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
changed ^= MOD_AMNT;
|
||||
// set the amount to an innocuous value
|
||||
xaccSplitSetValue (split, gnc_numeric_create(0, 1) );
|
||||
}
|
||||
if ( MOD_SHRS & changed )
|
||||
{
|
||||
char *sharesStr = "(x + y)/42";
|
||||
/* DEBUG */
|
||||
if ( 0 ) {
|
||||
GList *foo = xaccAccountGetSplitList( template_acc );
|
||||
if ( foo ) {
|
||||
printf( "Splits:\n" );
|
||||
do {
|
||||
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
|
||||
} while ( (foo = foo->next) );
|
||||
} else {
|
||||
printf( "No Splits.\n" );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( MOD_MXFRM & changed )
|
||||
{
|
||||
/* DTRT */
|
||||
DEBUG( "Template: Got MOD_MXFRM changed\n" );
|
||||
changed ^= MOD_MXFRM;
|
||||
}
|
||||
if ( MOD_AMNT & changed )
|
||||
{
|
||||
char *amountStr = "x + y/42";
|
||||
gnc_numeric new_amount;
|
||||
gnc_numeric credit;
|
||||
gnc_numeric debit;
|
||||
|
||||
// FIXME: shares cells are numeric by definition.
|
||||
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
/* credit = xaccGetPriceCellValue(reg->creditCell); */
|
||||
/* debit = xaccGetPriceCellValue(reg->debitCell); */
|
||||
/* new_amount = gnc_numeric_sub_fixed (debit, credit); */
|
||||
|
||||
/* FIXME: the credit/debit cells are limited to
|
||||
numeric values by definition [and code]. Blegh. */
|
||||
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
/* amountStr = gnc_numeric_to_string( new_amount ); */
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/credit_formula",
|
||||
kvp_value_new_string( reg->formCreditCell->cell.value ) );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/debit_formula",
|
||||
kvp_value_new_string( reg->formDebitCell->cell.value ) );
|
||||
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
changed ^= MOD_AMNT;
|
||||
/* set the amount to an innocuous value */
|
||||
xaccSplitSetValue (split, gnc_numeric_create(0, 1) );
|
||||
}
|
||||
if ( MOD_SHRS & changed )
|
||||
{
|
||||
char *sharesStr = "(x + y)/42";
|
||||
|
||||
/* FIXME: shares cells are numeric by definition. */
|
||||
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
|
||||
//sharesStr = gnc_numeric_to_string( sharesStr );
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/shares",
|
||||
kvp_value_new_string( sharesStr ) );
|
||||
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
// set the shares to an innocuous value
|
||||
xaccSplitSetSharePriceAndAmount (split,
|
||||
gnc_numeric_create(0, 1),
|
||||
gnc_numeric_create(0, 1) );
|
||||
changed ^= MOD_SHRS;
|
||||
}
|
||||
/* sharesStr = gnc_numeric_to_string( sharesStr ); */
|
||||
kvp_frame_set_slot( kvpf, "sched-xaction/shares",
|
||||
kvp_value_new_string( sharesStr ) );
|
||||
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
/* set the shares to an innocuous value */
|
||||
xaccSplitSetSharePriceAndAmount (split,
|
||||
gnc_numeric_create(0, 1),
|
||||
gnc_numeric_create(0, 1) );
|
||||
changed ^= MOD_SHRS;
|
||||
}
|
||||
|
||||
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
|
||||
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
|
||||
}
|
||||
|
||||
static void
|
||||
@ -3426,9 +3420,9 @@ xaccSRActuallySaveChangedCells( SplitRegister *reg, Transaction *trans, Split *s
|
||||
* only if there is one. XFRM is the straight split, MXFRM is the
|
||||
* mirrored split. */
|
||||
|
||||
// jsled: this is where it starts to get fun. in the template
|
||||
// register, we save the XFRM account in the kvp frame.
|
||||
// also, when loading, we load from the kvp data.
|
||||
/* jsled: this is where it starts to get fun. in the template
|
||||
* register, we save the XFRM account in the kvp frame.
|
||||
* also, when loading, we load from the kvp data. */
|
||||
if (MOD_XFRM & changed)
|
||||
{
|
||||
Account *old_acc;
|
||||
@ -3642,8 +3636,8 @@ xaccSRSaveChangedCells (SplitRegister *reg, Transaction *trans, Split *split)
|
||||
changed = xaccSplitRegisterGetChangeFlag (reg);
|
||||
changed |= xaccSplitRegisterGetConditionalChangeFlag (reg);
|
||||
|
||||
// all the code in xaccSRActuallySaveChangedCells was right here,
|
||||
// before. -- jsled
|
||||
/* all the code in xaccSRActuallySaveChangedCells was right here,
|
||||
before. -- jsled */
|
||||
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
|
||||
}
|
||||
|
||||
@ -3810,117 +3804,118 @@ xaccSRTemplateGetEntryHandler( VirtualLocation virt_loc,
|
||||
gboolean *conditionally_changed,
|
||||
gpointer user_data )
|
||||
{
|
||||
SplitRegister *reg = user_data;
|
||||
const char *value = "";
|
||||
CellType cell_type;
|
||||
Transaction *trans;
|
||||
Split *split;
|
||||
kvp_frame *kvpf;
|
||||
GUID *tmpguid;
|
||||
SplitRegister *reg = user_data;
|
||||
const char *value = "";
|
||||
CellType cell_type;
|
||||
Transaction *trans;
|
||||
Split *split;
|
||||
kvp_frame *kvpf;
|
||||
GUID *tmpguid;
|
||||
|
||||
//DEBUG( "In xaccSRTemplateGetEntryHandler\n" );
|
||||
cell_type = xaccSplitRegisterGetCellType (reg, virt_loc);
|
||||
|
||||
cell_type = xaccSplitRegisterGetCellType (reg, virt_loc);
|
||||
|
||||
split = sr_get_split (reg, virt_loc.vcell_loc);
|
||||
if (split == NULL)
|
||||
{
|
||||
return xaccSRGetEntryHandler( virt_loc, translate,
|
||||
conditionally_changed, user_data );
|
||||
}
|
||||
split = sr_get_split (reg, virt_loc.vcell_loc);
|
||||
if (split == NULL)
|
||||
{
|
||||
return xaccSRGetEntryHandler( virt_loc, translate,
|
||||
conditionally_changed, user_data );
|
||||
}
|
||||
|
||||
|
||||
trans = xaccSplitGetParent (split);
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
trans = xaccSplitGetParent (split);
|
||||
kvpf = xaccSplitGetSlots( split );
|
||||
|
||||
switch (cell_type) {
|
||||
case XFRM_CELL:
|
||||
{
|
||||
static char *name = NULL;
|
||||
char account_separator;
|
||||
switch (cell_type) {
|
||||
case XFRM_CELL:
|
||||
{
|
||||
static char *name = NULL;
|
||||
char account_separator;
|
||||
|
||||
if ( kvpf != NULL ) {
|
||||
DEBUG( "kvp_frame: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
tmpguid = kvp_value_get_guid( kvp_frame_get_slot( kvpf,
|
||||
"sched-xaction/xfrm" ) );
|
||||
DEBUG( "Got the guid \"%s\"\n", guid_to_string( tmpguid ) );
|
||||
account_separator = gnc_get_account_separator();
|
||||
DEBUG( "foo\n" );
|
||||
name = xaccAccountGetFullName (xaccAccountLookup( tmpguid ),
|
||||
account_separator);
|
||||
DEBUG( "bar\n" );
|
||||
if ( kvpf != NULL ) {
|
||||
DEBUG( "kvp_frame: %s\n", kvp_frame_to_string( kvpf ) );
|
||||
tmpguid = kvp_value_get_guid
|
||||
( kvp_frame_get_slot( kvpf, "sched-xaction/xfrm" ) );
|
||||
DEBUG( "Got the guid \"%s\"\n", guid_to_string( tmpguid ) );
|
||||
account_separator = gnc_get_account_separator();
|
||||
DEBUG( "foo\n" );
|
||||
name = xaccAccountGetFullName (xaccAccountLookup( tmpguid ),
|
||||
account_separator);
|
||||
DEBUG( "bar\n" );
|
||||
|
||||
DEBUG( "Got the full name: %s\n", name );
|
||||
} else {
|
||||
name = "";
|
||||
}
|
||||
|
||||
return name;
|
||||
DEBUG( "Got the full name: %s\n", name );
|
||||
} else {
|
||||
name = "";
|
||||
}
|
||||
break;
|
||||
case CRED_CELL:
|
||||
case DEBT_CELL:
|
||||
{
|
||||
char *amtStr;
|
||||
gnc_numeric amount;
|
||||
|
||||
if ( kvpf != NULL ) {
|
||||
amtStr = kvp_value_get_string( kvp_frame_get_slot( kvpf,
|
||||
"sched-xaction/amnt" ) );
|
||||
amount = gnc_numeric_create( 0, 1 );
|
||||
string_to_gnc_numeric( amtStr, &amount );
|
||||
return name;
|
||||
}
|
||||
break;
|
||||
case CRED_CELL:
|
||||
case DEBT_CELL:
|
||||
{
|
||||
char *amtStr;
|
||||
gnc_numeric amount;
|
||||
|
||||
if ( kvpf != NULL ) {
|
||||
amtStr = kvp_value_get_string
|
||||
( kvp_frame_get_slot( kvpf, "sched-xaction/amnt" ) );
|
||||
amount = gnc_numeric_create( 0, 1 );
|
||||
string_to_gnc_numeric( amtStr, &amount );
|
||||
|
||||
if (gnc_numeric_zero_p (amount))
|
||||
return "";
|
||||
if (gnc_numeric_zero_p (amount))
|
||||
return "";
|
||||
|
||||
if (gnc_numeric_negative_p (amount) && (cell_type == DEBT_CELL))
|
||||
return "";
|
||||
if (gnc_numeric_negative_p (amount) && (cell_type == DEBT_CELL))
|
||||
return "";
|
||||
|
||||
if (gnc_numeric_positive_p (amount) && (cell_type == CRED_CELL))
|
||||
return "";
|
||||
if (gnc_numeric_positive_p (amount) && (cell_type == CRED_CELL))
|
||||
return "";
|
||||
|
||||
amount = gnc_numeric_abs (amount);
|
||||
amount = gnc_numeric_abs (amount);
|
||||
|
||||
//return xaccPrintAmount (amount,
|
||||
//gnc_split_value_print_info (split, FALSE));
|
||||
/* return xaccPrintAmount (amount,
|
||||
gnc_split_value_print_info (split, FALSE)); */
|
||||
|
||||
// jsled_FIXME: This should be fixed
|
||||
// to be correct for the "fake" account.
|
||||
return xaccPrintAmount( amount,
|
||||
gnc_default_print_info( FALSE ) );
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
/* jsled_FIXME: This should be fixed
|
||||
to be correct for the "fake" account. */
|
||||
return xaccPrintAmount( amount,
|
||||
gnc_default_print_info( FALSE ) );
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
break;
|
||||
case FCRED_CELL:
|
||||
{
|
||||
char *formulaStr;
|
||||
if ( kvpf != NULL ) {
|
||||
return kvp_value_get_string( kvp_frame_get_slot( kvpf,
|
||||
"sched-xaction/credit_formula" ) );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FCRED_CELL:
|
||||
{
|
||||
char *formulaStr;
|
||||
if ( kvpf != NULL ) {
|
||||
return kvp_value_get_string
|
||||
( kvp_frame_get_slot( kvpf, "sched-xaction/credit_formula" ) );
|
||||
}
|
||||
break;
|
||||
case FDEBT_CELL:
|
||||
{
|
||||
char *formulaStr;
|
||||
if ( kvpf != NULL ) {
|
||||
return kvp_value_get_string( kvp_frame_get_slot( kvpf,
|
||||
"sched-xaction/debit_formula" ) );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FDEBT_CELL:
|
||||
{
|
||||
char *formulaStr;
|
||||
if ( kvpf != NULL ) {
|
||||
return kvp_value_get_string
|
||||
( kvp_frame_get_slot( kvpf, "sched-xaction/debit_formula" ) );
|
||||
}
|
||||
break;
|
||||
case MXFRM_CELL:
|
||||
{
|
||||
return "FIXME:MXFRM";
|
||||
}
|
||||
break;
|
||||
} // end switch
|
||||
return xaccSRGetEntryHandler( virt_loc,
|
||||
translate,
|
||||
conditionally_changed,
|
||||
user_data );
|
||||
}
|
||||
break;
|
||||
case MXFRM_CELL:
|
||||
{
|
||||
return "FIXME:MXFRM";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
} /* end switch */
|
||||
|
||||
return xaccSRGetEntryHandler( virt_loc,
|
||||
translate,
|
||||
conditionally_changed,
|
||||
user_data );
|
||||
}
|
||||
|
||||
const char *
|
||||
@ -4416,9 +4411,9 @@ CellIOFlags
|
||||
xaccSRTemplateGetIOFlagsHandler( VirtualLocation virt_loc,
|
||||
gpointer user_data )
|
||||
{
|
||||
//printf( "In xaccSRTemplateGetIOFlagsHandler\n" );
|
||||
return xaccSRGetIOFlagsHandler( virt_loc,
|
||||
user_data );
|
||||
/* printf( "In xaccSRTemplateGetIOFlagsHandler\n" ); */
|
||||
return xaccSRGetIOFlagsHandler( virt_loc,
|
||||
user_data );
|
||||
}
|
||||
|
||||
CellIOFlags
|
||||
@ -4748,8 +4743,7 @@ gboolean
|
||||
xaccSRTemplateConfirmHandler( VirtualLocation virt_loc,
|
||||
gpointer user_data )
|
||||
{
|
||||
//DEBUG( "In xaccSRConfirmHandler\n" );
|
||||
return xaccSRConfirmHandler( virt_loc, user_data );
|
||||
return xaccSRConfirmHandler( virt_loc, user_data );
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -166,11 +166,11 @@ struct monthDesc monthInfo[] = {
|
||||
/** Local Prototypes *****/
|
||||
|
||||
FreqSpec*
|
||||
xaccFreqSpecMalloc()
|
||||
xaccFreqSpecMalloc(void)
|
||||
{
|
||||
FreqSpec *fs = g_new0(FreqSpec, 1);
|
||||
xaccFreqSpecInit( fs );
|
||||
// FIXME:event
|
||||
/* FIXME:event */
|
||||
gnc_engine_generate_event( &fs->guid, GNC_EVENT_CREATE );
|
||||
return fs;
|
||||
}
|
||||
@ -654,11 +654,11 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
char *tmpStr;
|
||||
int i;
|
||||
|
||||
// FIXME: fill in.
|
||||
/* FIXME: fill in. */
|
||||
switch( xaccFreqSpecGetUIType( fs ) ) {
|
||||
case UIFREQ_ONCE:
|
||||
tmpStr = g_new0( char, 25 );
|
||||
// this is now a GDate.
|
||||
/* this is now a GDate. */
|
||||
g_date_strftime( tmpStr, 25,
|
||||
"%a, %b %e, %Y",
|
||||
&fs->s.once.date );
|
||||
@ -701,11 +701,11 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
if ( tmpInt == -1 ) {
|
||||
tmpInt = tmpFS->s.weekly.interval_weeks;
|
||||
}
|
||||
// put the first letter of the weekday name in
|
||||
// the appropriate position.
|
||||
/* put the first letter of the weekday name in
|
||||
the appropriate position.
|
||||
|
||||
// FIXME: need the offset from the day-of-week
|
||||
// of the Julian epoch
|
||||
FIXME: need the offset from the day-of-week
|
||||
of the Julian epoch */
|
||||
/*
|
||||
tmpStr[tmpFS->specData.dateAnchor[1]] =
|
||||
weekDayNames[tmpFS->specData.dateAnchor[1]][0];
|
||||
@ -775,7 +775,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
g_string_sprintf( str, "Semi-Yearly" );
|
||||
if ( fs->s.monthly.interval_months != 6 ) {
|
||||
if ( (fs->s.monthly.interval_months % 6) != 0 ) {
|
||||
// FIXME:error
|
||||
/* FIXME:error */
|
||||
printf( "ERROR: FreqSpec Semi-Yearly month-interval "
|
||||
"is not a multiple of 6 [%d]",
|
||||
fs->s.monthly.interval_months );
|
||||
@ -791,7 +791,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
g_string_sprintf( str, "Yearly" );
|
||||
if ( fs->s.monthly.interval_months != 12 ) {
|
||||
if ( (fs->s.monthly.interval_months % 12) != 0 ) {
|
||||
// FIXME:error
|
||||
/* FIXME:error */
|
||||
printf( "ERROR: \"Yearly\" FreqSpec month-interval "
|
||||
"is not a multiple of 12 [%d]",
|
||||
fs->s.monthly.interval_months );
|
||||
@ -800,7 +800,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
fs->s.monthly.interval_months/12 );
|
||||
}
|
||||
g_string_sprintfa( str, ": %s/%u",
|
||||
// FIXME: need the year-of-month value.
|
||||
/* FIXME: need the year-of-month value. */
|
||||
monthInfo[/*fs->specData.dateAnchor[2]*/ 0].dshort,
|
||||
fs->s.monthly.day_of_month );
|
||||
break;
|
||||
|
@ -40,11 +40,11 @@ typedef enum gncp_FreqType {
|
||||
ONCE,
|
||||
DAILY,
|
||||
WEEKLY, /* Hmmm... This is sort of DAILY[7]... */
|
||||
// BI_WEEKLY: weekly[2]
|
||||
// SEMI_MONTHLY: use composite
|
||||
/* BI_WEEKLY: weekly[2] */
|
||||
/* SEMI_MONTHLY: use composite */
|
||||
MONTHLY,
|
||||
MONTH_RELATIVE,
|
||||
// YEARLY: monthly[12]
|
||||
/* YEARLY: monthly[12] */
|
||||
COMPOSITE,
|
||||
} FreqType;
|
||||
|
||||
@ -85,7 +85,7 @@ typedef struct gncp_freq_spec FreqSpec;
|
||||
* Allocates memory for a FreqSpec.
|
||||
* Calls xaccFreqSpecInit() to initialise.
|
||||
**/
|
||||
FreqSpec* xaccFreqSpecMalloc();
|
||||
FreqSpec* xaccFreqSpecMalloc(void);
|
||||
|
||||
/**
|
||||
* Initializes a FreqSpec by setting it's to type INVALID.
|
||||
|
@ -121,18 +121,18 @@ struct uiFreqTypeTuple uiFreqTypeStrs[] = {
|
||||
* Struct passed around as user-data when parsing the FreqSpec.
|
||||
**/
|
||||
typedef struct _freqSpecParseData {
|
||||
FreqSpec *fs; // FreqSpec we're parsing into.
|
||||
// fields used in the union of unions... :)
|
||||
GDate once_day; // once
|
||||
gint64 interval; // all [except once]
|
||||
gint64 offset; // all [except once]
|
||||
gint64 day; // monthly or month-relative
|
||||
gint64 occurrence; // month-relative
|
||||
GList *list; // composite
|
||||
FreqSpec *fs; /* FreqSpec we're parsing into. */
|
||||
/* fields used in the union of unions... :) */
|
||||
GDate once_day; /* once */
|
||||
gint64 interval; /* all [except once] */
|
||||
gint64 offset; /* all [except once] */
|
||||
gint64 day; /* monthly or month-relative */
|
||||
gint64 occurrence; /* month-relative */
|
||||
GList *list; /* composite */
|
||||
} fsParseData;
|
||||
|
||||
void
|
||||
_fspd_init( fsParseData *fspd )
|
||||
static void
|
||||
fspd_init( fsParseData *fspd )
|
||||
{
|
||||
fspd->fs = NULL;
|
||||
fspd->list = NULL;
|
||||
@ -274,15 +274,16 @@ static
|
||||
gboolean
|
||||
gnc_fs_handler( xmlNodePtr node, gpointer d )
|
||||
{
|
||||
// we ignore the wrapper... we were just called at the wrong
|
||||
// level.
|
||||
/* we ignore the wrapper... we were just called at the wrong
|
||||
level. */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_uift_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_uift_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
int i;
|
||||
char *nodeTxt;
|
||||
char *tmp;
|
||||
@ -303,8 +304,9 @@ fs_uift_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_date_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_date_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
GDate *foo;
|
||||
foo = dom_tree_to_gdate( node );
|
||||
if ( foo == NULL )
|
||||
@ -316,10 +318,11 @@ fs_date_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_interval_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_interval_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean ret;
|
||||
gint64 foo;
|
||||
gint64 foo;
|
||||
|
||||
ret = dom_tree_to_integer( node, &foo );
|
||||
if ( ! ret ) {
|
||||
@ -331,10 +334,11 @@ fs_interval_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_offset_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_offset_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean ret;
|
||||
gint64 foo;
|
||||
gint64 foo;
|
||||
|
||||
ret = dom_tree_to_integer( node, &foo );
|
||||
if ( ! ret )
|
||||
@ -345,10 +349,11 @@ fs_offset_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_day_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_day_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean ret;
|
||||
gint64 foo;
|
||||
gint64 foo;
|
||||
|
||||
ret = dom_tree_to_integer( node, &foo );
|
||||
if ( ! ret )
|
||||
@ -359,10 +364,11 @@ fs_day_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_weekday_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_weekday_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean ret;
|
||||
gint64 foo;
|
||||
gint64 foo;
|
||||
ret = dom_tree_to_integer( node, &foo );
|
||||
if ( !ret )
|
||||
return ret;
|
||||
@ -372,10 +378,11 @@ fs_weekday_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_occurrence_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_occurrence_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean ret;
|
||||
gint64 foo;
|
||||
gint64 foo;
|
||||
ret = dom_tree_to_integer( node, &foo );
|
||||
if ( !ret )
|
||||
return ret;
|
||||
@ -385,8 +392,9 @@ fs_occurrence_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_subelement_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_subelement_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
FreqSpec *fs;
|
||||
gboolean successful;
|
||||
fs = dom_tree_to_freqSpec( node );
|
||||
@ -409,8 +417,9 @@ struct dom_tree_handler fs_union_dom_handlers[] = {
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_once_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_once_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
|
||||
successful = dom_tree_generic_parse( node,
|
||||
@ -425,8 +434,9 @@ fs_once_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_daily_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_daily_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
successful = dom_tree_generic_parse( node,
|
||||
fs_union_dom_handlers,
|
||||
@ -441,8 +451,9 @@ fs_daily_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_weekly_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_weekly_handler( xmlNodePtr node, gpointer data )
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
successful = dom_tree_generic_parse( node,
|
||||
fs_union_dom_handlers,
|
||||
@ -457,8 +468,9 @@ fs_weekly_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_monthly_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_monthly_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
successful = dom_tree_generic_parse( node,
|
||||
fs_union_dom_handlers,
|
||||
@ -474,8 +486,9 @@ fs_monthly_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_month_relative_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_month_relative_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
successful = dom_tree_generic_parse( node,
|
||||
fs_union_dom_handlers,
|
||||
@ -492,8 +505,9 @@ fs_month_relative_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_guid_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_guid_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
GUID *guid;
|
||||
guid = dom_tree_to_guid( node );
|
||||
fspd->fs->guid = *guid;
|
||||
@ -502,8 +516,9 @@ fs_guid_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
|
||||
static
|
||||
gboolean
|
||||
fs_composite_handler( xmlNodePtr node, fsParseData *fspd )
|
||||
fs_composite_handler( xmlNodePtr node, gpointer data)
|
||||
{
|
||||
fsParseData *fspd = data;
|
||||
gboolean successful;
|
||||
successful = dom_tree_generic_parse( node,
|
||||
fs_union_dom_handlers,
|
||||
@ -541,10 +556,10 @@ gnc_freqSpec_end_handler(gpointer data_for_children,
|
||||
xmlNodePtr tree = (xmlNodePtr)data_for_children;
|
||||
sixtp_gdv2 *globaldata = (sixtp_gdv2*)global_data;
|
||||
|
||||
_fspd_init( &fspd );
|
||||
fspd_init( &fspd );
|
||||
|
||||
// this won't actually get invoked [FreqSpecs aren't top-level
|
||||
// elements]; see dom_tree_to_freqSpec(), below.
|
||||
/* this won't actually get invoked [FreqSpecs aren't top-level
|
||||
elements]; see dom_tree_to_freqSpec(), below. */
|
||||
if ( parent_data )
|
||||
return TRUE;
|
||||
|
||||
@ -577,7 +592,7 @@ dom_tree_to_freqSpec(xmlNodePtr node)
|
||||
gboolean successful;
|
||||
fsParseData fspd;
|
||||
|
||||
_fspd_init( &fspd );
|
||||
fspd_init( &fspd );
|
||||
|
||||
fspd.fs = xaccFreqSpecMalloc();
|
||||
successful = dom_tree_generic_parse( node, fs_dom_handlers, &fspd );
|
||||
|
Loading…
Reference in New Issue
Block a user