Journal Entry: cleanup in reconcillation status update during edition.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Fri, 26 Jul 2019 08:36:23 +0000 (10:36 +0200)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Mon, 19 Aug 2019 10:41:58 +0000 (12:41 +0200)
gl/gl_journal.php
gl/includes/db/gl_db_bank_trans.inc
gl/includes/db/gl_journal.inc
gl/includes/ui/gl_journal_ui.inc

index 3b8a4b9da3dc6add1b9c7c8b81ef45fc6e0309e5..465fa0a5511c02390bba114d8a60ebd719e54fd1 100644 (file)
@@ -116,6 +116,7 @@ function create_cart($type=0, $trans_no=0)
                $cart->currency = $header['currency'];
                $cart->rate = $header['rate'];
                $cart->source_ref = $header['source_ref'];
+               $cart->reconcile_date = $header['reconcile_date'] ? sql2date($header['reconcile_date']) : NULL;
 
                $result = get_gl_trans($type, $trans_no);
 
@@ -164,6 +165,7 @@ function create_cart($type=0, $trans_no=0)
                $cart->reference = $Refs->get_next(ST_JOURNAL, null, $cart->tran_date);
        }
 
+       $_POST['reconciled_date'] = $cart->reconcile_date;
        $_POST['memo_'] = $cart->memo_;
        $_POST['ref'] = $cart->reference;
        $_POST['date_'] = $cart->tran_date;
@@ -328,20 +330,16 @@ if (isset($_POST['Process']))
                }
        } else
                $cart->tax_info = false;
-       $trans_no = write_journal_entries($cart);
 
-        // retain the reconciled status if desired by user
-        if (isset($_POST['reconciled'])
-            && $_POST['reconciled'] == 1) {
-            $sql = "UPDATE ".TB_PREF."bank_trans SET reconciled=".db_escape($_POST['reconciled_date'])
-                ." WHERE type=" . ST_JOURNAL . " AND trans_no=".db_escape($trans_no);
+       if (!get_post('reconciled'))    // clear reconcilation (if any)
+               $cart->reconcile_date = NULL;
 
-            db_query($sql, "Can't change reconciliation status");
-        }
+       $trans_no = write_journal_entries($cart);
 
        $cart->clear_items();
        new_doc_date($_POST['date_']);
        unset($_SESSION['journal_items']);
+
        if($new)
                meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
        else
index 1bea79a3ef3918629de5b2172caa6645579d2f67..747041b614a542fa4a67dcbe970d1530dd55cc0a 100644 (file)
@@ -223,3 +223,10 @@ function check_void_bank_trans($type, $type_no)
        return true;
 }
 
+function update_reconcile_date($type, $trans_no, $date=NULL)
+{
+       $sql = "UPDATE ".TB_PREF."bank_trans SET reconciled=".($date ? "'".date2sql($date)."'" : 'NULL')
+               ." WHERE type=" . db_escape($type). " AND trans_no=".db_escape($trans_no);
+
+       db_query($sql, "Can't change reconciliation status");
+}
index c44cb335b3328b8fd15179cecb5259439ed66d5a..b3378b0ce5f3cae9e7a51b860d0de3e5ad76a3a4 100644 (file)
@@ -56,8 +56,9 @@ function delete_journal($type, $trans_no)
 
 function get_journal($type, $trans_no)
 {
-       $sql = "SELECT * FROM ".TB_PREF."journal 
-          WHERE `type`=".db_escape($type)." AND " ."`trans_no`=".db_escape($trans_no);
+       $sql = "SELECT gl.*, bt.reconciled reconcile_date FROM ".TB_PREF."journal gl
+               LEFT JOIN ".TB_PREF."bank_trans bt ON gl.`type`=bt.`type` AND gl.trans_no=bt.trans_no
+          WHERE gl.`type`=".db_escape($type)." AND " ."gl.`trans_no`=".db_escape($trans_no);
 
        $myrow= db_query($sql, 'cannot retrieve journal entry');
        return db_fetch($myrow);
@@ -126,6 +127,9 @@ function write_journal_entries(&$cart)
        add_journal($trans_type, $trans_id, $total,     $date_ , $cart->currency, $ref,
                $cart->source_ref, $cart->rate, $cart->event_date, $cart->doc_date);
 
+       if ($cart->reconcile_date)
+               update_reconcile_date($trans_type, $cart->order_id, $cart->reconcile_date);
+
        $Refs->save($trans_type, $trans_id, $ref);
        if ($new) {
                add_comments($trans_type, $trans_id, $date_, $memo_);
index 69ed170ce15652ebf177d3639681ebbeca197339..ae8860da624e0ffc7e9661a9694306b42a7765a6 100644 (file)
@@ -80,15 +80,10 @@ function display_order_header(&$Order)
 
        check_row(_('Include in tax register:'), 'taxable_trans', null, true);
         // Query the user to retain the reconciled status
-        if (!$new) {
-            $result = get_bank_trans(ST_JOURNAL, $Order->order_id);
-            $row = db_fetch($result);
-            if ($row
-                && $row['reconciled']) {
-                check_row(_('Reconciled:'), 'reconciled', 1, true);
-                hidden('reconciled_date', $row['reconciled']);
-            }
-        }
+    if (!$new && $Order->reconcile_date) {
+       check_row(_('Reconciled:'), 'reconciled', 1, true);
+       hidden('reconcile_date', $Order->reconcile_date);
+    }
        end_outer_table(1);
 }