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)
+if ($SysPrefs->use_popup_windows)
$js .= get_js_open_window(800, 500);
-if ($use_date_picker)
+if (user_use_date_picker())
$js .= get_js_date_picker();
if (isset($_GET['NewPayment'])) {
//-----------------------------------------------------------------------------------------------
check_db_has_bank_accounts(_("There are no bank accounts defined in the system."));
+if (isset($_GET['ModifyDeposit']) || isset($_GET['ModifyPayment']))
+ check_is_editable($_SESSION['pay_items']->trans_type, $_SESSION['pay_items']->order_id);
+
//----------------------------------------------------------------------------------------
if (list_updated('PersonDetailID')) {
$br = get_branch(get_post('PersonDetailID'));
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;
$bank_trans = db_fetch(get_bank_trans($type, $trans_no));
$_POST['bank_account'] = $bank_trans["bank_act"];
$_POST['PayType'] = $bank_trans["person_type_id"];
-
+ $cart->reference = $bank_trans["ref"];
+
if ($bank_trans["person_type_id"] == PT_CUSTOMER)
{
$trans = get_customer_trans($trans_no, $type);
$cart->memo_ = get_comments_string($type, $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)) {
// so we have to restore it from original gl amounts
$ex_rate = $bank_trans['amount']/$row['amount'];
} else {
- $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;
-
+
} else {
- $cart->reference = $Refs->get_next($cart->trans_type);
+ $cart->reference = $Refs->get_next($cart->trans_type, null, $cart->tran_date);
$cart->tran_date = new_doc_date();
if (!is_date_in_fiscalyear($cart->tran_date))
$cart->tran_date = end_fiscalyear();
}
//-----------------------------------------------------------------------------------------------
-if (isset($_POST['Process']))
+function check_trans()
{
+ global $Refs;
$input_error = 0;
$input_error = 1;
}
- if (!$Refs->is_valid($_POST['ref']))
+ $limit = get_bank_account_limit($_POST['bank_account'], $_POST['date_']);
+
+ $amnt_chg = -$_SESSION['pay_items']->gl_items_total()-$_SESSION['pay_items']->original_amount;
+
+ if ($limit !== null && floatcmp($limit, -$amnt_chg) < 0)
{
- display_error( _("You must enter a reference."));
- set_focus('ref');
+ 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;
}
- elseif ($_POST['ref'] != $_SESSION['pay_items']->reference && !is_new_reference($_POST['ref'], $_SESSION['pay_items']->trans_type))
+ 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 (!check_reference($_POST['ref'], $_SESSION['pay_items']->trans_type, $_SESSION['pay_items']->order_id))
{
- display_error( _("The entered reference is already in use."));
set_focus('ref');
$input_error = 1;
}
}
elseif (!is_date_in_fiscalyear($_POST['date_']))
{
- 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('date_');
$input_error = 1;
+ }
+
+ if (get_post('PayType')==PT_CUSTOMER && (!get_post('person_id') || !get_post('PersonDetailID'))) {
+ display_error(_("You have to select customer and customer branch."));
+ set_focus('person_id');
+ $input_error = 1;
+ } elseif (get_post('PayType')==PT_SUPPLIER && (!get_post('person_id'))) {
+ display_error(_("You have to select supplier."));
+ 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;
}
display_bank_header($_SESSION['pay_items']);
-start_table(TABLESTYLE2, "width=90%", 10);
+start_table(TABLESTYLE2, "width='90%'", 10);
start_row();
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);
end_page();
-?>