First Commit
This commit is contained in:
1 parent
5eb9dd037d
commit
2e62c0e60b
11877 files changed
+2035312
No files matched your search
@@ -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("'","'",$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;
|
||||
|
||||
?>
|
||||
Reference in new issue
Block a user