Index: O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model-save.c
===================================================================
--- O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model-save.c	(revision 18388)
+++ O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model-save.c	(working copy)
@@ -111,6 +111,31 @@
 }
 
 static void
+gnc_split_register_save_trans_date_cell (BasicCell * cell,
+                                       gpointer save_data,
+                                       gpointer user_data)
+{
+  SRSaveData *sd = save_data;
+  const char *value;
+  Timespec ts;
+
+
+  g_return_if_fail (gnc_basic_cell_has_name (cell, DTRANS_CELL));
+
+  value = gnc_basic_cell_get_value (cell);
+
+  /* commit any pending changes */
+  gnc_date_cell_commit ((DateCell *) cell);
+
+
+  DEBUG ("TRANSACTION: %s", value ? value : "(null)");
+
+  gnc_date_cell_get_date ((DateCell *) cell, &ts);
+
+  xaccTransSetDateEnteredTS (sd->trans, &ts);
+}
+
+static void
 gnc_split_register_save_num_cell (BasicCell * cell,
                                   gpointer save_data,
                                   gpointer user_data)
@@ -711,7 +736,12 @@
                                     gnc_split_register_save_due_date_cell,
                                     DDUE_CELL);
 
+
   gnc_table_model_set_save_handler (model,
+                                    gnc_split_register_save_trans_date_cell,
+                                    DTRANS_CELL);
+
+  gnc_table_model_set_save_handler (model,
                                     gnc_split_register_save_type_cell,
                                     TYPE_CELL);
 
@@ -785,7 +815,13 @@
                                     gnc_template_register_save_unexpected_cell,
                                     DDUE_CELL);
 
+
   gnc_table_model_set_save_handler (model,
+                                    gnc_template_register_save_unexpected_cell,
+                                    DTRANS_CELL);
+
+
+  gnc_table_model_set_save_handler (model,
                                     gnc_template_register_save_xfrm_cell,
                                     XFRM_CELL);
 
Index: O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model.c
===================================================================
--- O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model.c	(revision 18388)
+++ O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-model.c	(working copy)
@@ -181,6 +181,13 @@
 }
 
 static const char *
+gnc_split_register_get_trans_date_label (VirtualLocation virt_loc,
+				       gpointer user_data)
+{
+  return _("Transaction");
+}
+
+static const char *
 gnc_split_register_get_num_label (VirtualLocation virt_loc,
                                   gpointer user_data)
 {
@@ -818,11 +825,52 @@
 
   xaccTransGetDateDueTS (trans, &ts);
   //PWARN ("returning valid due_date entry");
-    
+
   return gnc_print_date (ts);
 }
 
+
 static const char *
+gnc_split_register_get_trans_date_entry (VirtualLocation virt_loc,
+                                   gboolean translate,
+                                   gboolean *conditionally_changed,
+                                   gpointer user_data)
+{
+  SplitRegister *reg = user_data;
+  Transaction *trans;
+  Split *split;
+  Timespec ts;
+
+  split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
+  trans = xaccSplitGetParent (split);
+  if (!trans) {
+   //PWARN ("No transaction in transaction_date entry");
+    return NULL;
+  }
+
+  xaccTransGetDateEnteredTS (trans, &ts);
+  //PWARN ("returning valid transaction_date entry");
+
+  return gnc_print_date (ts);
+}
+
+
+static char *
+gnc_split_register_get_trans_date_help (VirtualLocation virt_loc,
+                                   gpointer user_data)
+{
+  SplitRegister *reg = user_data;
+  const char *help;
+
+  help = gnc_table_get_entry (reg->table, virt_loc);
+  if (!help || *help == '\0')
+    help = _("Enter the transaction date");
+
+  return g_strdup (help);
+}
+
+
+static const char *
 gnc_split_register_get_date_entry (VirtualLocation virt_loc,
                                    gboolean translate,
                                    gboolean *conditionally_changed,
@@ -2062,6 +2110,10 @@
                                      DATE_CELL);
 
   gnc_table_model_set_entry_handler (model,
+                                     gnc_split_register_get_trans_date_entry,
+                                     DTRANS_CELL);
+
+  gnc_table_model_set_entry_handler (model,
                                      gnc_split_register_get_due_date_entry,
                                      DDUE_CELL);
 
