Merged changes from stable branch up to 2.3.12
[fa-stable.git] / purchasing / supplier_payment.php
index 477c30b41a7a83c526ec0c36d83589f54860d986..e40fb8f2b772149ce3704941259dde19ed756188 100644 (file)
@@ -57,9 +57,6 @@ if (isset($_POST['_DatePaid_changed'])) {
   $Ajax->activate('_ex_rate');
 }
 
-if (list_updated('supplier_id') || list_updated('bank_account')) {
-  $Ajax->activate('alloc_tbl');
-}
 //----------------------------------------------------------------------------------------
 
 if (!isset($_POST['bank_account'])) { // first page call
@@ -76,7 +73,7 @@ if (!isset($_POST['bank_account'])) { // first page call
                        $_POST['memo_'] = $inv['supp_reference'];
                        foreach($_SESSION['alloc']->allocs as $line => $trans) {
                                if ($trans->type == ST_SUPPINVOICE && $trans->type_no == $_GET['PInvoice']) {
-                                       $_POST['amount'] = 
+                                       $_POST['amount'] =
                                                $_SESSION['alloc']->amount = price_format($_SESSION['alloc']->allocs[$line]->amount);
                                        $_SESSION['alloc']->allocs[$line]->current_allocated =
                                                $_SESSION['alloc']->allocs[$line]->amount;
@@ -86,7 +83,6 @@ if (!isset($_POST['bank_account'])) { // first page call
                        unset($inv);
                } else
                        display_error(_("Invalid purchase invoice number."));
-
        }
 }
 if (isset($_GET['AddedID'])) {
@@ -138,7 +134,7 @@ function check_inputs()
        }
 
        if (isset($_POST['charge']) && input_num('charge') > 0) {
-               $charge_acct = get_company_pref('bank_charge_act');
+               $charge_acct = get_bank_charge_account($_POST['bank_account']);
                if (get_gl_account($charge_acct) == false) {
                        display_error(_("The Bank Charge Account has not been set in System and General GL Setup."));
                        set_focus('charge');
@@ -181,7 +177,7 @@ function check_inputs()
        } 
        elseif (!is_date_in_fiscalyear($_POST['DatePaid'])) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('DatePaid');
                return false;
        }
@@ -209,6 +205,8 @@ function check_inputs()
                return false;
        }
 
+       if (!db_has_currency_rates(get_supplier_currency($_POST['supplier_id']), $_POST['DatePaid'], true))
+               return false;
        $_SESSION['alloc']->amount = -input_num('amount');
 
        if (isset($_POST["TotalNumberOfAllocs"]))
@@ -271,13 +269,19 @@ start_form();
 
     supplier_list_row(_("Payment To:"), 'supplier_id', null, false, true);
 
+       if (list_updated('supplier_id') || list_updated('bank_account')) {
+         $_SESSION['alloc']->read();
+         $_POST['memo_'] = $_POST['amount'] = '';
+         $Ajax->activate('alloc_tbl');
+       }
+
        set_global_supplier($_POST['supplier_id']);
-       
+
        if (!list_updated('bank_account'))
                $_POST['bank_account'] = get_default_supplier_bank_account($_POST['supplier_id']);              
-       
+
     bank_accounts_list_row(_("From Bank Account:"), 'bank_account', null, true);
-       
+
        bank_balance_row($_POST['bank_account']);
 
        table_section(2);
@@ -302,7 +306,6 @@ start_form();
 
        if ($bank_currency == $supplier_currency) {
                div_start('alloc_tbl');
-               $_SESSION['alloc']->read();
                show_allocatable(false);
                div_end();
        }