Files
HotLunches/user_account.detail.php
2026-10-19 15:22:52 -07:00

346 lines
12 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
//
// Process all actions to list and edit records
//
$action = "user-account-detail";
$CurrentTable = "user_account_detail";
$FormFile = "";
$TitleText = getLanguageText('TEXT-TRANSACTION-DETAIL-REPORT');
// Start the template and output buffering
startTemplate();
$templatePageTitle = $TitleText;
// Ensure that only valid user types have access to this module
if (!in_array($_SESSION['UserInfo']['type'],array('SuperUser','System Administrator','Application Administrator','Administration Team','Schedule Team','Financial','Financial Team'))) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
$school_num = $school_record['record_num'];
// Refresh the user account detail
// adjustUserAccountDetails(0);
$print_cmd = "";
// Handle selected date ranges
$start_date = date("Y-m-d 00:00:00",time());
$end_date = date("Y-m-d 23:59:59",time());
if (array_key_exists('start_date',$_REQUEST) && strlen($_REQUEST['start_date']) > 0) $start_date = date("Y-m-d 00:00:00",strtotime($_REQUEST['start_date']));
if (array_key_exists('end_date',$_REQUEST) && strlen($_REQUEST['end_date']) > 0) {
$end_date = $_REQUEST['end_date'];
if ($end_date < substr($start_date,0,10)) {
$end_date = substr($start_date,0,10);
$error_message = getLanguageText('ERRORMSG-INVALID-DATE-RANGE');
}
$end_date = date("Y-m-d 23:59:59",strtotime($end_date));
}
$sdate = substr($start_date,0,10);
$edate = substr($end_date,0,10);
if (!isset($twhere)) $twhere = '';
if (!isset($print_cmd)) $print_cmd = '';
$twhere .= "AND transaction_datetime BETWEEN '$start_date' AND '$end_date' ";
$print_cmd .= "&start_date=$sdate&end_date=$edate";
// View only selected schedule
$swhere = "";
$uwhere = "";
$selected_schedule_num = 0;
if (array_key_exists('selected_schedule_num',$_REQUEST) && strlen($_REQUEST['selected_schedule_num']) > 0) {
$selected_schedule_num = intval($_REQUEST['selected_schedule_num']);
$uwhere .= "AND ua.schedule_num = $selected_schedule_num ";
$print_cmd .= "&selected_schedule_num=$selected_schedule_num";
}
// Set query sort order
$order_by = "ORDER BY transaction_datetime,record_num";
$sort = "Date";
if (array_key_exists('sort',$_REQUEST) && strlen($_REQUEST['sort'])) {
$sort = $_REQUEST['sort'];
if ($sort == 'Name') $order_by = "ORDER BY last_name,first_name,transaction_datetime,record_num";
}
$print_cmd .= "&sort=$sort";
$message_width = 600;
include "form.messages.php";
?>
<form method='post' name='transactions'>
<table width='750' cellpadding='3' class='content-table'>
<tr>
<td align='center'>
<table>
<tr>
<td align='left'><?php displayLanguageText('TEXT-START-DATE'); ?>:<br>
<input type='text' name='start_date' id='start_date' value='<?php echo($sdate) ?>' size='15' class='date-field'></td>
</tr>
<tr>
<td align='left'><?php displayLanguageText('TEXT-END-DATE'); ?>:<br>
<input type='text' name='end_date' id='end_date' value='<?php echo($edate) ?>' size='15' class='date-field'></td>
</tr>
<tr>
<td align='left' valign='top'><?php displayLanguageText('TEXT-SCHEDULE'); ?>:<br>
<select name='selected_schedule_num'>
<option value=''><?php displayLanguageText('TEXT-VIEW-ALL'); ?></option>
<?php
$end_date = date("Y-m-d",time() - 60 * 60 * 24 * 240);
$schedules = db_query("SELECT schedule_name,record_num FROM hotlunch_schedules WHERE school_num = $school_num AND schedule_end_date >= '$end_date' AND status != 'Deleted' ORDER BY $scheduleSortOrder");
while ($row = db_fetch_array($schedules)) {
$sname = $row['schedule_name'];
$rnum = $row['record_num'];
$selected = "";
if ($selected_schedule_num == $rnum) $selected = " selected='selected'";
echo(" <option value='$rnum'$selected>$sname</option>\n");
}
?>
</select>
</td>
</tr>
<tr>
<td align='left' valign='top'><?php displayLanguageText('TEXT-REPORT-SORT'); ?>:<br>
<?php BuildFileRadio("user_account.report.sort.txt","sort",$sort) ?>
</td>
</tr>
<tr>
<td align='left' valign='top'><a href='#' class='btn btn--primary btn--xsmall' onClick='document.transactions.submit();'><span><?php displayLanguageText('TEXT-VIEW'); ?></span></a></td>
</tr>
</table>
</td>
</tr>
</table>
<input type='hidden' name='action' value='user-account-detail'>
</form>
<?php
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog("user_account.detail.php");
//
// List all requested records
//
$columnHeaders = array("User ID","TRX Date","TRX Type","Status","Amount","Method","Payment");
$columnAlign = array('left','center','center','center','right','center','right');
if (!isset($uwhere)) $uwhere = '';
$query = "SELECT u.userid,substring(transaction_datetime,1,10) as trx_date,transaction_type,transaction_amount,transaction_status,schedule_num,order_num," .
"payment_method,payment_reference,order_payments,ua.user_num,people_num,people_type,additional_note,ua.record_num,deleted,deleted_datetime,deleted_by_user_num,delete_reason,u.first_name,u.last_name " .
"FROM user_account as ua LEFT JOIN people as p ON ua.people_num = p.record_num, users AS u " .
"WHERE u.school_num = $base_school_num " .
"AND ua.school_num = $school_num " .
"AND ua.user_num = u.record_num " .
"AND ua.transaction_amount > 0 " .
$uwhere . $twhere . $swhere .
$order_by;
writeLog($query);
$transactions = db_query($query);
if (db_num_rows($transactions)) {
$q = urlencode($query);
?>
<br>
<table width='95%'>
<tr>
<td align='right'>
<table><tr>
<td align='center'><a href='?action=user-account-detail-print<?php echo($print_cmd) ?>&query=<?php echo($q) ?>' class='btn btn--primary btn--xsmall'><?php displayLanguageText('TEXT-PRINT'); ?></a></td>
</tr></table>
</td>
</tr>
</table>
<table width='95%' class='content-table'>
<tr class='data-header'>
<?php
for ($i = 0; $i < count($columnHeaders); $i++) {
$title = $columnHeaders[$i];
$align = $columnAlign[$i];
echo(" <td align='$align'>$title</td>\n");
}
?>
</tr>
<?php
$total_amount = 0;
$total_payment = 0;
$payment_totals = array();
$count = 1;
while ($row = db_fetch_assoc($transactions)) {
extract($row);
$class = 'data-even';
if ($count % 2) $class = 'data-odd';
$count++;
echo(" <tr class='$class'>\n");
echo(" <td align='left'><span class='user-account' unum='$user_num'>$userid</span></td>\n");
echo(" <td align='center'>$trx_date</td>\n");
echo(" <td align='center'>$transaction_type</td>\n");
echo(" <td align='center'>$transaction_status</td>\n");
echo(" <td align='right'>$currencySymbol$transaction_amount</td>\n");
$total_amount += $transaction_amount;
$query = "SELECT * FROM user_account_detail WHERE school_num = $school_num AND user_num = $user_num AND posted_to_transaction = $record_num";
$details = db_query($query);
if (db_num_rows($details)) {
$dnum = 0;
while ($row = db_fetch_assoc($details)) {
$ptrxNum = $row['transaction_num'];
$pAmt = number_format(abs($row['posted_amount']),2);
if (abs($pAmt) < 0.01) continue;
$method = db_getVal("SELECT payment_method FROM user_account WHERE school_num = $school_num AND record_num = $ptrxNum");
if (strlen($method) == 0 || !$method) $method = db_getVal("SELECT transaction_type FROM user_account WHERE school_num = $school_num AND record_num = $ptrxNum");
if (isset($payment_totals[$method])) $payment_totals[$method] += $row['posted_amount'];
else $payment_totals[$method] = $row['posted_amount'];
$total_payment += $row['posted_amount'];
if ($dnum == 0) {
echo(" <td align='center'>$method</td>\n");
echo(" <td align='right'>-$currencySymbol$pAmt</td>\n");
}
else {
// $class = 'data-even';
// if ($count % 2) $class = 'data-odd';
// $count++;
echo(" <tr class='$class'>\n");
echo(" <td align='left'></td>\n");
echo(" <td align='left'></td>\n");
echo(" <td align='left'></td>\n");
echo(" <td align='left'></td>\n");
echo(" <td align='left'></td>\n");
echo(" <td align='center'>$method</td>\n");
echo(" <td align='right'>-$currencySymbol$pAmt</td>\n");
}
$dnum++;
}
}
else {
echo(" <td align='left'></td>\n");
echo(" <td align='left'></td>\n");
}
echo(" </tr>\n");
}
?>
<tr class='footer-row'>
<td colspan='4'>&nbsp;</td>
<td align='right'><b><?php echo($currencySymbol . number_format($total_amount,2)) ?></b></td>
<td>&nbsp;</td>
<td align='right'><b>-<?php echo($currencySymbol . number_format(abs($total_payment),2)) ?></b></td>
</tr>
</table>
<br>
<table width='40%' class='content-table'>
<tr class='data-header'>
<td align='center'><?php displayLanguageText('TEXT-PAYMENT-METHOD'); ?></td>
<td align='right'><?php displayLanguageText('TEXT-AMOUNT'); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<?php
$count = 1;
foreach ($payment_totals AS $key => $value) {
$method = $key;
$pAmt = number_format(abs($value),2);
$class = 'data-even';
if ($count % 2) $class = 'data-odd';
$count++;
echo(" <tr class='$class'>\n");
echo(" <td align='center'>$method</td>\n");
echo(" <td align='right'>-$currencySymbol$pAmt&nbsp;&nbsp;&nbsp;&nbsp;</td>\n");
echo(" </tr>\n");
}
?>
</table>
<script>
$(document).ready(function() {
<?php include "include/ajax.Setup.php" ?>
var schoolNum = '<?php echo($school_num) ?>';
var today = '<?php echo(date("Y-m-d",time())) ?>';
$("#trx-dialog").dialog({
autoOpen: false,
minWidth: 980,
minHeight: 600,
modal: true,
position: { my: 'center', at: 'center' }
});
$(document).on("click", ".user-account", function() {
var user_num = $(this).attr('unum');
var data = "table_name=user_account"+
"&sequence_flag=N"+
"&action=user-account-transactions"+
"&table_id="+
"&user_num="+user_num;
// Get user account transactions
$.getJSON( "ajax.DataTable.Fetch.php",data,
function(results) {
$("#user-account-div").html(results.content);
$("#trx-dialog").dialog("open");
if (results.count > 40) window.location = '#user-account-div';
}
);
});
$(document).on('click', '.trx-close-btn', function(e) {
e.preventDefault();
$("#trx-dialog").dialog("close");
});
$(document).on('click', '#edit-user-account-transactions', function(e) {
e.preventDefault();
var unum = $(this).attr('unum');
window.location = "?action=user-account&user_num="+unum;
});
});
</script>
<div id='trx-dialog' title="<?php displayLanguageText('TEXT-USER-ACCOUNT'); ?>">
<div id='user-account-div'></div>
<p><button id='trx-close-btn' class='btn btn--outline btn--xsmall'> <?php displayLanguageText('TEXT-CLOSE-WINDOW'); ?> </button></p>
</div>
<?php
}
endTemplate();
?>