@@ -2155,6 +2207,10 @@
                                      DATE_CELL);
 
   gnc_table_model_set_label_handler (model,
+                                     gnc_split_register_get_trans_date_label,
+                                     DTRANS_CELL);
+
+  gnc_table_model_set_label_handler (model,
                                      gnc_split_register_get_due_date_label,
                                      DDUE_CELL);
 
@@ -2251,6 +2307,10 @@
                                     DATE_CELL);
 
   gnc_table_model_set_help_handler (model,
+                                    gnc_split_register_get_trans_date_help,
+                                    DTRANS_CELL);
+
+  gnc_table_model_set_help_handler (model,
                                     gnc_split_register_get_date_help,
                                     DDUE_CELL);
 
@@ -2306,6 +2366,10 @@
   gnc_table_model_set_io_flags_handler(
       model, gnc_split_register_get_standard_io_flags, DATE_CELL);
 
+  gnc_table_model_set_io_flags_handler(
+      model, gnc_split_register_get_standard_io_flags, DTRANS_CELL);
+
+
   /* FIXME: We really only need a due date for 'invoices', not for
    * 'payments' or 'receipts'.  This implies we really only need the
    * due-date for transactions that credit the ACCT_TYPE_RECEIVABLE or
@@ -2428,12 +2492,18 @@
       model, gnc_split_register_get_inactive_date_entry, DATE_CELL );
 
   gnc_table_model_set_entry_handler(
+      model, gnc_split_register_get_inactive_date_entry, DTRANS_CELL );
+
+  gnc_table_model_set_entry_handler(
       model, gnc_split_register_get_inactive_date_entry, DDUE_CELL );
 
   gnc_table_model_set_io_flags_handler(
       model, gnc_split_register_get_inactive_io_flags, DATE_CELL );
 
   gnc_table_model_set_io_flags_handler(
+      model, gnc_split_register_get_inactive_io_flags, DTRANS_CELL );
+
+  gnc_table_model_set_io_flags_handler(
       model, gnc_split_register_get_inactive_io_flags, DDUE_CELL );
 
   gnc_table_model_set_entry_handler(
Index: O:/SOFT/gnucash/repos/src/register/ledger-core/split-register.h
===================================================================
--- O:/SOFT/gnucash/repos/src/register/ledger-core/split-register.h	(revision 18388)
+++ O:/SOFT/gnucash/repos/src/register/ledger-core/split-register.h	(working copy)
@@ -190,6 +190,7 @@
 #define CRED_CELL  "credit"
 #define DATE_CELL  "date"
 #define DDUE_CELL  "date-due"
+#define DTRANS_CELL  "transaction-date"
 #define DEBT_CELL  "debit"
 #define DESC_CELL  "description"
 #define FCRED_CELL "credit-formula"
Index: O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-layout.c
===================================================================
--- O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-layout.c	(revision 18388)
+++ O:/SOFT/gnucash/repos/src/register/ledger-core/split-register-layout.c	(working copy)
@@ -120,6 +120,7 @@
 
         copy_cursor_row (layout, curs, curs_last, 0);
 
+        gnc_table_layout_set_cell (layout, curs, DTRANS_CELL,  1, 0);
         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);
@@ -141,6 +142,7 @@
 
         copy_cursor_row (layout, curs, curs_last, 0);
 
+        gnc_table_layout_set_cell (layout, curs, DTRANS_CELL,  1, 0);
         gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
         gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
 
@@ -532,6 +534,14 @@
                          FALSE);
 
   gnc_register_add_cell (layout,
+                         DTRANS_CELL,
+                         DATE_CELL_TYPE_NAME,
+                         N_("sample:12/12/2000") + 7,
+                         CELL_ALIGN_RIGHT,
+                         FALSE,
+                         FALSE);
+
+  gnc_register_add_cell (layout,
                          NUM_CELL,
                          NUM_CELL_TYPE_NAME,
                          /* Translators: The 'sample:' items are
