Hi!

I currently find it a bit difficult to handle multi-split transactions that include several 
"splits" going to the same account. For example, if I'm buying some computer hardware I 
want to record the prices of each part for later reference, but all those parts are recorded in 
"Hardware" account - thus several splits go into the same account.

In default "Basic Ledger" view this is shown in a confusing way - each split 
gets its own row, but each row displays the same transaction description (not the name of 
the individual part).

For the moment I explored several different solutions to this situation:

1. Record each item (hardware part in this example) as a separate transaction. 
This solves the issue with display since I can now put each item name into the 
description field. But now I have multiple transactions my credit card account, 
which would make reliable reconciliation almost impossible.

2. Use the "Transaction Journal" view. It handles this situation a bit better than 
"Basic Ledger" - the rows are not duplicated. But it show all the splits, even the ones 
not related to the currently viewed account, and the simple two-split transactions start taking 3 
rows each, which is too verbose, especially since this is a global setting.

3. Show "memo" as a separate column in "Basic Ledger" view (I've attached the 
code patch that does it, applies to version 4.8). This works quite nicely - simple transactions 
keep using one row, complex transactions display only the splits related to the current register 
and each split shows its memo right in the register. However this is a code customization, won't 
help anybody else with similar problems, and maintaining it is going to be more difficult than 
built-in solutions.

Do you have any suggestions about a better way of handling this?

Best regards,
Platon Pronko
Add a memo column after description column.

diff --git a/gnucash/register/ledger-core/split-register-layout.c b/gnucash/register/ledger-core/split-register-layout.c
index 6f7f2bef9..6fbc14789 100644
--- a/gnucash/register/ledger-core/split-register-layout.c
+++ b/gnucash/register/ledger-core/split-register-layout.c
@@ -93,20 +93,21 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
         gnc_table_layout_set_cell (layout, curs, DATE_CELL,  0, 0);
         gnc_table_layout_set_cell (layout, curs, NUM_CELL,   0, 1);
         gnc_table_layout_set_cell (layout, curs, DESC_CELL,  0, 2);
-        gnc_table_layout_set_cell (layout, curs, MXFRM_CELL, 0, 3);
-        gnc_table_layout_set_cell (layout, curs, RECN_CELL,  0, 4);
+        gnc_table_layout_set_cell (layout, curs, MEMO_CELL,  0, 3);
+        gnc_table_layout_set_cell (layout, curs, MXFRM_CELL, 0, 4);
+        gnc_table_layout_set_cell (layout, curs, RECN_CELL,  0, 5);
         if (reg->is_template)
         {
-            gnc_table_layout_set_cell (layout, curs, FDEBT_CELL, 0, 5);
-            gnc_table_layout_set_cell (layout, curs, FCRED_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, FDEBT_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, FCRED_CELL, 0, 7);
         }
         else
         {
-            gnc_table_layout_set_cell (layout, curs, DEBT_CELL,  0, 5);
-            gnc_table_layout_set_cell (layout, curs, CRED_CELL,  0, 6);
+            gnc_table_layout_set_cell (layout, curs, DEBT_CELL,  0, 6);
+            gnc_table_layout_set_cell (layout, curs, CRED_CELL,  0, 7);
         }
-        gnc_table_layout_set_cell (layout, curs, BALN_CELL,  0, 7);
-        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 8);
+        gnc_table_layout_set_cell (layout, curs, BALN_CELL,  0, 8);
+        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 9);
 
         curs_last = curs;
         curs = gnc_table_layout_get_cursor (layout,
@@ -135,10 +136,10 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
         gnc_table_layout_set_cell (layout, curs, DATE_CELL,  0, 0);
         gnc_table_layout_set_cell (layout, curs, NUM_CELL,   0, 1);
         gnc_table_layout_set_cell (layout, curs, DESC_CELL,  0, 2);
-        gnc_table_layout_set_cell (layout, curs, TDEBT_CELL, 0, 5);
-        gnc_table_layout_set_cell (layout, curs, TCRED_CELL, 0, 6);
-        gnc_table_layout_set_cell (layout, curs, TBALN_CELL, 0, 7);
-        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 8);
+        gnc_table_layout_set_cell (layout, curs, TDEBT_CELL, 0, 6);
+        gnc_table_layout_set_cell (layout, curs, TCRED_CELL, 0, 7);
+        gnc_table_layout_set_cell (layout, curs, TBALN_CELL, 0, 8);
+        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 9);
 
         curs_last = curs;
         curs = gnc_table_layout_get_cursor (layout,
@@ -165,19 +166,19 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
 
         gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 0, 1);
         gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 0, 2);
-        gnc_table_layout_set_cell (layout, curs, XFRM_CELL, 0, 3);
-        gnc_table_layout_set_cell (layout, curs, RECN_CELL, 0, 4);
+        gnc_table_layout_set_cell (layout, curs, XFRM_CELL, 0, 4);
+        gnc_table_layout_set_cell (layout, curs, RECN_CELL, 0, 5);
         if (reg->is_template)
         {
-            gnc_table_layout_set_cell (layout, curs, FDEBT_CELL, 0, 5);
-            gnc_table_layout_set_cell (layout, curs, FCRED_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, FDEBT_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, FCRED_CELL, 0, 7);
         }
         else
         {
-            gnc_table_layout_set_cell (layout, curs, DEBT_CELL, 0, 5);
-            gnc_table_layout_set_cell (layout, curs, CRED_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, DEBT_CELL, 0, 6);
+            gnc_table_layout_set_cell (layout, curs, CRED_CELL, 0, 7);
         }
-        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 8);
+        gnc_table_layout_set_cell (layout, curs, RATE_CELL, 0, 9);
 
         break;
     }
@@ -678,7 +679,7 @@ gnc_split_register_layout_add_cells (SplitRegister* reg,
                            QUICKFILL_CELL_TYPE_NAME,
                            C_ ("sample", "Description of a transaction"),
                            CELL_ALIGN_LEFT,
-                           TRUE,
+                           FALSE,
                            FALSE);
 
     gnc_register_add_cell (layout,
_______________________________________________
gnucash-user mailing list
[email protected]
To update your subscription preferences or to unsubscribe:
https://lists.gnucash.org/mailman/listinfo/gnucash-user
If you are using Nabble or Gmane, please see 
https://wiki.gnucash.org/wiki/Mailing_Lists for more information.
-----
Please remember to CC this list on all your replies.
You can do this by using Reply-To-List or Reply-All.

Reply via email to