184 lines
5.6 KiB
PHP
184 lines
5.6 KiB
PHP
<?php
|
|
$ValidAccess = 2010;
|
|
require_once("include/globals.php");
|
|
|
|
|
|
|
|
if (SessionActive() != 1 || ! UserLoggedIn()) {
|
|
logExit("Session is not active\n");
|
|
exit();
|
|
}
|
|
|
|
// CSRF token validation
|
|
include "include/ajax.csrfToken.php";
|
|
|
|
|
|
|
|
// Set default timezone
|
|
date_default_timezone_set("Canada/Pacific");
|
|
$now = date("Y-m-d H:i:s",time());
|
|
|
|
$return_data = array();
|
|
$sequence_flag = 'N';
|
|
|
|
$moduleName = "ajax.ApplyCredit.php";
|
|
// startLog($moduleName);
|
|
|
|
// Get parameters
|
|
extract($_REQUEST);
|
|
|
|
|
|
// Validate parameters
|
|
|
|
|
|
// Ensure numeric parameters are numeric
|
|
if (!is_numeric($payment_trx)) logExit("Payment TRX num is not numeric\n");
|
|
if (!is_numeric($trx_num)) logExit("Charge TRX num is not numeric\n");
|
|
if (!is_numeric($user_num)) logExit("User num is not numeric\n");
|
|
$payment_trx = intval($payment_trx);
|
|
$trx_num = intval($trx_num);
|
|
$user_num = intval($user_num);
|
|
|
|
$school_num = $school_record['record_num'];
|
|
|
|
|
|
// Error logging
|
|
writeLog("payment_trx: $payment_trx\n");
|
|
writeLog("trx_num: $trx_num\n");
|
|
writeLog("user_num: $user_num\n");
|
|
|
|
|
|
// Get unallocated payment entry
|
|
$query = "SELECT * FROM user_account_detail " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND user_num = $user_num " .
|
|
"AND posted_to_transaction = 0 " .
|
|
"AND posted_amount > 0 " .
|
|
"AND deleted != 'Y' " .
|
|
"AND transaction_num = $payment_trx " .
|
|
"ORDER BY record_num LIMIT 0,1";
|
|
writeLog("query: $query\n");
|
|
$results = db_query($query);
|
|
$row = db_fetch_assoc($results);
|
|
$unallocated_amount = $row['posted_amount'];
|
|
$unallocated_trx = $row['transaction_num'];
|
|
$unallocated_rnum = $row['record_num'];
|
|
writeLog("unallocated_amount: $unallocated_amount\n");
|
|
writeLog("unallocated_trx: $unallocated_trx\n");
|
|
writeLog("unallocated_rnum: $unallocated_rnum\n");
|
|
|
|
|
|
// Get payment transaction
|
|
$query = "SELECT * FROM user_account " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND user_num = $user_num " .
|
|
"AND record_num = $payment_trx";
|
|
writeLog("query: $query\n");
|
|
$results = db_query($query);
|
|
$row = db_fetch_assoc($results);
|
|
$transaction_type = $row['transaction_type'];
|
|
$payment_method = $row['payment_method'];
|
|
if ($transaction_type != 'Payment') $payment_method = $transaction_type;
|
|
|
|
|
|
// Get the transaction to post to
|
|
$query = "SELECT * FROM user_account " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND user_num = $user_num " .
|
|
"AND record_num = $trx_num";
|
|
writeLog("query: $query\n");
|
|
$results = db_query($query);
|
|
$row = db_fetch_assoc($results);
|
|
$transaction_amount = $row['transaction_amount'];
|
|
$amount_paid = $row['amount_paid'];
|
|
$transaction_type = $row['transaction_type'];
|
|
$order_num = $row['order_num'];
|
|
|
|
$owing = $transaction_amount - $amount_paid;
|
|
|
|
writeLog("transaction_amount: $transaction_amount\n");
|
|
writeLog("amount_paid: $amount_paid\n");
|
|
writeLog("owing: $owing\n");
|
|
|
|
$now = time();
|
|
|
|
if ($owing > $unallocated_amount) {
|
|
// Update existing detail transaction
|
|
$query = "UPDATE user_account_detail " .
|
|
"SET posted_to_transaction = $trx_num, " .
|
|
"entered_time = $now " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $unallocated_rnum";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
|
|
// Update user account transaction
|
|
$query = "UPDATE user_account " .
|
|
"SET amount_paid = amount_paid + $unallocated_amount " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $trx_num";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
|
|
// Update order header
|
|
if ($transaction_type == 'Order' && $order_num > 0) {
|
|
$today = date("Y-m-d",$now);
|
|
$query = "UPDATE hotlunch_order_header " .
|
|
"SET paid_date = '$today', " .
|
|
"payment_method = '$payment_method', " .
|
|
"amount_paid = amount_paid + $unallocated_amount " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $order_num";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
}
|
|
|
|
$return_data["account_balance"] = 0;
|
|
}
|
|
else {
|
|
// Update existing detail transaction
|
|
$query = "UPDATE user_account_detail " .
|
|
"SET posted_to_transaction = $trx_num, " .
|
|
"posted_amount = $owing, " .
|
|
"entered_time = $now " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $unallocated_rnum";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
|
|
// Save remaining balance
|
|
$balance = $unallocated_amount - $owing;
|
|
$query = "INSERT INTO user_account_detail (school_num,user_num,transaction_num,posted_to_transaction,posted_amount,posted_schedule,entered_time,deleted) " .
|
|
"VALUES ($school_num, $user_num, $trx_num, 0, $balance, 0, $now, 'N')";
|
|
|
|
// Close the transaction
|
|
$query = "UPDATE user_account " .
|
|
"SET amount_paid = amount_paid + $owing, " .
|
|
"transaction_status = 'Closed' " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $trx_num";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
|
|
// Update order header
|
|
if ($transaction_type == 'Order' && $order_num > 0) {
|
|
$today = date("Y-m-d",$now);
|
|
$query = "UPDATE hotlunch_order_header " .
|
|
"SET paid_date = '$today', " .
|
|
"payment_method = '$payment_method', " .
|
|
"amount_paid = order_total, " .
|
|
"status = 'Paid' " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND record_num = $order_num";
|
|
writeLog("query: $query\n");
|
|
db_query($query);
|
|
}
|
|
|
|
$return_data["account_balance"] = $balance;
|
|
}
|
|
|
|
writeLog("complete\n");
|
|
echo(json_encode($return_data));
|
|
|
|
?>
|