mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Indicate an Association in the Register
Use the field below the reconcile and type entry on the transaction lines to indicate a file/link association.
This commit is contained in:
parent
8f9d1dcf39
commit
5bb53c044a
@ -125,6 +125,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
|
||||
@ -134,6 +135,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SINGLE_JOURNAL);
|
||||
@ -154,6 +156,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
|
||||
@ -163,6 +166,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SPLIT);
|
||||
@ -209,6 +213,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
copy_cursor_row (layout, curs, curs_last, 0);
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
|
||||
|
||||
@ -217,6 +222,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
copy_cursor_row (layout, curs, curs_last, 0);
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
|
||||
|
||||
@ -246,6 +252,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
copy_cursor_row (layout, curs, curs_last, 0);
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
|
||||
|
||||
@ -297,6 +304,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
|
||||
@ -306,6 +314,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SINGLE_JOURNAL);
|
||||
@ -331,6 +340,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
|
||||
@ -339,6 +349,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SPLIT);
|
||||
@ -390,6 +401,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
|
||||
@ -399,6 +411,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SINGLE_JOURNAL);
|
||||
@ -419,6 +432,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
|
||||
@ -428,6 +442,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SPLIT);
|
||||
@ -469,6 +484,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
|
||||
@ -478,6 +494,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SINGLE_JOURNAL);
|
||||
@ -497,6 +514,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
|
||||
@ -506,6 +524,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
|
||||
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
|
||||
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
|
||||
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
|
||||
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
|
||||
|
||||
curs = gnc_table_layout_get_cursor (layout,
|
||||
CURSOR_SPLIT);
|
||||
@ -673,6 +692,14 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
|
||||
FALSE,
|
||||
FALSE);
|
||||
|
||||
gnc_register_add_cell (layout,
|
||||
ASSOC_CELL,
|
||||
RECN_CELL_TYPE_NAME,
|
||||
N_("Associate:A") + 10,
|
||||
CELL_ALIGN_LEFT,
|
||||
FALSE,
|
||||
FALSE);
|
||||
|
||||
gnc_register_add_cell (layout,
|
||||
BALN_CELL,
|
||||
PRICE_CELL_TYPE_NAME,
|
||||
@ -783,7 +810,7 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
|
||||
TYPE_CELL,
|
||||
RECN_CELL_TYPE_NAME,
|
||||
N_("Type:T") + 5,
|
||||
CELL_ALIGN_LEFT,
|
||||
CELL_ALIGN_CENTER,
|
||||
FALSE,
|
||||
FALSE);
|
||||
|
||||
|
@ -68,6 +68,23 @@ gnc_split_register_load_recn_cells (SplitRegister *reg)
|
||||
gnc_recn_cell_set_string_getter (cell, gnc_get_reconcile_str);
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_split_register_load_associate_cells (SplitRegister *reg)
|
||||
{
|
||||
RecnCell *cell;
|
||||
|
||||
if (!reg) return;
|
||||
|
||||
cell = (RecnCell *)
|
||||
gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
|
||||
|
||||
if (!cell) return;
|
||||
|
||||
/* FIXME: These should get moved to an i18n function */
|
||||
gnc_recn_cell_set_valid_flags (cell, "@ ", ' ');
|
||||
gnc_recn_cell_set_flag_order (cell, "@ ");
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_split_register_load_type_cells (SplitRegister *reg)
|
||||
{
|
||||
@ -491,6 +508,7 @@ gnc_split_register_load (SplitRegister *reg, GList * slist,
|
||||
|
||||
/* load up account names into the transfer combobox menus */
|
||||
gnc_split_register_load_xfer_cells (reg, default_account);
|
||||
gnc_split_register_load_associate_cells (reg);
|
||||
gnc_split_register_load_recn_cells (reg);
|
||||
gnc_split_register_load_type_cells (reg);
|
||||
}
|
||||
|
@ -339,6 +339,13 @@ gnc_split_register_get_memo_label (VirtualLocation virt_loc,
|
||||
return _("Memo");
|
||||
}
|
||||
|
||||
static const char *
|
||||
gnc_split_register_get_associate_label (VirtualLocation virt_loc,
|
||||
gpointer user_data)
|
||||
{
|
||||
return _("Associate:A");
|
||||
}
|
||||
|
||||
static const char *
|
||||
gnc_split_register_get_type_label (VirtualLocation virt_loc,
|
||||
gpointer user_data)
|
||||
@ -758,6 +765,51 @@ gnc_split_register_get_border (VirtualLocation virt_loc,
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
gnc_split_register_get_associate_entry (VirtualLocation virt_loc,
|
||||
gboolean translate,
|
||||
gboolean *conditionally_changed,
|
||||
gpointer user_data)
|
||||
{
|
||||
SplitRegister *reg = user_data;
|
||||
Transaction *trans;
|
||||
char associate;
|
||||
static char s[2];
|
||||
const char *uri;
|
||||
|
||||
trans = gnc_split_register_get_trans (reg, virt_loc.vcell_loc);
|
||||
if (!trans)
|
||||
return NULL;
|
||||
|
||||
// get the existing uri
|
||||
uri = xaccTransGetAssociation (trans);
|
||||
|
||||
// Check for uri is empty or NULL
|
||||
if (g_strcmp0 (uri, "") != 0 && g_strcmp0 (uri, NULL) != 0)
|
||||
associate = '@';
|
||||
else
|
||||
associate = ' ';
|
||||
|
||||
s[0] = associate;
|
||||
s[1] = '\0';
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
static char
|
||||
gnc_split_register_get_associate_value (SplitRegister *reg,
|
||||
VirtualLocation virt_loc)
|
||||
{
|
||||
RecnCell *cell;
|
||||
|
||||
cell = (RecnCell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
|
||||
if (!cell)
|
||||
return '\0';
|
||||
|
||||
return gnc_recn_cell_get_flag (cell);
|
||||
}
|
||||
|
||||
|
||||
static const char *
|
||||
gnc_split_register_get_type_entry (VirtualLocation virt_loc,
|
||||
gboolean translate,
|
||||
@ -2331,6 +2383,10 @@ gnc_split_register_model_new (void)
|
||||
gnc_split_register_get_tdebcred_entry,
|
||||
TCRED_CELL);
|
||||
|
||||
gnc_table_model_set_entry_handler (model,
|
||||
gnc_split_register_get_associate_entry,
|
||||
ASSOC_CELL);
|
||||
|
||||
gnc_table_model_set_entry_handler (model,
|
||||
gnc_split_register_get_type_entry,
|
||||
TYPE_CELL);
|
||||
@ -2424,6 +2480,10 @@ gnc_split_register_model_new (void)
|
||||
gnc_split_register_get_tbalance_label,
|
||||
TBALN_CELL);
|
||||
|
||||
gnc_table_model_set_label_handler (model,
|
||||
gnc_split_register_get_associate_label,
|
||||
ASSOC_CELL);
|
||||
|
||||
gnc_table_model_set_label_handler (model,
|
||||
gnc_split_register_get_type_label,
|
||||
TYPE_CELL);
|
||||
@ -2559,6 +2619,9 @@ gnc_split_register_model_new (void)
|
||||
gnc_table_model_set_io_flags_handler(
|
||||
model, gnc_split_register_get_recn_io_flags, RECN_CELL);
|
||||
|
||||
gnc_table_model_set_io_flags_handler(
|
||||
model, gnc_split_register_get_recn_io_flags, ASSOC_CELL);
|
||||
|
||||
gnc_table_model_set_io_flags_handler(
|
||||
model, gnc_split_register_get_recn_io_flags, TYPE_CELL);
|
||||
|
||||
|
@ -180,6 +180,7 @@ typedef enum
|
||||
* @{
|
||||
*/
|
||||
#define ACTN_CELL "action"
|
||||
#define ASSOC_CELL "associate"
|
||||
#define BALN_CELL "balance"
|
||||
#define CRED_CELL "credit"
|
||||
#define DATE_CELL "date"
|
||||
|
Loading…
Reference in New Issue
Block a user