Files
HotLunches/user_account.form.php
2026-10-20 17:31:06 -07:00

483 lines
22 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Administration Team','Schedule Team','Financial','Financial Team','Staff');
if (checkPermission($AllowedUserTypes) != 1) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
header("Location: /?error_message=".urlencode($error_message));
return;
}
$transaction_amount = 0;
// Setup default values on insert
if ($naction == 'add') {
$transaction_amount = db_getVal("SELECT sum(transaction_amount) FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND (deleted != 'Y' OR deleted IS NULL)");
$open_balance = db_getVal("SELECT sum(transaction_amount) FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND transaction_status != 'Closed' " .
"AND (deleted != 'Y' OR deleted IS NULL)");
$closed_balance = db_getVal("SELECT sum(transaction_amount) FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND transaction_status = 'Closed' " .
"AND (deleted != 'Y' OR deleted IS NULL)");
$balance_total = db_getVal("SELECT sum(transaction_amount) FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND (deleted != 'Y' OR deleted IS NULL)");
$balance_forward = number_format(floatval($open_balance) + floatval($closed_balance),2);
if ($transaction_amount < 0) $transaction_amount = 0;
$curr_date = date("Y-m-d",time());
$posting_date = $curr_date;
}
// Get user information
$results = db_query("SELECT * FROM users WHERE school_num = $base_school_num AND record_num = $user_num");
$user_info = db_fetch_array($results);
$user_email = $user_info['email'];
$userid = "<a href='?action=users&donext=list&naction=lookup&record_num=$user_num'>$userid</a>";
$user_name = $user_info['first_name'] . ' ' . $user_info['last_name'];
$user_contact = "$userid<br>\n$user_name - " . $user_info['home_phone'] .
" - <a href='mailto:$user_email'>$user_email</a>";
$default_payment_method = "Check";
if (strlen($school_record['default_payment_method'])) $default_payment_method = $school_record['default_payment_method'];
// Set form defaults
if ($transaction_amount > 0 && !isset($transaction_type)) $transaction_type = "Payment";
else $transaction_type = "";
if ($transaction_type == "Payment" && !isset($payment_method)) $payment_method = $default_payment_method;
else $payment_method = "";
if (!isset($note)) $note = $user_name;
// Get set of Open transactions
$postingSchedule = 0;
if ($school_record['select_transactions_on_post'] == 'Y') {
$query = "SELECT * FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND transaction_status = 'Open' " .
"AND (deleted != 'Y' OR deleted IS NULL) " .
"ORDER BY entered_time";
$open_transactions = db_query($query);
$postToTRX = db_num_rows($open_transactions);
$openTRX = array();
$postingSchedule = 0;
while ($row = db_fetch_assoc($open_transactions)) {
$openTRX[] = $row;
if ($postingSchedule == 0 && $row['transaction_type'] == 'Order') $postingSchedule = $row['schedule_num'];
}
}
if ($school_record['select_transactions_on_post'] != 'Y' && $school_record['select_orders_on_post'] == 'Y') {
$unpaid_orders = db_query("SELECT hloh.*,p.first_name,p.last_name FROM hotlunch_order_header AS hloh, people AS p " .
"WHERE hloh.school_num = $school_num " .
"AND p.school_num = $base_school_num " .
"AND hloh.status NOT IN ('Paid','Complimentary','Concession','Deleted') " .
"AND hloh.ordered_by_num = p.record_num " .
"AND p.user_num = $user_num " .
"ORDER BY hloh.added_date, hloh.record_num");
$postToTRX = db_num_rows($unpaid_orders);
if ($postToTRX > 0) {
$postingSchedule = db_getVal("SELECT hloh.schedule_num FROM hotlunch_order_header AS hloh, people AS p, hotlunch_schedules AS hls " .
"WHERE hloh.school_num = $school_num " .
"AND hls.school_num = $school_num " .
"AND p.school_num = $base_school_num " .
"AND hloh.status NOT IN ('Paid','Complimentary','Concession','Deleted') " .
"AND hloh.ordered_by_num = p.record_num " .
"AND p.user_num = $user_num " .
"AND hls.record_num = hloh.schedule_num " .
"AND hls.status NOT IN ('Closed','Deleted') " .
"ORDER BY hloh.added_date, hloh.record_num LIMIT 0,1");
}
}
if ($postingSchedule == 0) {
$postingSchedule = db_getVal("SELECT hloh.schedule_num FROM hotlunch_order_header AS hloh, people AS p, hotlunch_schedules AS hls " .
"WHERE hloh.school_num = $school_num " .
"AND hls.school_num = $school_num " .
"AND p.school_num = $base_school_num " .
"AND hloh.status NOT IN ('Paid','Complimentary','Concession','Deleted') " .
"AND hloh.ordered_by_num = p.record_num " .
"AND p.user_num = $user_num " .
"AND hls.record_num = hloh.schedule_num " .
"AND hls.status NOT IN ('Closed','Deleted') " .
"ORDER BY hloh.added_date, hloh.record_num LIMIT 0,1");
}
if (!isset($payment_reference)) $payment_reference = '';
if (!isset($selected_payment_method)) $selected_payment_method = '';
?>
<script language="javascript">
<!--
function updateForm() {
var trxType = document.forms[0].transaction_type.options[document.forms[0].transaction_type.selectedIndex].value;
if (trxType == 'Payment') {
// Set default payment method
for (index = 0; index < document.forms[0].payment_method.length; index++) {
if (document.forms[0].payment_method[index].value == '<?php echo($default_payment_method) ?>') {
document.forms[0].payment_method.selectedIndex = index;
}
}
document.getElementById('transaction_amount').value = document.getElementById('amt').value;
document.getElementById('transaction_amount').readOnly = false;
document.getElementById('payment_reference').readOnly = false;
<?php if ($default_payment_method == 'Check') { ?>
document.getElementById('trxNote').innerHTML = "Name on <?php displayLanguageText('TEXT-CHECK'); ?>";
document.getElementById('payRef').innerHTML = "<?php displayLanguageText('TEXT-CHECK'); ?> Number";
document.getElementById('note').value = "<?php echo($user_name) ?>";
<?php } ?>
document.forms[0].payment_method.disabled = false;
document.forms[0].payment_reference.focus();
}
if (trxType == 'TRX Note') {
document.forms[0].payment_method.disabled = true;
document.forms[0].payment_method.selectedIndex = 0;
document.getElementById('transaction_amount').value = "";
document.getElementById('transaction_amount').readOnly = true;
document.getElementById('payment_reference').readOnly = true;
document.getElementById('payRef').readonly = true;
document.getElementById('trxNote').innerHTML = "Transaction Note";
document.getElementById('payRef').innerHTML = "Payment Reference";
document.getElementById('note').value = "";
}
if (trxType != 'Payment' && trxType != 'TRX Note') {
document.getElementById('transaction_amount').value = document.getElementById('amt').value;
document.getElementById('transaction_amount').readOnly = false;
document.getElementById('payment_reference').readOnly = false;
document.forms[0].payment_method.disabled = true;
document.forms[0].payment_method.selectedIndex = 0;
document.getElementById('trxNote').innerHTML = "Transaction Note";
document.getElementById('payRef').innerHTML = "Payment Reference";
document.getElementById('note').value = "";
}
}
function updateText() {
var payMethod = document.forms[0].payment_method.options[document.forms[0].payment_method.selectedIndex].value;
if (payMethod == 'Check') {
document.getElementById('trxNote').innerHTML = "Name on <?php displayLanguageText('TEXT-CHECK'); ?>";
document.getElementById('payRef').innerHTML = "<?php displayLanguageText('TEXT-CHECK'); ?> Number";
document.getElementById('note').value = "<?php echo($user_name) ?>";
}
else {
document.getElementById('trxNote').innerHTML = "Transaction Note";
document.getElementById('payRef').innerHTML = "Payment Reference";
document.getElementById('note').value = "";
}
}
-->
</script>
<br>
<form method='post' action='/' name='paymentform' id='paymentform'>
<?php
$message_width = $default_form_width;
include "form.messages.php";
?>
<table width='<?php echo($default_form_width) ?>' class='content-table'>
<tr>
<td colspan='2' align='center' class='heading'><?php displayLanguageText('TEXT-ENTER-TRANSACTION'); ?></td>
</tr>
<tr>
<td colspan='2' align='center'>&nbsp;</td>
</tr>
<tr>
<td width='30%' align='right' valign='top'><?php displayLanguageText('TEXT-USER-ID'); ?>: </td>
<td width='70%' align='left' valign='top'><?php echo($user_contact) ?></td>
</tr>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-TRANSACTION-TYPE'); ?>:: </td>
<td align='left' valign='top'>
<select name='transaction_type' id='transaction_type' onChange='updateForm();'>
<option value=''><?php displayLanguageText('TEXT-SELECT'); ?></option>
<?php if ($_SESSION['UserInfo']['type'] == 'Staff') { ?>
<option value='Payment' selected='selected'><?php displayLanguageText('TEXT-PAYMENT'); ?></option>
<?php } else { ?>
<optgroup label="<?php displayLanguageText('TEXT-CHARGES-AND-FEES'); ?>">
<?php BuildFileList("transaction_types_charges.txt",$transaction_type) ?>
<?php
$r = db_query("SELECT * FROM user_account_trx_codes WHERE school_num = $school_num AND trx_category = 'Charge' ORDER BY sequence");
if (db_num_rows($r)) {
while ($row = db_fetch_assoc($r)) {
$transaction_type_code = $row['transaction_type_code'];
$selected = "";
if (isset($selected_transaction_type) && $transaction_type_code == $selected_transaction_type) $selected = " selected='selected'";
echo("<option value='$transaction_type_code'$selected>$transaction_type_code</option>\n");
}
}
?>
</optgroup>
<optgroup label="<?php displayLanguageText('TEXT-PAYMENTS-AND-CREDITS'); ?>">
<?php BuildFileList("transaction_types_payments.txt",$transaction_type) ?>
<?php
$r = db_query("SELECT * FROM user_account_trx_codes WHERE school_num = $school_num AND trx_category = 'Credit' ORDER BY sequence");
if (db_num_rows($r)) {
while ($row = db_fetch_assoc($r)) {
$transaction_type_code = $row['transaction_type_code'];
$selected = "";
if (isset($selected_transaction_type) && $transaction_type_code == $selected_transaction_type) $selected = " selected='selected'";
echo("<option value='$transaction_type_code'$selected>$transaction_type_code</option>\n");
}
}
?>
</optgroup>
<optgroup label="<?php displayLanguageText('TEXT-OTHER'); ?>">
<?php BuildFileList("transaction_types_other.txt",$transaction_type) ?>
<?php
$r = db_query("SELECT * FROM user_account_trx_codes WHERE school_num = $school_num AND trx_category = 'Note' ORDER BY sequence");
if (db_num_rows($r)) {
while ($row = db_fetch_assoc($r)) {
$transaction_type_code = $row['transaction_type_code'];
$selected = "";
if (isset($selected_transaction_type) && $transaction_type_code == $selected_transaction_type) $selected = " selected='selected'";
echo("<option value='$transaction_type_code'$selected>$transaction_type_code</option>\n");
}
}
?>
</optgroup>
<?php } ?>
</select>
</td>
</tr>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-PAYMENT-METHOD') ?>: </td>
<td align='left' valign='top'>
<select name='payment_method' id='payment_method' onChange='updateText();'>
<option value=''></option>
<?php BuildFileList("payment_method.txt",$payment_method) ?>
<?php if (strlen(trim($school_record['accept_other']))) echo("<option value='" . trim($school_record['accept_other']) . "'>" . trim($school_record['accept_other']) . "</option>\n"); ?>
</select>
</td>
</tr>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-TRANSACTION-AMOUNT') ?>: </td>
<td align='left' valign='top'><input type='text' name='transaction_amount' id='transaction_amount' value="<?php echo($transaction_amount) ?>" size='10' style='text-align: right;'></td>
</tr>
<tr>
<td align='right' valign='top'><span id='trxNote'>Name on <?php displayLanguageText('CODE-CHECK'); ?></span>: </td>
<td align='left' valign='top'><input type='text' name='note' id='note' value="<?php echo($note) ?>" size='60'></td>
</tr>
<tr>
<td align='right' valign='top'><span id='payRef'><?php displayLanguageText('CODE-CHECK'); ?> Number</span>: </td>
<td align='left' valign='top'><input type='text' name='payment_reference' id='payment_reference' value="<?php echo($payment_reference) ?>" size='20'></td>
</tr>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-POSTING-SCHEDULE'); ?>: </td>
<td align='left' valign='top'>
<select name='schedule_num' id='schedule_num'>
<option value='0'><?php displayLanguageText('TEXT-SELECT'); ?></option>
<?php
$end_date = date("Y-m-d",time() - 60 * 60 * 24 * 360);
$today = date("Y-m-d",time());
$now = date("Y-m-d H:i:s",time());
$query = "SELECT schedule_name,record_num " .
"FROM hotlunch_schedules " .
"WHERE school_num = $school_num " .
"AND start_order_datetime <= '$now' " .
"AND status NOT IN ('Closed','Deleted') " .
"AND (schedule_type IN ('Fund Raising','Other') OR (schedule_type IN ('Hot Lunch','Date Sensitive') AND schedule_end_date >= '$end_date')) " .
"ORDER BY schedule_start_date DESC";
$schedules = db_query($query);
$selected = "";
if ($postingSchedule == 0 && $school_record['post_with_recent_schedule'] == 'Y') $selected = " selected='selected'";
if ($postingSchedule == 0 && db_num_rows($schedules) == 1) $selected = " selected='selected'";
$mselected = "";
if ($postingSchedule == 0 && strlen($selected) == 0) $mselected = " selected='selected'";
echo(" <option value='1'$mselected>" . getLanguageText('TEXT-MISCELLANEOUS-CHARGES') . "</option>\n");
while ($row = db_fetch_array($schedules)) {
$sname = $row['schedule_name'];
$rnum = $row['record_num'];
$maxLength = 80;
if (strlen($sname) > $maxLength) {
$words = explode(' ',$sname);
$name = "";
$i = 0;
while (strlen($name) < $maxLength) {
$name .= $words[$i] . ' ';
$i++;
}
$sname = trim($name);
}
if ($postingSchedule > 0) {
$selected = "";
if ($rnum == $postingSchedule) $selected = " selected='selected'";
}
echo(" <option value='$rnum'$selected>$sname</option>\n");
$selected = "";
}
?>
</select>
</td>
</tr>
<?php
if ($school_record['select_orders_on_post'] == 'Y') {
if ($postToTRX > 0) {
?>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-POST-TO-ORDERS'); ?>: </td>
<td align='left' valign='top'>
<select name='selected_orders[]' id='selected_orders' multiple size='<?php echo($postToTRX) ?>' class='select-width400'>
<?php
while ($row = db_fetch_assoc($unpaid_orders)) {
$oNum = $row['record_num'];
$oTotal = $row['order_total'];
$oName = $row['first_name'] . ' ' . $row['last_name'];
$oSnum = $row['schedule_num'];
$oSchedule = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $oSnum");
$selected = "";
if ($postToTRX == 1) $selected = " selected='selected'";
echo("<option value='$oNum'$selected>#$oNum - $currencySymbol" . number_format($oTotal,2) . " - $oName ($oSchedule)</option>\n");
}
?>
</select>
</td>
</tr>
<?php
}
}
?>
<?php
if ($school_record['select_transactions_on_post'] == 'Y') {
if ($postToTRX > 0) {
?>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-POST-TO-TRANSACTIONS'); ?>: </td>
<td align='left' valign='top'>
<select name='selected_transactions[]' id='selected_transactions' multiple size='<?php echo($postToTRX) ?>' class='select-width500'>
<?php
$totalOwing = 0;
for ($i = 0; $i < count($openTRX); $i++) {
$trxNum = $openTRX[$i]['record_num'];
$trxType = $openTRX[$i]['transaction_type'];
$trxNote = $openTRX[$i]['note'];
$trxTitle = "";
if (strlen($trxNote)) $trxTitle .= " - $trxNote";
$trxAmt = $openTRX[$i]['transaction_amount'];
$paidAmt = $openTRX[$i]['amount_paid'];
$amtOwing = $trxAmt - $paidAmt;
$totalOwing += $amtOwing;
$oNum = intval($openTRX[$i]['order_num']);
$sNum = intval($openTRX[$i]['schedule_num']);
if ($oNum > 0) {
$oSchedule = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $sNum");
$trxTitle .= " ($oSchedule)";
}
// if ($amtOwing == 0) {
// db_query("UPDATE ");
// }
$selected = " selected='selected'";
echo("<option value='$trxNum' amt='$amtOwing' $selected>$trxType: $currencySymbol" . number_format($trxAmt,2) . "$trxTitle</option>\n");
}
?>
</select>
</td>
</tr>
<!--
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-BALANCE-FORWARD'); ?>: </td>
<td align='left' valign='top'><input type='text' name='balance_forward' id='balance_forward' size='10' value='<?php echo($balance_forward) ?>' style='text-align: right;' readonly></td>
</tr>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-TOTAL-OF-TRANSACTIONS'); ?>: </td>
<td align='left' valign='top'><input type='text' name='trx_total' id='trx_total' size='10' value='<?php echo(number_format($totalOwing,2)) ?>' style='text-align: right;' style='text-align: right;' readonly></td>
</tr>
-->
<?php
}
}
?>
<tr>
<td align='right' valign='top'><?php displayLanguageText('TEXT-POSTING-DATE'); ?>: </td>
<td align='left' valign='top'><input type='text' name='posting_date' id='posting_date' value="<?php echo($posting_date) ?>" size='15' class='date-field'></td>
</tr>
<tr>
<td colspan='2' align='center'>
<br>
<input type='submit' class='btn btn--primary' id='enterButton' value="<?php displayLanguageText('TEXT-ENTER-TRANSACTION'); ?>">
<input type='hidden' name='action' value='user-account'>
<input type='hidden' name='naction' value='insert'>
<input type='hidden' name='prev_naction' value='<?php echo($onaction) ?>'>
<input type='hidden' name='class_num' value='<?php echo($class_num) ?>'>
<input type='hidden' name='user_num' value='<?php echo($user_num) ?>'>
<input type='hidden' name='amt' id='amt' value='<?php echo($transaction_amount) ?>'>
<input type='hidden' name='curr_date' id='curr_date' value='<?php echo($curr_date) ?>'>
<br>
<br>
</td>
</tr>
</table>
</form>
<?php
if ($school_record['exact_enabled'] == 'Y' && strlen($school_record['exact_code'])) {
echo("<br>");
include "payment_form.php";
}
?>
<script type="text/javascript">
start_field = document.getElementById('payment_reference');
start_field.focus();
</script>
<script>
$(document).ready(function() {
$("#order-dialog").dialog({
autoOpen: false,
minHeight: 400,
maxHeight: 500,
minWidth: 500
});
$("#enterButton").click(function (e) {
});
});
</script>
<div id='order-dialog' title='Update Orders Dialog'>
<p class='align-left'><b>Unpaid Orders</b></p>
<form id='ordersForm'>
<span id='unpaid-orders'></span>
<button id='postEntry' class='btn btn--outline btn--xsmall'> Post </button>
</form>
</div>