Supplier Payment: by default bank account is selected to be the same as that used...
authorCambell <cambell.prince@gmail.com>
Sat, 6 Feb 2016 04:32:32 +0000 (11:32 +0700)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 30 Aug 2016 17:45:26 +0000 (19:45 +0200)
purchasing/includes/db/supp_trans_db.inc
purchasing/supplier_payment.php

index f49b6c071d64981d405b0d342a04924bc578959a..d5dc75193d5dfe5b23c56d10026fb4efc55ba52f 100644 (file)
@@ -110,6 +110,48 @@ function get_supp_trans($trans_no, $trans_type=-1, $supplier_id=null)
 }
 
 
+//----------------------------------------------------------------------------------------
+
+function get_supp_payment_before($supplier_id, $date)
+{
+       $sql = "SELECT "
+       . TB_PREF . "supp_trans.trans_no,"
+       . TB_PREF . "supp_trans.type,"
+       . TB_PREF . "supp_trans.supplier_id,"
+       . TB_PREF . "supp_trans.tran_date,"
+       . TB_PREF . "supp_trans.ov_amount,"
+       . TB_PREF . "bank_trans.ref AS bank_ref,"
+       . TB_PREF . "bank_trans.amount AS bank_amount,"
+       . TB_PREF . "bank_accounts.id AS bank_id,"
+       . TB_PREF . "bank_accounts.bank_name,"
+       . TB_PREF . "bank_accounts.bank_account_name,"
+       . TB_PREF . "bank_accounts.bank_curr_code "
+       . "FROM "
+       . TB_PREF . "supp_trans,"
+       . TB_PREF . "bank_trans,"
+       . TB_PREF . "bank_accounts "
+       . "WHERE "
+       . TB_PREF . "supp_trans.supplier_id=" . $supplier_id . " "
+       . "AND " . TB_PREF . "supp_trans.tran_date<'" . $date . "' "
+       . "AND " . TB_PREF . "supp_trans.type=" . ST_SUPPAYMENT . " "
+       . "AND " . TB_PREF . "supp_trans.trans_no=" . TB_PREF . "bank_trans.trans_no "
+       . "AND " . TB_PREF . "supp_trans.type=" . TB_PREF . "bank_trans.type "
+       . "AND " . TB_PREF . "bank_accounts.id=" . TB_PREF . "bank_trans.bank_act "
+       . "ORDER BY "
+       . TB_PREF . "supp_trans.tran_date DESC "
+       . "LIMIT 1 "
+       ;
+
+       $result = db_query($sql, "Cannot retreive a previous supplier payment");
+
+       if (db_num_rows($result) == 0)
+       {
+               return false;
+       }
+
+       return db_fetch($result);
+}
+
 //----------------------------------------------------------------------------------------
 
 function exists_supp_trans($type, $type_no)
index eae7a0e2eaa29a7ecf026348d3b60b41a1e3f8a4..c7bedf4dcd16502bd153c201a98e839283b28335 100644 (file)
@@ -72,8 +72,6 @@ if (!isset($_POST['bank_account'])) { // first page call
        if (isset($_GET['PInvoice'])) {
                //  get date and supplier
                $inv = get_supp_trans($_GET['PInvoice'], $_GET['trans_type']);
-               $dflt_act = get_default_bank_account($inv['curr_code']);
-               $_POST['bank_account'] = $dflt_act['id'];
                if ($inv) {
                        $_SESSION['alloc']->person_id = $_POST['supplier_id'] = $inv['supplier_id'];
                        $_SESSION['alloc']->read();
@@ -114,6 +112,17 @@ if (isset($_GET['AddedID'])) {
 
 //----------------------------------------------------------------------------------------
 
+function get_default_supplier_payment_bank_account($supplier_id, $date)
+{
+       $previous_payment = get_supp_payment_before($supplier_id, date2sql($date));
+       if ($previous_payment)
+       {
+               return $previous_payment['bank_id'];
+       }
+       return get_default_supplier_bank_account($supplier_id);
+}
+//----------------------------------------------------------------------------------------
+
 function check_inputs()
 {
        global $Refs;
@@ -275,9 +284,12 @@ start_form();
        set_global_supplier($_POST['supplier_id']);
 
        if (!list_updated('bank_account') && !get_post('__ex_rate_changed'))
-               $_POST['bank_account'] = get_default_supplier_bank_account($_POST['supplier_id']);
-       else
+       {
+               $_POST['bank_account'] = get_default_supplier_payment_bank_account($_POST['supplier_id'], $_POST['DatePaid']);
+       } else
+       {
                $_POST['amount'] = price_format(0);
+       }
 
     bank_accounts_list_row(_("From Bank Account:"), 'bank_account', null, true);