Bank Transfer: additional field for target currency amount instead of exchange rate...
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Mon, 20 May 2013 12:36:13 +0000 (14:36 +0200)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Mon, 10 Jun 2013 17:00:10 +0000 (19:00 +0200)
gl/bank_transfer.php
gl/includes/db/gl_db_banking.inc

index 2ef0e4f6946649ad2ad57bf18dbea6cd27abb3e9..312d3130c4c31eefbaee7d5da5c03a0318f67b47 100644 (file)
@@ -87,7 +87,7 @@ function gl_payment_controls()
                amount_row(_("Amount:"), 'amount', null, null, $from_currency);
                amount_row(_("Bank Charge:"), 'charge', null, null, $from_currency);
 
-               exchange_rate_display($from_currency, $to_currency, $_POST['DatePaid']);
+               amount_row("Incomming Amount:", 'target_amount', null, '', $to_currency, 2);
        } 
        else 
        {
@@ -184,7 +184,19 @@ function check_valid_entries()
                set_focus('ToBankAccount');
                return false;
        }
-       
+
+       if (!check_num('target_amount', 0)) 
+       {
+               display_error(_("The entered amount is invalid or less than zero."));
+               set_focus('target_amount');
+               return false;
+       }
+       if (input_num('target_amount') == 0) {
+               display_error(_("The incomming bank amount cannot be 0."));
+               set_focus('target_amount');
+               return false;
+       }
+
        if (!db_has_currency_rates(get_bank_account_currency($_POST['FromBankAccount']), $_POST['DatePaid']))
                return false;
 
@@ -200,7 +212,7 @@ function handle_add_deposit()
 {
        new_doc_date($_POST['DatePaid']);
        $trans_no = add_bank_transfer($_POST['FromBankAccount'], $_POST['ToBankAccount'],
-               $_POST['DatePaid'], input_num('amount'), $_POST['ref'], $_POST['memo_'], input_num('charge'));
+               $_POST['DatePaid'], input_num('amount'), $_POST['ref'], $_POST['memo_'], input_num('charge'), input_num('target_amount'));
 
        meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
 }
index c49ad674b2b08e33b5e5ca1d2c558df479270d6d..5774de8577aa229c0f77b859c088e6784459023d 100644 (file)
@@ -190,14 +190,14 @@ function add_exchange_variation_all($date=null, $ref="", $memo)
 //     
 
 function add_bank_transfer($from_account, $to_account, $date_,
-       $amount, $ref, $memo_, $charge=0)
+       $amount, $ref, $memo_, $charge=0, $target_amount=0)
 {
        global $Refs, $SysPrefs;
        
        begin_transaction();
        $args = func_get_args(); if (count($args) < 7) $args[] = 0;
        $args = (object)array_combine(array('from_account', 'to_account', 'date_', 'amount',
-               'ref', 'memo_', 'charge'), $args);
+               'ref', 'memo_', 'charge', 'target_amount'), $args);
        $args->trans_no = 0;
        hook_db_prewrite($args, ST_BANKTRANSFER);
 
@@ -238,16 +238,21 @@ function add_bank_transfer($from_account, $to_account, $date_,
                $total += add_gl_trans($trans_type, $trans_no, $date_,
                        $charge_act, 0, 0, $person_id, $charge, $currency);
        }
+
+       // provide backward compatibility for extension modules (target amount can be not passed)
+       $to_currency = $target_amount ? $toact['bank_curr_code'] : $currency;
+       $to_amount = $target_amount ? $target_amount : $amount;
+
        // do the destination account postings
        $total += add_gl_trans($trans_type, $trans_no, $date_, $to_gl_account, 0, 0, $person_id,
-               $amount, $currency);
+               $to_amount, $to_currency);
                
        /*Post a balance post if $total != 0 */
        add_gl_balance($trans_type, $trans_no, $date_, -$total);        
        
        add_bank_trans($trans_type, $trans_no, $to_account, $ref,
-               $date_, $amount, PT_MISC, $person_id,
-               $currency, "Cannot insert a destination bank transaction");
+               $date_, $to_amount, PT_MISC, $person_id,
+               $to_currency, "Cannot insert a destination bank transaction");
 
        if ($SysPrefs->auto_currency_revaluation())
        {