remove unnecesary 'home' level in path for US Income Tax book tax information

This commit is contained in:
Alex Aycinena 2019-01-24 18:36:13 -08:00
parent 3a48672763
commit fc15364326
3 changed files with 97 additions and 4 deletions

View File

@ -227,8 +227,10 @@ gnc_is_new_book (void)
? TRUE : FALSE);
}
#define OPTION_TAXUS_NAME "book/tax_US/name"
#define OPTION_TAXUS_TYPE "book/tax_US/type"
#define OPTION_TAXUS_NAME "tax_US/name"
#define OPTION_TAXUS_TYPE "tax_US/type"
#define OLD_OPTION_TAXUS_NAME "book/tax_US/name"
#define OLD_OPTION_TAXUS_TYPE "book/tax_US/type"
void
gnc_set_current_book_tax_name (const gchar *tax_name)
@ -239,7 +241,45 @@ gnc_set_current_book_tax_name (const gchar *tax_name)
const gchar *
gnc_get_current_book_tax_name (void)
{
return qof_book_get_string_option(gnc_get_current_book(), OPTION_TAXUS_NAME);
QofBook* book = gnc_get_current_book();
const char* tax_name =
qof_book_get_string_option(book, OPTION_TAXUS_NAME);
if (tax_name)
{
return tax_name;
}
else
{
const char* old_option_taxus_name =
qof_book_get_string_option(book, OLD_OPTION_TAXUS_NAME);
if (old_option_taxus_name)
{
char* taxus_name = g_strdup(old_option_taxus_name);
const char* old_option_taxus_type =
qof_book_get_string_option(book, OLD_OPTION_TAXUS_TYPE);
if (old_option_taxus_type)
{ /* switch both name and type and remove unused frames */
char* taxus_type = g_strdup(old_option_taxus_type);
qof_book_set_string_option(book, OPTION_TAXUS_NAME, taxus_name);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_NAME, '\0');
qof_book_set_string_option(book, OPTION_TAXUS_TYPE, taxus_type);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_TYPE, '\0');
qof_book_option_frame_delete(book, "book/tax_US");
qof_book_option_frame_delete(book, "book");
g_free (taxus_type);
}
else
{ /* switch just name and remove unused frames */
qof_book_set_string_option(book, OPTION_TAXUS_NAME, taxus_name);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_NAME, '\0');
qof_book_option_frame_delete(book, "book/tax_US");
qof_book_option_frame_delete(book, "book");
}
g_free (taxus_name);
return qof_book_get_string_option(book, OPTION_TAXUS_NAME);
}
return NULL;
}
}
void
@ -251,7 +291,45 @@ gnc_set_current_book_tax_type (const gchar *tax_type)
const gchar *
gnc_get_current_book_tax_type (void)
{
return qof_book_get_string_option(gnc_get_current_book(), OPTION_TAXUS_TYPE);
QofBook* book = gnc_get_current_book();
const char* tax_type =
qof_book_get_string_option(book, OPTION_TAXUS_TYPE);
if (tax_type)
{
return tax_type;
}
else
{
const char* old_option_taxus_type =
qof_book_get_string_option(book, OLD_OPTION_TAXUS_TYPE);
if (old_option_taxus_type)
{
char* taxus_type = g_strdup(old_option_taxus_type);
const char* old_option_taxus_name =
qof_book_get_string_option(book, OLD_OPTION_TAXUS_NAME);
if (old_option_taxus_name)
{ /* switch both name and type and remove unused frames */
char* taxus_name = g_strdup(old_option_taxus_name);
qof_book_set_string_option(book, OPTION_TAXUS_NAME, taxus_name);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_NAME, '\0');
qof_book_set_string_option(book, OPTION_TAXUS_TYPE, taxus_type);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_TYPE, '\0');
qof_book_option_frame_delete(book, "book/tax_US");
qof_book_option_frame_delete(book, "book");
g_free (taxus_name);
}
else
{ /* switch just type and remove unused frames */
qof_book_set_string_option(book, OPTION_TAXUS_TYPE, taxus_type);
qof_book_set_string_option(book, OLD_OPTION_TAXUS_TYPE, '\0');
qof_book_option_frame_delete(book, "book/tax_US");
qof_book_option_frame_delete(book, "book");
}
g_free (taxus_type);
return qof_book_get_string_option(book, OPTION_TAXUS_TYPE);
}
return NULL;
}
}
/** Calls gnc_book_option_num_field_source_change to initiate registered

View File

@ -1171,6 +1171,20 @@ qof_book_set_string_option(QofBook* book, const char* opt_name, const char* opt_
qof_book_commit_edit(book);
}
void
qof_book_option_frame_delete (QofBook *book, const char* opt_name)
{
if (opt_name && (*opt_name != '\0'))
{
qof_book_begin_edit(book);
auto frame = qof_instance_get_slots(QOF_INSTANCE(book));
auto opt_path = opt_name_to_path(opt_name);
delete frame->set_path(opt_path, nullptr);
qof_instance_set_dirty (QOF_INSTANCE (book));
qof_book_commit_edit(book);
}
}
void
qof_book_begin_edit (QofBook *book)
{

View File

@ -375,6 +375,7 @@ char *qof_book_get_counter_format (const QofBook *book,
const char* qof_book_get_string_option(const QofBook* book, const char* opt_name);
void qof_book_set_string_option(QofBook* book, const char* opt_name, const char* opt_val);
void qof_book_option_frame_delete (QofBook *book, const char* opt_name);
/** Access functions for reading and setting the used-features on this book.
*/