Commit 4733089b authored by Maxime Doyen's avatar Maxime Doyen

5.0.1-rc

parent 560f42d6
2015-03-28 Maxime Doyen
Made 5.0.1 rc release.
* change: xhb data file format (v1.1)
* wish : #1432204 inherit txn should set status to none
* wish : #1421326 "Fill from template" showed by default
* wish : #1419986 reconciled icons, text and translation
* wish : #1413874 keyboard shortcut to transaction none status
* wish : #1377640 txn same consecutive entry
* wish : #926782 for transfers, display target/source account as payee
* bugfix: #1429410 document the "Cleared" ("Pointée") operation status
* bugfix: #1429407 shortcut clashes with search or other text entry widgets
* bugfix: #1427798 -0,00€ for total of account
* bugfix: #1427112 status of template transactions is ignored
* bugfix: #1425986 QIF import sometimes fails in v5.0
* bugfix: #1424437 gtk warning from console
* bugfix: #1422617 trend time report shows dates from closed accounts
* bugfix: #1420495 typo problem in chart tooltip (apos)
* bugfix: #1420098 ctrl+w no longer closes account window
* bugfix: #1419992 visible column names are not localized in preferences dialog
* bugfix: #1419975 not all languages updates were imported for 5.0
* bugfix: #1419476 edit transaction dialog empty category
* bugfix: #1419304 crash if Balance report is open and transaction is deleted
* bugfix: #1415740 budget line with value of 0 not shown in Budget Report
2015-02-08 Maxime Doyen
Made 5.0 release.
......@@ -276,7 +303,7 @@
* wish : #730137 portable app for ms-windows
* wish : #730319 single click in calendar to choose date
* wish : #787131 Column titles in exported CSV
* wish : #787134 exporting to CSV should include all available columns
* wish : #787134 csv add import/export for tags
* wish : #833614 sorting on category / subcategory in statistics report
* wish : #856477 improve category dropdown with +/-
* wish : #886372 poland in the European country list
......
......@@ -590,31 +590,6 @@ fi
# Substitute ALL_LINGUAS so we can use it in po/Makefile
AC_SUBST(ALL_LINGUAS)
# Set DATADIRNAME correctly if it is not set yet
# (copied from glib-gettext.m4)
if test -z "$DATADIRNAME"; then
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[]],
[[extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr]])],
[DATADIRNAME=share],
[case $host in
*-*-solaris*)
dnl On Solaris, if bind_textdomain_codeset is in libc,
dnl GNU format message catalog is always supported,
dnl since both are added to the libc all together.
dnl Hence, we'd like to go with DATADIRNAME=share
dnl in this case.
AC_CHECK_FUNC(bind_textdomain_codeset,
[DATADIRNAME=share], [DATADIRNAME=lib])
;;
*)
[DATADIRNAME=lib]
;;
esac])
fi
AC_SUBST(DATADIRNAME)
IT_PO_SUBDIR([po])
])
......
......@@ -2,17 +2,24 @@
SUBDIRS = datas
@INTLTOOL_DESKTOP_RULE@
desktopdir = $(datadir)/applications
desktop_in_files = homebank.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
@INTLTOOL_XML_RULE@
appdatadir = $(datadir)/appdata
appdata_in_files = homebank.appdata.xml.in
appdata_DATA = $(appdata_in_files:.xml.in=.xml)
EXTRA_DIST = \
$(desktop_in_files)
$(desktop_in_files) \
$(appdata_in_files)
CLEANFILES = \
$(desktop_DATA)
DISTCLEANFILES = \
$(desktop_DATA)
$(desktop_DATA) \
$(appdata_DATA)
......@@ -141,8 +141,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(desktopdir)"
DATA = $(desktop_DATA)
am__installdirs = "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(desktopdir)"
DATA = $(appdata_DATA) $(desktop_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
......@@ -323,14 +323,16 @@ SUBDIRS = datas
desktopdir = $(datadir)/applications
desktop_in_files = homebank.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
appdatadir = $(datadir)/appdata
appdata_in_files = homebank.appdata.xml.in
appdata_DATA = $(appdata_in_files:.xml.in=.xml)
EXTRA_DIST = \
$(desktop_in_files)
$(desktop_in_files) \
$(appdata_in_files)
CLEANFILES = \
$(desktop_DATA)
DISTCLEANFILES = \
$(desktop_DATA)
$(desktop_DATA) \
$(appdata_DATA)
all: all-recursive
......@@ -367,6 +369,27 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
homebank.desktop.in: $(top_builddir)/config.status $(srcdir)/homebank.desktop.in.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-appdataDATA: $(appdata_DATA)
@$(NORMAL_INSTALL)
@list='$(appdata_DATA)'; test -n "$(appdatadir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(appdatadir)'"; \
$(MKDIR_P) "$(DESTDIR)$(appdatadir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appdatadir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(appdatadir)" || exit $$?; \
done
uninstall-appdataDATA:
@$(NORMAL_UNINSTALL)
@list='$(appdata_DATA)'; test -n "$(appdatadir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(appdatadir)'; $(am__uninstall_files_from_dir)
install-desktopDATA: $(desktop_DATA)
@$(NORMAL_INSTALL)
@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
......@@ -548,7 +571,7 @@ check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(desktopdir)"; do \
for dir in "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(desktopdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
......@@ -578,7 +601,6 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
......@@ -603,7 +625,7 @@ info: info-recursive
info-am:
install-data-am: install-desktopDATA
install-data-am: install-appdataDATA install-desktopDATA
install-dvi: install-dvi-recursive
......@@ -647,25 +669,29 @@ ps: ps-recursive
ps-am:
uninstall-am: uninstall-desktopDATA
uninstall-am: uninstall-appdataDATA uninstall-desktopDATA
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic cscopelist-am ctags ctags-am \
distclean distclean-generic distclean-tags distdir dvi dvi-am \
html html-am info info-am install install-am install-data \
install-data-am install-desktopDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-desktopDATA
html html-am info info-am install install-am \
install-appdataDATA install-data install-data-am \
install-desktopDATA install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-appdataDATA uninstall-desktopDATA
@INTLTOOL_DESKTOP_RULE@
@INTLTOOL_XML_RULE@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
<?xml version="1.0" encoding="UTF-8"?>
<application>
<id type="desktop">homebank.desktop</id>
<licence>GPL-2.0+</licence>
<description>
<_p>
HomeBank is a free software (as in "free speech" and also as in "free beer")
that will assist you to manage your personal accounting.
</_p>
<_p>
It is designed to easy to use and be able to analyse your personal finance
in detail using powerful filtering tools and beautiful graphs.
</_p>
<_p>
If you are looking for a completely free and easy way to manage your personal
accounting then HomeBank should be the software of choice.
</_p>
</description>
<screenshots>
<screenshot type="default" width="624" height="351">http://homebank.free.fr/img/homebank-appdata.png</screenshot>
</screenshots>
<url type="homepage">http://homebank.free.fr</url>
<updatecontact>homebank_at_free.fr</updatecontact>
</application>
[Desktop Entry]
_Name=HomeBank
_GenericName=Personal finance
_Comment=Free, easy, personal accounting for everyone.
Exec=homebank %F
_Keywords=finance;accounting;budget;personal;money;
Exec=homebank %f
Terminal=false
StartupNotify=true
Type=Application
Icon=homebank
Categories=GTK;Office;Finance;
Categories=GNOME;GTK;Office;Finance;
MimeType=application/x-homebank;
This diff is collapsed.
......@@ -26,6 +26,7 @@ enum
ACTION_ACCOUNT_ADD,
ACTION_ACCOUNT_INHERIT,
ACTION_ACCOUNT_EDIT,
ACTION_ACCOUNT_NONE,
ACTION_ACCOUNT_CLEAR,
ACTION_ACCOUNT_RECONCILE,
ACTION_ACCOUNT_DELETE,
......
......@@ -27,7 +27,7 @@
#include "list_topspending.h"
#include "dsp_account.h"
//#include "ui-assist-import.h"
#include "ui-assist-import.h"
#include "imp_qif.h"
#include "ui-assist-start.h"
#include "ui-account.h"
......@@ -39,7 +39,6 @@
#include "ui-pref.h"
#include "ui-hbfile.h"
#include "ui-transaction.h"
#include "ui-assist-import.h"
#include "rep_balance.h"
#include "rep_budget.h"
......@@ -1061,7 +1060,7 @@ struct hbfile_data *data;
GtkWidget *window;
gint result = 1;
guint32 date;
gint account = 1, count;
gint account, count;
DB( g_print("\n[ui-mainwindow] add transactions\n") );
......@@ -1069,22 +1068,27 @@ gint account = 1, count;
/* init the transaction */
date = homebank_app_date_get_julian();
//todo: maybe think about set a default account here
account = 1;
if(data->acc != NULL)
account = data->acc->key;
window = create_deftransaction_window(GTK_WINDOW(data->window), TRANSACTION_EDIT_ADD);
count = 0;
while(result == GTK_RESPONSE_ADD)
while(result == GTK_RESPONSE_ADD || result == GTK_RESPONSE_ADDKEEP)
{
Transaction *ope;
/* fill in the transaction */
ope = da_transaction_malloc();
ope->date = date;
ope->kacc = account;
if( result == GTK_RESPONSE_ADD )
{
ope = da_transaction_malloc();
ope->date = date;
ope->kacc = account;
if( PREFS->heritdate == FALSE ) //fix: 318733
ope->date = GLOBALS->today;
if( PREFS->heritdate == FALSE ) //fix: 318733
ope->date = GLOBALS->today;
}
deftransaction_set_transaction(window, ope);
......@@ -1092,7 +1096,7 @@ gint account = 1, count;
DB( g_print(" -> dialog result is %d\n", result) );
if(result == GTK_RESPONSE_ADD || result == GTK_RESPONSE_ACCEPT)
if(result == GTK_RESPONSE_ADD || result == GTK_RESPONSE_ADDKEEP || result == GTK_RESPONSE_ACCEPT)
{
deftransaction_get(window, NULL);
transaction_add(ope, NULL, ope->kacc);
......@@ -1102,12 +1106,15 @@ gint account = 1, count;
ui_mainwindow_populate_accounts(GLOBALS->mainwindow, NULL);
count++;
//store last date
//todo: still usefull ? store last date
date = ope->date;
}
da_transaction_free(ope);
ope = NULL;
if( result == GTK_RESPONSE_ADD )
{
da_transaction_free(ope);
ope = NULL;
}
}
......@@ -1162,7 +1169,7 @@ gdouble total, other;
if(range == FLT_RANGE_OTHER)
return;
filter_preset_daterange_set(data->filter, range);
filter_preset_daterange_set(data->filter, range, 0);
n_result = da_cat_get_max_key() + 1;
......@@ -2405,7 +2412,7 @@ static void ui_mainwindow_drag_data_received (GtkWidget *widget,
if( filetype == FILETYPE_HOMEBANK)
{
hbfile_change_filepath(path);
hbfile_change_filepath(g_strdup(path));
ui_mainwindow_open_internal(GTK_WIDGET(window), NULL);
}
else
......
......@@ -159,7 +159,7 @@ GtkWidget *widget, *hbox, *scrollwin;
gtk_container_add( GTK_CONTAINER(scrollwin), chart->drawarea );
gtk_widget_set_size_request(chart->drawarea, 150, 150 );
gtk_widget_set_has_tooltip(chart->drawarea, TRUE);
gtk_widget_set_has_tooltip(chart->drawarea, FALSE);
gtk_widget_show(chart->drawarea);
/* scrollbar */
......
......@@ -1800,17 +1800,17 @@ gboolean retval = FALSE;
strval = chart_print_double(chart, chart->buffer1, item->serie1);
if( !chart->dual )
{
//#1420495 don't use g_markup_printf_escaped
if( chart->type == CHART_TYPE_PIE )
buffer = g_markup_printf_escaped("%s\n%s\n%.2f%%", item->label, strval, item->rate);
buffer = g_strdup_printf("%s\n%s\n%.2f%%", item->label, strval, item->rate);
else
buffer = g_markup_printf_escaped("%s\n%s", item->label, strval);
buffer = g_strdup_printf("%s\n%s", item->label, strval);
}
else
{
strval2 = chart_print_double(chart, chart->buffer2, item->serie2);
buffer = g_markup_printf_escaped("%s\n+%s\n%s", item->label, strval2, strval);
buffer = g_strdup_printf("%s\n+%s\n%s", item->label, strval2, strval);
}
gtk_tooltip_set_text(tooltip, buffer);
......
......@@ -28,13 +28,21 @@ struct _archive
{
gdouble amount;
guint32 kacc;
guint32 kxferacc;
gushort paymode;
gushort flags;
guint32 kpay;
guint32 kcat;
gchar *wording;
//guint32 date;
//gushort pos;
gushort status;
//gchar *info;
//guint32 *tags;
//guint32 kxfer; //strong link xfer key
guint32 kxferacc;
//Split *splits[TXN_MAX_SPLIT+1];
guint32 nextdate;
gushort every;
......
......@@ -78,8 +78,8 @@ GDate *date;
static void filter_default_date_set(Filter *flt)
{
flt->mindate = 693596; //01/01/1900
flt->maxdate = 803533; //31/12/2200
flt->mindate = HB_MINDATE;
flt->maxdate = HB_MAXDATE;
}
......@@ -123,31 +123,63 @@ gint i;
for(i=0;i<NUM_PAYMODE_MAX;i++)
flt->paymode[i] = TRUE;
filter_preset_daterange_set(flt, flt->range);
filter_preset_daterange_set(flt, flt->range, 0);
}
void filter_preset_daterange_set(Filter *flt, gint range)
void filter_preset_daterange_set(Filter *flt, gint range, guint32 kacc)
{
GDate *date;
GList *list;
guint32 refjuliandate, month, year, qnum;
gboolean accounts[da_acc_get_max_key ()+1];
guint i;
// any date :: todo : get date of current account only when account
flt->range = range;
if(g_list_length(GLOBALS->ope_list) > 0) // get all transaction date bound
DB( g_print("(filter) daterange set %p %d\n", flt, range) );
//todo: get date of current account only when account
//todo: don't consider closed account !!
//beware: g_list_last get into every node !!
filter_default_date_set(flt);
if(g_list_length(GLOBALS->ope_list) > 0)
{
//5.0 useless
//GLOBALS->ope_list = da_transaction_sort(GLOBALS->ope_list);
// open/closed acccount vector
for(i=1;i<=da_acc_get_max_key ();i++)
{
Account * acc = da_acc_get(i);
if(acc)
{
accounts[i] = acc->flags & AF_CLOSED ? FALSE: TRUE;
//in case we focus on an account, consider the account as disabled
if(kacc != 0 && i != kacc)
accounts[i] = FALSE;
DB( g_print("acc '%s' %d\n", acc->name, accounts[i]) );
}
}
//parse all: in waiting other storage, as g_list_last will do anyway
// find first no account closed account
list = g_list_first(GLOBALS->ope_list);
flt->mindate = ((Transaction *)list->data)->date;
list = g_list_last(GLOBALS->ope_list);
flt->maxdate = ((Transaction *)list->data)->date;
flt->mindate = HB_MAXDATE;
flt->maxdate = HB_MINDATE;
while (list != NULL)
{
Transaction *item = list->data;
if(accounts[item->kacc] == TRUE)
{
flt->mindate = MIN(flt->mindate, item->date);
flt->maxdate = MAX(flt->maxdate, item->date);
}
list = g_list_next(list);
}
}
else
filter_default_date_set(flt);
flt->range = range;
// by default refjuliandate is today
// but we adjust if to max transaction date found
......
......@@ -113,12 +113,15 @@ struct _filter
guint last_tab;
};
#define HB_MINDATE 693596; //01/01/1900
#define HB_MAXDATE 803533; //31/12/2200
Filter *da_filter_malloc(void);
void da_filter_free(Filter *flt);
void filter_default_all_set(Filter *flt);
void filter_preset_daterange_set(Filter *flt, gint range);
void filter_preset_daterange_set(Filter *flt, gint range, guint32 kacc);
void filter_preset_type_set(Filter *flt, gint value);
void filter_preset_status_set(Filter *flt, gint value);
gchar *filter_daterange_text_get(Filter *flt);
......
......@@ -331,6 +331,8 @@ guint cnt, i;
void hbfile_cleanup(gboolean file_clear)
{
Transaction *txn;
DB( g_print("\n[hbfile] cleanup\n") );
DB( g_print("- file clear is %d\n", file_clear) );
......@@ -345,6 +347,13 @@ void hbfile_cleanup(gboolean file_clear)
da_archive_destroy(GLOBALS->arc_list);
da_transaction_destroy(GLOBALS->ope_list);
txn = g_trash_stack_pop(&GLOBALS->txn_stk);
while( txn != NULL )
{
da_transaction_free (txn);
txn = g_trash_stack_pop(&GLOBALS->txn_stk);
}
hbfile_change_owner(NULL);
if(file_clear)
......@@ -370,7 +379,7 @@ void hbfile_setup(gboolean file_clear)
GLOBALS->h_memo = g_hash_table_new_full(g_str_hash, g_str_equal, (GDestroyNotify)g_free, NULL);
GLOBALS->arc_list = NULL;
GLOBALS->ope_list = NULL;
GLOBALS->txn_stk = NULL;
if(file_clear == TRUE)
{
......
......@@ -38,7 +38,7 @@ static const double fac[7] = { 1, 10, 100, 1000, 10000, 100000, 1000000 };
double arrondi(const double x, unsigned int digits)
{
return round(x*fac[digits])/fac[digits];
return floor((x * fac[digits]) + 0.5) / fac[digits];
}
......
......@@ -20,7 +20,7 @@
#ifndef __HB_MISC__H__
#define __HB_MISC__H__
double arrondi(const double x, unsigned n);
double arrondi(const double x, unsigned int n);
gdouble amount_to_euro(gdouble amount);
gchar *hb_str_formatd(gchar *outstr, gint outlen, gchar *buf1, struct CurrencyFmt *cur, gboolean showsymbol);
......
......@@ -246,8 +246,10 @@ guint count;
Transaction *da_transaction_init_from_template(Transaction *txn, Archive *arc)
{
//txn->date = 0;
txn->amount = arc->amount;
txn->kacc = arc->kacc;
txn->amount = arc->amount;
//#1258344 keep the current account if tpl is empty
if(arc->kacc)
txn->kacc = arc->kacc;
txn->paymode = arc->paymode;
txn->flags = arc->flags | OF_ADDED;
txn->status = arc->status;
......@@ -445,8 +447,8 @@ guint i, nbsplit;
split->kcat = 0;
}
}
//# 1416624 empty category when split
if(nbsplit > 0)
//# 1416624 empty category when split + add control on kcat for v5.0.1
if(nbsplit > 0 && item->kcat > 0)
{
g_warning("txn consistency: fixed invalid cat on split txn");
item->kcat = 0;
......
......@@ -53,7 +53,8 @@ static void homebank_upgrade_lower_v06(void);
static void homebank_upgrade_to_v06(void);
static void homebank_upgrade_to_v07(void);
static void homebank_upgrade_to_v08(void);
static void homebank_upgrade_to_v50(void);
static void homebank_upgrade_to_v10(void);
static void homebank_upgrade_to_v11(void);
static void
start_element_handler (GMarkupParseContext *context,
......@@ -442,8 +443,10 @@ gboolean rc;
DB( g_print("- id line: --(%.50s)\n\n", v_buffer) );
version = g_ascii_strtod(v_buffer+13, NULL); /* a little hacky, but works ! */
if( version == 0.0 )
if( version == 0.0 )
version = 0.1;
else if( version == 5.0 ) //was a mistake
version = 1.0;
ctx.version = version;
......@@ -512,7 +515,7 @@ gboolean rc;
homebank_upgrade_to_v07();
hbfile_sanity_check();
}
if( version <= 0.7 ) // <= 4.5
if( version <= 0.7 ) // <= 4.5
{
homebank_upgrade_to_v08();
}
......@@ -523,13 +526,15 @@ gboolean rc;
if( version <= 0.9 ) // <= 4.6.3
{
hbfile_sanity_check();
homebank_upgrade_to_v50();
homebank_upgrade_to_v10();
}
if( version == 5.0 ) // 5.0.0 rc
if( version <= 1.0 ) // <= 5.0.0
{
hbfile_sanity_check();
homebank_upgrade_to_v11();
}
// next ?
}
}
......@@ -691,11 +696,11 @@ GList *list;
}
static void homebank_upgrade_to_v50(void)
static void homebank_upgrade_to_v10(void)
{
GList *list;
DB( g_print("\n[hb-xml] homebank_upgrade_to_v50\n") );
DB( g_print("\n[hb-xml] homebank_upgrade_to_v10\n") );
list = g_list_first(GLOBALS->ope_list);
while (list != NULL)
......@@ -718,6 +723,33 @@ GList *list;
}
static void homebank_upgrade_to_v11(void)
{
GList *list;
DB( g_print("\n[hb-xml] homebank_upgrade_to_v11\n") );
list = g_list_first(GLOBALS->arc_list);
while (list != NULL)
{
Archive *entry = list->data;
entry->status = TXN_STATUS_NONE;
if(entry->flags & OF_OLDVALID)
entry->status = TXN_STATUS_RECONCILED;
else
if(entry->flags & OF_OLDREMIND)
entry->status = TXN_STATUS_REMIND;
//remove those flags
entry->flags &= ~(OF_OLDVALID|OF_OLDREMIND);
list = g_list_next(list);
}
}
// v0.6 to v0.7 : assign a default currency
/*