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'])) {
$_SESSION['page_title'] = _($help_context = "Bank Account Payment Entry");
- handle_new_order(ST_BANKPAYMENT);
-
+ create_cart(ST_BANKPAYMENT, 0);
} else if(isset($_GET['NewDeposit'])) {
$_SESSION['page_title'] = _($help_context = "Bank Account Deposit Entry");
- handle_new_order(ST_BANKDEPOSIT);
+ create_cart(ST_BANKDEPOSIT, 0);
} else if(isset($_GET['ModifyPayment'])) {
$_SESSION['page_title'] = _($help_context = "Modify Bank Account Entry")." #".$_GET['trans_no'];
create_cart(ST_BANKPAYMENT, $_GET['trans_no']);
//-----------------------------------------------------------------------------------------------
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 handle_new_order($type)
-{
- if (isset($_SESSION['pay_items']))
- {
- unset ($_SESSION['pay_items']);
- }
-
- //session_register("pay_items");
-
- $_SESSION['pay_items'] = new items_cart($type);
-
- $_POST['date_'] = new_doc_date();
- if (!is_date_in_fiscalyear($_POST['date_']))
- $_POST['date_'] = end_fiscalyear();
- $_SESSION['pay_items']->tran_date = $_POST['date_'];
-}
-
function create_cart($type, $trans_no)
{
global $Refs;
unset ($_SESSION['pay_items']);
}
- $_SESSION['pay_items'] = new items_cart($type);
- $_SESSION['pay_items']->order_id = $trans_no;
+ $cart = new items_cart($type);
+ $cart->order_id = $trans_no;
if ($trans_no) {
- $result = get_gl_trans($type, $trans_no);
-
- if ($result) {
- while ($row = db_fetch($result)) {
- if ($row['amount'] == 0) continue;
- if (is_bank_account($row['account'])) continue;
- $date = $row['tran_date'];
- $_SESSION['pay_items']->add_gl_item($row['account'], $row['dimension_id'],
- $row['dimension2_id'], $row['amount'], $row['memo_']);
- }
- }
- $_SESSION['pay_items']->memo_ = get_comments_string($type, $trans_no);
- $_SESSION['pay_items']->tran_date = sql2date($date);
- $_SESSION['pay_items']->reference = $Refs->get($type, $trans_no);
- ////////////////////////////////////////////
- // Check Ref Original ?????
- $_POST['ref_original'] = $_SESSION['pay_items']->reference; // Store for comparison when updating
$bank_trans = db_fetch(get_bank_trans($type, $trans_no));
$_POST['bank_account'] = $bank_trans["bank_act"];
$_POST['PayType'] = $bank_trans["person_type_id"];
-
- if ($bank_trans["person_type_id"] == PT_CUSTOMER) //2
+ $cart->reference = $bank_trans["ref"];
+
+ if ($bank_trans["person_type_id"] == PT_CUSTOMER)
{
$trans = get_customer_trans($trans_no, $type);
$_POST['person_id'] = $trans["debtor_no"];
$_POST['PersonDetailID'] = $trans["branch_code"];
}
- elseif ($bank_trans["person_type_id"] == PT_SUPPLIER) //3
+ elseif ($bank_trans["person_type_id"] == PT_SUPPLIER)
{
$trans = get_supp_trans($trans_no, $type);
$_POST['person_id'] = $trans["supplier_id"];
}
- elseif ($bank_trans["person_type_id"] == PT_MISC) //0
+ elseif ($bank_trans["person_type_id"] == PT_MISC)
$_POST['person_id'] = $bank_trans["person_id"];
- elseif ($bank_trans["person_type_id"] == PT_QUICKENTRY) //4
+ elseif ($bank_trans["person_type_id"] == PT_QUICKENTRY)
$_POST['person_id'] = $bank_trans["person_id"];
else
$_POST['person_id'] = $bank_trans["person_id"];
+ $cart->memo_ = get_comments_string($type, $trans_no);
+ $cart->tran_date = sql2date($bank_trans['trans_date']);
+
+ $cart->original_amount = $bank_trans['amount'];
+ $result = get_gl_trans($type, $trans_no);
+ if ($result) {
+ while ($row = db_fetch($result)) {
+ if (is_bank_account($row['account'])) {
+ // date exchange rate is currenly not stored in bank transaction,
+ // so we have to restore it from original gl amounts
+ $ex_rate = $bank_trans['amount']/$row['amount'];
+ } else {
+ $cart->add_gl_item( $row['account'], $row['dimension_id'],
+ $row['dimension2_id'], $row['amount'], $row['memo_']);
+ }
+ }
+ }
+
+ // apply exchange rate
+ foreach($cart->gl_items as $line_no => $line)
+ $cart->gl_items[$line_no]->amount *= $ex_rate;
+
} else {
- $_SESSION['pay_items']->reference = $Refs->get_next(0);
- $_SESSION['pay_items']->tran_date = new_doc_date();
- if (!is_date_in_fiscalyear($_SESSION['pay_items']->tran_date))
- $_SESSION['pay_items']->tran_date = end_fiscalyear();
- $_POST['ref_original'] = -1;
+ $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();
}
- $_POST['memo_'] = $_SESSION['pay_items']->memo_;
- $_POST['ref'] = $_SESSION['pay_items']->reference;
- $_POST['date_'] = $_SESSION['pay_items']->tran_date;
+ $_POST['memo_'] = $cart->memo_;
+ $_POST['ref'] = $cart->reference;
+ $_POST['date_'] = $cart->tran_date;
- //$_SESSION['pay_items'] = &$_SESSION['pay_items'];
+ $_SESSION['pay_items'] = &$cart;
}
//-----------------------------------------------------------------------------------------------
-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;
+ }
+ 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;
}
- elseif ($_POST['ref'] != $_SESSION['pay_items']->reference && !is_new_reference($_POST['ref'], $_SESSION['pay_items']->trans_type))
+ 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;
-
- if (!$new)
- {
- clear_bank_trans($_SESSION['pay_items']->trans_type, $_SESSION['pay_items']->order_id, true);
- $trans = reinsert_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);
- }
- else
- $trans = add_bank_transaction(
- $_SESSION['pay_items']->trans_type, $_POST['bank_account'],
+
+ 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");
+ meta_forward($_SERVER['PHP_SELF'], $trans_type==ST_BANKPAYMENT ?
+ "AddedID=$trans_no" : "AddedDep=$trans_no");
else
- meta_forward($_SERVER['PHP_SELF'], $trans_type==ST_BANKPAYMENT ?
- "UpdatedID=$trans_no" : "UpdatedDep=$trans_no");
+ meta_forward($_SERVER['PHP_SELF'], $trans_type==ST_BANKPAYMENT ?
+ "UpdatedID=$trans_no" : "UpdatedDep=$trans_no");
-} /*end of process credit note */
+}
//-----------------------------------------------------------------------------------------------
function check_item_data()
{
- //if (!check_num('amount', 0))
- //{
- // display_error( _("The amount entered is not a valid number or is less than zero."));
- // set_focus('amount');
- // return false;
- //}
-
- if ($_POST['code_id'] == $_POST['bank_account'])
+ if (!check_num('amount', 0))
{
- display_error( _("The source and destination accouts cannot be the same."));
- set_focus('code_id');
+ display_error( _("The amount entered is not a valid number or is less than zero."));
+ 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;
}
- //if (is_bank_account($_POST['code_id']))
- //{
- // if ($_SESSION['pay_items']->trans_type == ST_BANKPAYMENT)
- // display_error( _("You cannot make a payment to a bank account. Please use the transfer funds facility for this."));
- // else
- // display_error( _("You cannot make a deposit from a bank account. Please use the transfer funds facility for this."));
- // set_focus('code_id');
- // return false;
- //}
-
- return true;
+ 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();
-?>