include_once($path_to_root . "/gl/includes/ui/gl_bank_ui.inc");
include_once($path_to_root . "/gl/includes/gl_db.inc");
include_once($path_to_root . "/gl/includes/gl_ui.inc");
+include_once($path_to_root . "/admin/db/attachments_db.inc");
$js = '';
if ($use_popup_windows)
global $Ajax;
$Ajax->activate('items_table');
+ $Ajax->activate('footer');
set_focus('_code_id_edit');
}
$trans_no = $_GET['AddedID'];
$trans_type = ST_BANKPAYMENT;
- display_notification_centered(_("Payment $trans_no has been entered"));
+ display_notification_centered(sprintf(_("Payment %d has been entered"), $trans_no));
display_note(get_gl_view_str($trans_type, $trans_no, _("&View the GL Postings for this Payment")));
hyperlink_params($_SERVER['PHP_SELF'], _("Enter A &Deposit"), "NewDeposit=yes");
+ hyperlink_params("$path_to_root/admin/attachments.php", _("Add an Attachment"), "filterType=$trans_type&trans_no=$trans_no");
+
display_footer_exit();
}
$trans_no = $_GET['UpdatedID'];
$trans_type = ST_BANKPAYMENT;
- display_notification_centered(_("Payment $trans_no has been modified"));
+ display_notification_centered(sprintf(_("Payment %d has been modified"), $trans_no));
display_note(get_gl_view_str($trans_type, $trans_no, _("&View the GL Postings for this Payment")));
$trans_no = $_GET['AddedDep'];
$trans_type = ST_BANKDEPOSIT;
- display_notification_centered(_("Deposit $trans_no has been entered"));
+ display_notification_centered(sprintf(_("Deposit %d has been entered"), $trans_no));
display_note(get_gl_view_str($trans_type, $trans_no, _("View the GL Postings for this Deposit")));
$trans_no = $_GET['UpdatedDep'];
$trans_type = ST_BANKDEPOSIT;
- display_notification_centered(_("Deposit $trans_no has been modified"));
+ display_notification_centered(sprintf(_("Deposit %d has been modified"), $trans_no));
display_note(get_gl_view_str($trans_type, $trans_no, _("&View the GL Postings for this Deposit")));
display_footer_exit();
}
-if (isset($_POST['_date__changed'])) {
- $Ajax->activate('_ex_rate');
-}
//--------------------------------------------------------------------------------------------------
function create_cart($type, $trans_no)
{
unset ($_SESSION['pay_items']);
}
-
+
$cart = new items_cart($type);
$cart->order_id = $trans_no;
$cart->tran_date = sql2date($bank_trans['trans_date']);
$cart->reference = $Refs->get($type, $trans_no);
- $gl_amount = 0;
+ $cart->original_amount = $bank_trans['amount'];
$result = get_gl_trans($type, $trans_no);
if ($result) {
while ($row = db_fetch($result)) {
$date = $row['tran_date'];
$cart->add_gl_item( $row['account'], $row['dimension_id'],
$row['dimension2_id'], $row['amount'], $row['memo_']);
- $gl_amount += $row['amount'];
}
}
}
+
// apply exchange rate
foreach($cart->gl_items as $line_no => $line)
$cart->gl_items[$line_no]->amount *= $ex_rate;
}
//-----------------------------------------------------------------------------------------------
-if (isset($_POST['Process']))
+function check_trans()
{
+ global $Refs;
$input_error = 0;
$limit = get_bank_account_limit($_POST['bank_account'], $_POST['date_']);
- if ($limit != null && ($limit < $_SESSION['pay_items']->gl_items_total()))
+ $amnt_chg = -$_SESSION['pay_items']->gl_items_total()-$_SESSION['pay_items']->original_amount;
+
+ if ($limit !== null && floatcmp($limit, -$amnt_chg) < 0)
{
- display_error(sprintf(_("The total bank amount exceeds allowed limit (%s)."), price_format($limit)));
+ display_error(sprintf(_("The total bank amount exceeds allowed limit (%s)."), price_format($limit-$_SESSION['pay_items']->original_amount)));
set_focus('code_id');
$input_error = 1;
}
+ if ($trans = check_bank_account_history($amnt_chg, $_POST['bank_account'], $_POST['date_'])) {
+ display_error(sprintf(_("The bank transaction would result in exceed of authorized overdraft limit for transaction: %s #%s on %s."),
+ $systypes_array[$trans['type']], $trans['trans_no'], sql2date($trans['trans_date'])));
+ set_focus('amount');
+ $input_error = 1;
+ }
if (!$Refs->is_valid($_POST['ref']))
{
display_error( _("You must enter a reference."));
set_focus('person_id');
$input_error = 1;
}
+ if (!db_has_currency_rates(get_bank_account_currency($_POST['bank_account']), $_POST['date_'], true))
+ $input_error = 1;
- if ($input_error == 1)
- unset($_POST['Process']);
+ if (isset($_POST['settled_amount']) && in_array(get_post('PayType'), array(PT_SUPPLIER, PT_CUSTOMER)) && (input_num('settled_amount') <= 0)) {
+ display_error(_("Settled amount have to be positive number."));
+ set_focus('person_id');
+ $input_error = 1;
+ }
+ return $input_error;
}
-if (isset($_POST['Process']))
+if (isset($_POST['Process']) && !check_trans())
{
begin_transaction();
-
+
$_SESSION['pay_items'] = &$_SESSION['pay_items'];
$new = $_SESSION['pay_items']->order_id == 0;
+ add_new_exchange_rate(get_bank_account_currency(get_post('bank_account')), get_post('date_'), input_num('_ex_rate'));
+
$trans = write_bank_transaction(
$_SESSION['pay_items']->trans_type, $_SESSION['pay_items']->order_id, $_POST['bank_account'],
$_SESSION['pay_items'], $_POST['date_'],
$_POST['PayType'], $_POST['person_id'], get_post('PersonDetailID'),
- $_POST['ref'], $_POST['memo_'], false);
+ $_POST['ref'], $_POST['memo_'], true, input_num('settled_amount', null));
$trans_type = $trans[0];
$trans_no = $trans[1];
$_SESSION['pay_items']->clear_items();
unset($_SESSION['pay_items']);
-
+
commit_transaction();
-
+
if ($new)
meta_forward($_SERVER['PHP_SELF'], $trans_type==ST_BANKPAYMENT ?
"AddedID=$trans_no" : "AddedDep=$trans_no");
set_focus('amount');
return false;
}
+ if (isset($_POST['_ex_rate']) && input_num('_ex_rate') <= 0)
+ {
+ display_error( _("The exchange rate cannot be zero or a negative number."));
+ set_focus('_ex_rate');
+ return false;
+ }
return true;
}
echo "<td>";
display_gl_items($_SESSION['pay_items']->trans_type==ST_BANKPAYMENT ?
_("Payment Items"):_("Deposit Items"), $_SESSION['pay_items']);
-gl_options_controls();
+gl_options_controls($_SESSION['pay_items']);
echo "</td>";
end_row();
end_table(1);