#include "homebank.h"
#include "hb-account.h"
+#include "ext.h"
+#include "refcount.h"
+
/****************************************************************************/
/* Debug macros */
/****************************************************************************/
da_acc_free(Account *item)
{
DB( g_print("da_acc_free\n") );
- if(item != NULL)
+ if(rc_unref(item))
{
DB( g_print(" => %d, %s\n", item->key, item->name) );
g_free(item->number);
g_free(item->bankname);
g_free(item->notes);
-
+
g_queue_free (item->txn_queue);
-
- g_free(item);
+
+ rc_free(item);
}
}
Account *item;
DB( g_print("da_acc_malloc\n") );
- item = g_malloc0(sizeof(Account));
+ item = rc_alloc(sizeof(Account));
item->kcur = GLOBALS->kcur;
item->txn_queue = g_queue_new ();
return item;
*new_key = item->key;
g_hash_table_insert(GLOBALS->h_acc, new_key, item);
+ GValue item_val = G_VALUE_INIT;
+ ext_hook("account_inserted", EXT_ACCOUNT(&item_val, item), NULL);
+
return TRUE;
}
item->key = da_acc_get_max_key() + 1;
item->pos = da_acc_length() + 1;
da_acc_insert(item);
+
+ GValue item_val = G_VALUE_INIT;
+ ext_hook("account_inserted", EXT_ACCOUNT(&item_val, item), NULL);
+
return TRUE;
}
g_free(stripname);
}
- return retval;
+ return retval;
}
while (lnk_acc != NULL)
{
Account *acc = lnk_acc->data;
-
+
if(acc->key != key)
{
lnk_txn = g_queue_peek_head_link(acc->txn_queue);
while (lnk_txn != NULL)
{
Transaction *entry = lnk_txn->data;
-
+
if( key == entry->kxferacc)
{
retval = TRUE;
g_free(stripname);
}
-
+
return FALSE;
}
-/*
+/*
* change the account currency
* change every txn to currency
* ensure dst xfer transaction account will be set to same currency
acc->kcur = kcur;
DB( g_print(" - '%s'\n", acc->name) );
-
+
for(i=1;i<maxkey;i++)
{
DB( g_print(" - %d '%d'\n", i, xfer_list[i]) );
while (lnk_acc != NULL)
{
Account *acc = lnk_acc->data;
-
+
/* set initial amount */
acc->bal_bank = acc->initial;
acc->bal_today = acc->initial;
acc->bal_future = acc->initial;
-
+
/* add every txn */
lnk_txn = g_queue_peek_head_link(acc->txn_queue);
while (lnk_txn != NULL)
{
Transaction *txn = lnk_txn->data;
-
+
if(!(txn->status == TXN_STATUS_REMIND))
{
account_balances_add_internal(acc, txn);
}
lnk_txn = g_list_next(lnk_txn);
}
-
+
lnk_acc = g_list_next(lnk_acc);
}
g_list_free(lst_acc);