Files
HotLunches/ajax/ajax.ApplyCredit.php
2026-10-19 15:22:52 -07:00

186 lines
5.6 KiB
PHP

<?php
$ValidAccess = 2010;
$sessionName = 'hotlunch';
session_name($sessionName);
session_start();
require_once("include/globals.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);
if (SessionActive() != 1 || ! UserLoggedIn()) {
logExit("Session is not active\n");
exit;
}
include "include/ajax.csrfToken.php";
// 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));
?>