First Commit

This commit is contained in:
mark committed 2026-10-19 15:22:52 -07:00
1 parent 5eb9dd037d
commit 2e62c0e60b
11877 files changed
+2035312

No files matched your search

+296
View File
@@ -0,0 +1,296 @@
<?php
$ValidAccess = 2010;
require_once("include/globals.php");
//
// Ensure that the user is logged in
//
if (SessionActive() != 1 || !UserLoggedIn()) {
echo("Invalid Access");
exit();
}
$document_name = getLanguageText('TEXT-ACCOUNT-TRANSACTION-REPORT');
$school_name = $school_record['school_name'];
// Preload data
$schoolSchedules = array();
$results = db_query("SELECT * FROM hotlunch_schedules WHERE school_num = $school_num");
while ($row = db_fetch_assoc($results)) {
$schedule_num = $row['record_num'];
$schoolSchedules[$schedule_num] = $row;
}
// Build the query statement
if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff') {
$user_num = intval($_SESSION['UserInfo']['record_num']);
$reportMode = 'Normal';
$query = "SELECT u.userid,substr(transaction_datetime,1,10) as trx_date,transaction_type,note,transaction_amount," .
"payment_method,payment_reference,user_num,first_name,last_name,ua.record_num " .
"FROM user_account as ua, users AS u " .
"WHERE u.school_num = $base_school_num " .
"AND ua.school_num = $school_num " .
"AND ua.user_num = $user_num " .
"AND ua.user_num = u.record_num " .
"AND (deleted != 'Y' OR deleted IS NULL) " .
"ORDER BY userid,transaction_datetime,record_num";
$transactions = db_query($query);
$mode = 'account';
}
else {
// Start the query statement
$query = "SELECT u.userid,substr(transaction_datetime,1,10) as trx_date,transaction_type,note,transaction_amount," .
"payment_method,payment_reference,order_payments,user_num,ua.record_num,deleted,deleted_datetime,deleted_by_user_num,first_name,last_name,delete_reason " .
"FROM user_account as ua, users AS u " .
"WHERE u.school_num = $base_school_num " .
"AND ua.school_num = $school_num " .
"AND ua.user_num = u.record_num ";
$mode = 'lookup';
$reportMode = 'Normal';
// Manage start date parameter
if (array_key_exists('start_date',$_GET) && strlen($_GET['start_date']) > 0) {
$query .= "AND transaction_datetime >= '" . db_escape_string($_GET['start_date']) . " 00:00:00' ";
}
// Manage end date parameter
if (array_key_exists('end_date',$_GET) && strlen($_GET['end_date']) > 0) {
$query .= "AND transaction_datetime <= '" . db_escape_string($_GET['end_date']) . " 23:59:59' ";
}
// Manage user_num parameter
if (array_key_exists('selected_usernum',$_GET) && strlen($_GET['selected_usernum']) > 0) {
$query .= "AND ua.user_num = " . intval($_GET['selected_usernum']) . " ";
$mode = 'account';
}
// Manage selected transaction type parameter
if (array_key_exists('selected_transaction_type',$_GET) && strlen($_GET['selected_transaction_type']) > 0) {
$trxType = db_escape_string($_GET['selected_transaction_type']);
$query .= "AND ua.transaction_type = '$trxType' ";
if ($trxType == 'Payment') $reportMode = 'Detail';
}
// Manage selected payment methods
if (array_key_exists('selected_payment_method',$_GET) && strlen($_GET['selected_payment_method']) > 0) {
if (array_key_exists('selected_transaction_type',$_GET) && $_GET['selected_transaction_type'] != 'Payment') $selected_payment_method == NULL;
else {
$query .= "AND ua.payment_method = '$_GET[selected_payment_method]' ";
}
}
// View only selected schedule
if (array_key_exists('selected_schedule_num',$_GET) && strlen($_GET['selected_schedule_num']) > 0) {
$query .= "AND ua.schedule_num = '$_GET[selected_schedule_num]' ";
}
// Process the optional type parameter
if (array_key_exists('type',$_GET) && strlen($_GET['type']) > 0 && $_GET['type'] == 'deleted') {
$query .= "AND deleted = 'Y' ";
}
else {
$query .= "AND (deleted != 'Y' OR deleted IS NULL) ";
}
// Set trx view
if (array_key_exists('view_trx',$_REQUEST) && strlen($_REQUEST['view_trx'])) {
$view_trx = $_REQUEST['view_trx'];
if ($view_trx == 'Open') $query .= "AND transaction_status = 'Open' ";
if ($view_trx == 'Closed') $query .= "AND transaction_status = 'Closed' ";
}
// Set query sort order
$order_by = "ORDER BY transaction_datetime,record_num";
if (array_key_exists('sort',$_GET) && strlen($_GET['sort'])) {
if (array_key_exists('sort', $_GET) && $_GET['sort'] == 'Name') $order_by = "ORDER BY last_name,first_name,transaction_datetime,record_num";
if (array_key_exists('sort', $_GET) && $_GET['sort'] == 'Payment Date') $order_by = "ORDER BY payment_time,record_num";
}
// Complete the query
$query .= $order_by;
$transactions = db_query($query);
}
// Headings
$column_headers = array(getLanguageText('TEXT-USER-ID'),
getLanguageText('TEXT-NAME'),
getLanguageText('TEXT-DATE'),
getLanguageText('TEXT-TYPE'),
getLanguageText('TEXT-NOTE'),
getLanguageText('TEXT-TRX-ID'),
getLanguageText('TEXT-CHARGES'),
getLanguageText('TEXT-CREDITS'),
getLanguageText('TEXT-METHOD'),
getLanguageText('TEXT-BALANCE'));
$data = array();
$balance = 0;
$total_charges = 0;
$total_credits = 0;
while ($row = db_fetch_array($transactions)) {
extract($row);
$entry = array();
$entry[] = $row['userid'];
$entry[] = $row['first_name'].' '.$row['last_name'];
$entry[] = $row['trx_date'];
$entry[] = translateText($row['transaction_type']);
$entry[] = translateText($row['note']);
$entry[] = $row['payment_reference'];
// Determine if this is a charge or credit and set the values
$charge = '';
$credit = '';
// Lookup TRX Type code
$trx_type = $transaction_type;
$r = db_query("SELECT * FROM user_account_trx_codes WHERE school_num = $school_num AND transaction_type_code = '$transaction_type'");
if (db_num_rows($r)) {
$row = db_fetch_assoc($r);
$trx_type = $row['trx_category'];
}
switch ($trx_type) {
case 'Order':
case 'Donation':
case 'NSF':
case 'Refund':
case 'Late Charge':
case 'Tax Charge':
case 'Paper Order Charge':
case 'Remittance Form Fee':
case 'Additional Order Fee':
case 'Other Charge':
case 'Charge Adjustment':
case 'PayPal Transaction Fee':
case 'Credit Card Transaction Fee':
case 'Reversed Payment':
case 'Charge':
case 'Generated Charge':
$charge = '$' . $transaction_amount;
$balance += $transaction_amount;
$total_charges += $transaction_amount;
break;
case 'TRX Note':
break;
case 'Payment':
case 'Credit':
case 'Credit Adjustment':
case 'Multiple Order Discount':
default:
$credit = "- $currencySymbol" . number_format(abs($transaction_amount),2);
$balance += $transaction_amount;
$total_credits += $transaction_amount;
break;
}
// Format the current balance
$balance = round($balance * 100) / 100;
if ($balance < 0.00) $balance_amt = "- $currencySymbol" . number_format(abs($balance),2);
else $balance_amt = $currencySymbol . number_format($balance,2);
$entry[] = $charge;
$entry[] = $credit;
$payment_method = '';
if (array_key_exists('payment_method', $row)) $payment_method = translateText($row['payment_method']);
$entry[] = $payment_method;
$entry[] = $balance_amt;
$data[] = $entry;
if ($reportMode == 'Detail') {
$entry[0] = '';
$entry[1] = '';
$entry[2] = '';
$payments = explode('|',$order_payments);
for ($i = 0; $i < count($payments); $i++) {
$p = str_replace('{','',str_replace('}','',$payments[$i]));
list($onum,$oamt) = explode(':',$p);
if ($onum) {
$entry[3] = getLanguageText('TEXT-ORDER').": #".$onum;
$results = db_query("SELECT * FROM hotlunch_order_header WHERE school_num = $school_num AND record_num = $onum");
$row = db_fetch_assoc($results);
$oactual = $row['order_total'];
$total_charges += $oactual;
$schedule_name = "";
$schedule_num = $row['schedule_num'];
if (isset($schedule_num) && $schedule_num > 0) {
if (array_key_exists($schedule_num,$schoolSchedules)) {
$schedule = $schoolSchedules[$schedule_num];
$sname = $schedule['schedule_name'];
$schedule_name = str_replace("'","&#39;",$sname);
}
}
$entry[4] = $schedule_name;
$entry[5] = '';
$entry[6] = "$currencySymbol$oactual";
$entry[7] = '';
$entry[8] = '';
$entry[9] = '';
}
$data[] = $entry;
}
}
// Display deleted information if required
if (isset($row['deleted']) && $row['deleted'] == 'Y') {
$deleted_datetime = $row['deleted_datetime'];
$deleted_by_user_num = $row['deleted_by_user_num'];
$delete_reason = $row['delete_reason'];
$delete_userid = "superuser";
if ($deleted_by_user_num != 1) $delete_userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $deleted_by_user_num");
$delete_info = "Deleted $deleted_datetime by $delete_userid - $delete_reason";
$data[] = array('','','',$delete_info);
}
}
if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff' || $mode == "account") {
$data[] = array('','','','',getLanguageText('TEXT-ACCOUNT-BALANCE')." :: ",'','','',$balance_amt);
}
else {
// Format report totals
$total_charges = round($total_charges * 100) / 100;
if ($total_charges < 0.00) $total_charges = "- $currencySymbol" . number_format(abs($total_charges),2);
else $total_charges = $currencySymbol . number_format($total_charges,2);
$total_credits = round($total_credits * 100) / 100;
if ($total_credits < 0.00) $total_credits = "- $currencySymbol" . number_format(abs($total_credits),2);
else $total_credits = $currencySymbol . number_format($total_credits,2);
// Display totals for the report
$data[] = array('','','','','',getLanguageText('TEXT-TRX-TOTALS-FOR-PERIOD')." :: ",$total_charges,$total_credits);
}
// Output the XLS data
$fname = genFileName("account-transactions.csv");
xlsData($data,$column_headers,$fname);
return;
?>