First Commit
This commit is contained in:
1 parent
5eb9dd037d
commit
2e62c0e60b
11877 files changed
+2035312
No files matched your search
@@ -0,0 +1,469 @@
|
||||
<?php
|
||||
require_once("include/globals.php");
|
||||
|
||||
if (SessionActive() != 1 || ! UserLoggedIn()) {
|
||||
header("Location: /");
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Process all actions to list and edit records
|
||||
//
|
||||
$action = "user-balances";
|
||||
$CurrentTable = "user_balance_save";
|
||||
$TitleText = getLanguageText('TEXT-USER-ACCOUNT-BALANCES');
|
||||
$OrderBy = "last_name,first_name";
|
||||
|
||||
|
||||
// Start the template and output buffering
|
||||
startTemplate();
|
||||
$templatePageTitle = "$TitleText " . getLanguageText('TEXT-ADMINISTRATION');
|
||||
|
||||
|
||||
$moduleName = "user_balances.php";
|
||||
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog($moduleName);
|
||||
writeLog(print_r($_SESSION, true));
|
||||
|
||||
|
||||
// Ensure that only valid user types have access to this module
|
||||
$AllowedUserTypes = array('SuperUser','System Administrator');
|
||||
if (checkPermission($AllowedUserTypes) != 1) {
|
||||
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
|
||||
include "form.messages.php";
|
||||
endTemplate();
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
$school_num = $school_record['record_num'];
|
||||
|
||||
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
|
||||
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
|
||||
|
||||
switch (strtolower($naction)) {
|
||||
case "save":
|
||||
$linked_sites = $school_record['linked_sites'];
|
||||
$query = "SELECT email,userid,first_name,last_name,type,status,receive_emails,sum(ua.transaction_amount) as balance,trx_status,u.record_num " .
|
||||
"FROM users AS u LEFT JOIN user_account AS ua ON user_num = u.record_num and (ua.deleted != 'Y' or ua.deleted is null) " .
|
||||
"WHERE u.school_num = $base_school_num " .
|
||||
"AND ua.school_num IN ($linked_sites) " .
|
||||
"AND u.record_num = ua.user_num " .
|
||||
"GROUP BY 1,2,3,4,5,6,7,9,10 " .
|
||||
"HAVING sum(ua.transaction_amount) != 0 " .
|
||||
"ORDER BY $OrderBy";
|
||||
writeLog($query);
|
||||
$results = db_query($query);
|
||||
$num = db_num_rows($results);
|
||||
writeLog("Num Balances: $num");
|
||||
|
||||
if (db_num_rows($results)) {
|
||||
db_query("DELETE FROM user_balance_save WHERE school_num = $school_num");
|
||||
$ubs = new Table($CurrentTable);
|
||||
$balance_year = date("Y",time());
|
||||
$posted = 'N';
|
||||
$saved_date = date("Y-m-d", time());
|
||||
|
||||
$count = 0;
|
||||
while ($row = db_fetch_array($results)) {
|
||||
extract($row);
|
||||
writeLog("$userid - $first_name $last_name");
|
||||
|
||||
$original_user_num = $record_num;
|
||||
$original_userid = db_escape_string($userid);
|
||||
$original_type = $type;
|
||||
|
||||
// Get account history
|
||||
if ($balance > 0) {
|
||||
$query = "SELECT * FROM user_account " .
|
||||
"WHERE school_num = $school_num " .
|
||||
"AND user_num = $original_user_num " .
|
||||
"AND transaction_status = 'Open' " .
|
||||
"AND transaction_amount > 0 " .
|
||||
"AND abs(amount_paid) < transaction_amount";
|
||||
$trx = db_query($query);
|
||||
|
||||
$trx_history = "";
|
||||
while ($row = db_fetch_assoc($trx)) {
|
||||
extract($row);
|
||||
|
||||
$sname = "";
|
||||
if ($schedule_num > 0) {
|
||||
$sname = "(" . db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num") . ") ";
|
||||
}
|
||||
$transaction_amount = '$' . number_format($transaction_amount,2);
|
||||
$trx_history .= "$transaction_type: $transaction_amount - $sname$note\n";
|
||||
}
|
||||
}
|
||||
|
||||
$query = $ubs->BuildInsert();
|
||||
writeLog($query);
|
||||
writeLog("---------------------------");
|
||||
db_query($query);
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
||||
$form_message = getLanguageText('MSG-USER-BALANCES-SAVED');
|
||||
$naction = 'list';
|
||||
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
||||
exit();
|
||||
|
||||
case "delete":
|
||||
$dTitle = getLanguageText('TEXT-ALL-RECORDS');
|
||||
include "delete.form.php";
|
||||
break;
|
||||
|
||||
case "delete-confirmed":
|
||||
db_query("DELETE FROM $CurrentTable WHERE school_num = $school_num");
|
||||
$form_message = getLanguageText('MSG-USER-BALANCES-DELETED');
|
||||
$naction = 'list';
|
||||
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
||||
exit();
|
||||
}
|
||||
|
||||
$cMonth = date("m",time());
|
||||
switch ($cMonth) {
|
||||
case '04':
|
||||
case '05':
|
||||
$days = 0;
|
||||
break;
|
||||
|
||||
case '06':
|
||||
case '07':
|
||||
case '08':
|
||||
case '09':
|
||||
case '10':
|
||||
$days = 150;
|
||||
break;
|
||||
|
||||
case '11':
|
||||
case '12':
|
||||
$days = 210;
|
||||
break;
|
||||
|
||||
case '01':
|
||||
$days = 250;
|
||||
break;
|
||||
|
||||
case '02':
|
||||
$days = 270;
|
||||
break;
|
||||
|
||||
case '03':
|
||||
$days = 300;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$cutoff = date("Y-m-d",time() - 60 * 60 * 24 * 5);
|
||||
|
||||
$numSaved = db_getVal("SELECT count(*) FROM user_balance_save WHERE school_num = $school_num");
|
||||
$numPosted = db_getVal("SELECT count(*) FROM user_balance_save WHERE school_num = $school_num AND posted = 'Y'");
|
||||
|
||||
if ($numSaved > 0) $saved_date = db_getVal("SELECT max(saved_date) FROM user_balance_save WHERE school_num = $school_num");
|
||||
if (isset($saved_date)) {
|
||||
$numParents = db_getVal("SELECT count(*) FROM users WHERE school_num = $base_school_num AND type = 'Parent' AND date_added < '$saved_date'");
|
||||
}
|
||||
else {
|
||||
$numParents = db_getVal("SELECT count(*) FROM users WHERE school_num = $base_school_num AND type = 'Parent' AND date_added < '$cutoff'");
|
||||
$numParents = db_getVal("SELECT count(*) FROM users WHERE school_num = $base_school_num AND type = 'Parent'");
|
||||
}
|
||||
|
||||
include "form.messages.php";
|
||||
?>
|
||||
<br>
|
||||
<?php if (!isset($naction) && $numSaved) echo(" <p>" . getLanguageText('TEXT-USER-ACCOUNT-BALANCES') . ": $numSaved ($saved_date)</p>\n"); ?>
|
||||
<table cellpadding='5' cellspacing='2' border='0'>
|
||||
<tr>
|
||||
<?php if ($numParents > 0 && (!isset($saved_date) || $saved_date < $cutoff)) { ?>
|
||||
<td align='center'><a href='?action=user-balances&naction=save' id='save-balances' class='btn btn--primary'><?php displayLanguageText('TEXT-SAVE-BALANCES'); ?></a></td>
|
||||
<?php if ($numSaved == 0) { ?>
|
||||
<td align='center'><a href='#' id='clear-selected-balances' class='btn btn--primary'><?php displayLanguageText('TEXT-CLEAR-SELECTED-USER-BALANCES'); ?></a></td>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php if ($numSaved > 0) { ?>
|
||||
<td align='center'><a href='?action=user-balances&naction=list' class='btn btn--primary'><?php displayLanguageText('TEXT-LIST-BALANCES'); ?></a></td>
|
||||
<td align='center'><a href='?action=user-balances&naction=delete' class='btn btn--primary' onclick='return confirm(\"$deleteConfirmationMsg\")'><?php displayLanguageText('TEXT-CLEAR-BALANCES'); ?></a></td>
|
||||
<?php } ?>
|
||||
<?php if ($numParents == 0 && $numSaved == 0) { ?>
|
||||
<td align='center'><p><b><?php displayLanguageText('TEXT-NO-SAVED-BALANCES-MSG') ?></b></p></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$(document).on('click', '#save-balances', function(e) {
|
||||
if (confirm("<?php displayLanguageText('TEXT-CONFIRM'); ?>")) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
switch (strtolower($naction)) {
|
||||
case "list":
|
||||
$post_icon = "<img src='images/icons/next24.png' alt='Post Balance'>";
|
||||
$flag_icon = "<img src='images/icons/accept24.png' alt='Flag as Posted'>";
|
||||
|
||||
$query = "SELECT * " .
|
||||
"FROM user_balance_save " .
|
||||
"WHERE school_num = $school_num " .
|
||||
"ORDER BY $OrderBy";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances list");
|
||||
$balances = db_query($query);
|
||||
|
||||
$data = array();
|
||||
$count = 0;
|
||||
$confirm = getLanguageText('TEXT-CONFIRM-STATUS-CHANGE');
|
||||
while ($row = db_fetch_array($balances)) {
|
||||
extract($row);
|
||||
|
||||
$rnum = $record_num;
|
||||
$name = "$first_name $last_name";
|
||||
|
||||
$obalance = $balance;
|
||||
if (isset($posted_method) && $posted_method == 'Manual') $balance = "<span class='notice'>$balance</span>";
|
||||
|
||||
$commands = "";
|
||||
|
||||
$ewhere = "";
|
||||
if (strlen($email)) $ewhere .= "email = '".db_escape_string($email)."' ";
|
||||
if (strlen($ewhere)) $ewhere .= "OR ";
|
||||
$ewhere .= "userid = '".db_escape_string($original_userid)."' ";
|
||||
|
||||
$fname = db_escape_string($first_name);
|
||||
$lname = db_escape_string($last_name);
|
||||
$fwhere = "";
|
||||
if (strlen($fname) || strlen($lname)) $fwhere = "(first_name = '$fname' AND last_name = '$lname') ";
|
||||
if (strlen($fwhere)) $fwhere .= "OR ";
|
||||
$fwhere .= $ewhere;
|
||||
|
||||
// Lookup in users table for a matching name or email
|
||||
$userFound = false;
|
||||
$query = "SELECT * FROM users " .
|
||||
"WHERE school_num = $base_school_num " .
|
||||
"AND type IN ('Parent','Guest','Administration Team','Schedule Team','Financial Team','Staff') " .
|
||||
"AND ($fwhere)";
|
||||
$results = db_query($query);
|
||||
if (db_num_rows($results)) {
|
||||
$r = db_fetch_assoc($results);
|
||||
$userFound = true;
|
||||
$unum = $r['record_num'];
|
||||
$eclass = 'notice';
|
||||
if ($posted == 'N') $eclass = 'error';
|
||||
else {
|
||||
$transaction_type = 'Charge Adjustment';
|
||||
if ($obalance < 0) $transaction_type = 'Credit Adjustment';
|
||||
$note = $school_record['previous_balances_post_message'];
|
||||
$query = "SELECT * FROM user_account " .
|
||||
"WHERE school_num = $school_num " .
|
||||
"AND user_num = $unum " .
|
||||
"AND note = '$note' " .
|
||||
"AND transaction_type = '$transaction_type' " .
|
||||
"AND transaction_amount = $obalance";
|
||||
$res = db_query($query);
|
||||
if (db_num_rows($res) == 0) $balance = "<span class='error'>$obalance</span>";
|
||||
}
|
||||
$original_userid = "<a href='?action=user-account&naction=list&user_num=$unum'><span class='$eclass'>$original_userid</span></a>";
|
||||
// $commands = "<a href='?action=user-balances&naction=post&rnum=$rnum' title='Post Balance'>$post_icon</a> ";
|
||||
}
|
||||
|
||||
$commands .= "<a href='?action=user-balances&naction=flag&rnum=$rnum' onClick=\"return(confirm('$confirm'));\" title='Flag as Posted'>$flag_icon</a>";
|
||||
|
||||
|
||||
$ptime = "";
|
||||
if ($posted == 'Y') $ptime = date("Y-m-d H:ia",$posted_time);
|
||||
if (strlen($email)) $email = "<a href='mailto:$email'>$email</a>";
|
||||
|
||||
$data[$count] = array($original_userid,$original_type,$name,$email,$balance_year,$balance,$posted,$ptime,$commands);
|
||||
$count++;
|
||||
}
|
||||
|
||||
$columnHeaders = array('UserID','Type','Name','Email','Year','Balance','Posted','Posted Time','');
|
||||
$columnAlign = array('left','left','left','left','center','right','center','center','center');
|
||||
|
||||
listDataCustom($data,$columnHeaders,$action,array(),'N',$columnAlign);
|
||||
|
||||
echo("<br>\n");
|
||||
echo("<p>");
|
||||
|
||||
if ($school_record['previous_balances_post'] == 'Post Manually' || $_SESSION['UserInfo']['type'] == 'SuperUser') {
|
||||
$msg = getLanguageText('TEXT-USER-BALANCE-POST-MSG') . "\\n --> " . getLanguageText('TEXT-CONTINUE');
|
||||
echo("<a href='?action=user-balances&naction=post-matching' onclick='return confirm(\"$msg\");' class='btn btn--primary'>" . getLanguageText('TEXT-POST-USER-BALANCES') . "</a>");
|
||||
if ($_SESSION['UserInfo']['type'] == 'SuperUser') {
|
||||
$cyear = date("Y",time());
|
||||
$msg = "Clear balance posted flags for $cyear";
|
||||
echo("<a href='?action=user-balances&naction=unpost' onclick='return confirm(\"$msg\");' class='btn btn--primary'>Unpost Balances</a>");
|
||||
|
||||
$msg = "Post Balances to Current DB";
|
||||
if ($currentDBMode != 'Current') echo("<a href='?action=user-balances&naction=post-forward' onclick='return confirm(\"$msg\");' class='btn btn--primary'>Post Balances to Current DB</a>");
|
||||
}
|
||||
}
|
||||
echo("<a href='?action=user-balances-csv' class='btn btn--primary'>" . getLanguageText('TEXT-GENERATE-CSV') . "</a>");
|
||||
echo("</p>");
|
||||
break;
|
||||
|
||||
case "unpost":
|
||||
$cyear = date("Y",time());
|
||||
$query = "UPDATE user_balance_save SET posted = 'N', posted_time = NULL WHERE school_num = $school_num";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances unpost");
|
||||
db_query($query);
|
||||
break;
|
||||
|
||||
case "post-forward":
|
||||
$balances = array();
|
||||
$cyear = date("Y",time());
|
||||
$query = "SELECT * FROM user_balance_save WHERE school_num = $school_num";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances post-forward");
|
||||
$results = db_query($query);
|
||||
if (db_num_rows($results)) {
|
||||
while ($row = db_fetch_assoc($results)) {
|
||||
$balances[] = $row;
|
||||
}
|
||||
|
||||
db_query("use hotlunch");
|
||||
$table = new Table("user_balance_save");
|
||||
db_query("DELETE FROM user_balance_save WHERE school_num = $school_num");
|
||||
|
||||
for ($i = 0; $i < count($balances); $i++) {
|
||||
extract($balances[$i]);
|
||||
$query = $table->BuildInsert($balances[$i]);
|
||||
$query .= " ON DUPLICATE KEY UPDATE balance = $balance, balance_year = '$balance_year'";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances post-forward");
|
||||
db_query($query);
|
||||
}
|
||||
}
|
||||
header("Location: /?action=user-balances");
|
||||
exit();
|
||||
|
||||
case "post-matching":
|
||||
$rwhere = "";
|
||||
$rnum = 0;
|
||||
if (array_key_exists('rnum',$_GET)) $rnum = $_GET['rnum'];
|
||||
if ($rnum > 0) {
|
||||
$rwhere = "AND record_num = $rnum ";
|
||||
}
|
||||
|
||||
$query = "SELECT original_userid,original_type,first_name,last_name,email,balance_year,balance,posted,posted_time,record_num " .
|
||||
"FROM user_balance_save " .
|
||||
"WHERE school_num = $school_num " .
|
||||
"AND posted = 'N' " .
|
||||
$rwhere .
|
||||
"ORDER BY $OrderBy";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances post-matching-users");
|
||||
$balances = db_query($query);
|
||||
|
||||
// User account defaults
|
||||
$ua = new Table("user_account");
|
||||
$note = $school_record['previous_balances_post_message'];
|
||||
$entered_time = time();
|
||||
$transaction_datetime = date("Y-m-d H:i:s",$entered_time);
|
||||
|
||||
|
||||
$data = array();
|
||||
$count = 0;
|
||||
$posted_count = 0;
|
||||
while ($row = db_fetch_assoc($balances)) {
|
||||
extract($row);
|
||||
|
||||
$rnum = $record_num;
|
||||
$name = "$first_name $last_name";
|
||||
|
||||
$ewhere = "";
|
||||
if (strlen($email)) {
|
||||
$ewhere = "email = '".db_escape_string($email)."'";
|
||||
$email = "<a href='mailto:$email'>$email</a>";
|
||||
}
|
||||
|
||||
$fname = db_escape_string($first_name);
|
||||
$lname = db_escape_string($last_name);
|
||||
$fwhere = "";
|
||||
if (strlen($fname) || strlen($lname)) $fwhere = "(first_name = '$fname' AND last_name = '$lname') ";
|
||||
if (strlen($fwhere)) $fwhere .= "OR ";
|
||||
$fwhere .= $ewhere;
|
||||
|
||||
// Lookup in users table for a matching name or email
|
||||
$query = "SELECT * FROM users " .
|
||||
"WHERE school_num = $base_school_num " .
|
||||
"AND type IN ('Parent','Guest','Administration Team','Schedule Team','Financial Team','Staff') " .
|
||||
"AND ($fwhere)";
|
||||
$results = db_query($query);
|
||||
|
||||
$new_name = "";
|
||||
$paction = "";
|
||||
if (db_num_rows($results)) {
|
||||
$row = db_fetch_assoc($results);
|
||||
$user_num = $row['record_num'];
|
||||
$new_name = $row['first_name'] . ' ' . $row['last_name'];
|
||||
$paction = "->";
|
||||
|
||||
// Post saved balance
|
||||
$transaction_type = 'Charge Adjustment';
|
||||
if ($balance < 0) $transaction_type = 'Credit Adjustment';
|
||||
$transaction_amount = $balance;
|
||||
|
||||
// Create a new transaction
|
||||
$query = $ua->BuildInsert();
|
||||
db_query($query);
|
||||
$trx_num = db_insert_id();
|
||||
|
||||
// Update the saved balance record
|
||||
$query = "UPDATE user_balance_save SET posted = 'Y', posted_time = $entered_time, posted_method = 'Post', user_num = $user_num, trx_num = $trx_num " .
|
||||
"WHERE school_num = $school_num AND record_num = $rnum";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances post-matching-users");
|
||||
db_query($query);
|
||||
|
||||
if ($school_record['balance_post_limit'] > 0.00 && $balance > $school_record['balance_post_limit']) {
|
||||
$query = "UPDATE users SET can_order = 'Balance' WHERE school_num = $school_num AND record_num = $user_num";
|
||||
db_query($query);
|
||||
}
|
||||
|
||||
$posted_count++;
|
||||
}
|
||||
|
||||
$data[$count] = array($original_type,$name,$email,$balance_year,$balance,$paction,$new_name);
|
||||
$count++;
|
||||
}
|
||||
|
||||
echo("<p><b>" . getLanguageText('TEXT-BALANCES-POSTED') . ": $posted_count</b></p>\n");
|
||||
$columnHeaders = array('Type','Name','Email','Year','Balance','','New Name');
|
||||
$columnAlign = array('left','left','left','center','right','center','left');
|
||||
|
||||
listDataCustom($data,$columnHeaders,$action,array(),'N',$columnAlign);
|
||||
|
||||
break;
|
||||
|
||||
case "flag":
|
||||
$rnum = $_GET['rnum'];
|
||||
$entered_time = time();
|
||||
if ($rnum > 0) {
|
||||
$query = "SELECT * FROM user_balance_save WHERE school_num = $school_num AND record_num = $rnum";
|
||||
$results = db_query($query);
|
||||
if (db_num_rows($results)) {
|
||||
$row = db_fetch_assoc($results);
|
||||
if ($row['posted'] != 'Y') {
|
||||
$query = "UPDATE user_balance_save SET posted = 'Y', posted_time = $entered_time, user_num = $user_num WHERE school_num = $school_num AND record_num = $rnum";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances flag-manually-y");
|
||||
db_query($query);
|
||||
}
|
||||
else {
|
||||
$query = "UPDATE user_balance_save SET posted = 'N', posted_time = 0, user_num = 0 WHERE school_num = $school_num AND record_num = $rnum";
|
||||
logQuery($school_num,"user_balance_save",$query,"user-balances flag-manually-n");
|
||||
db_query($query);
|
||||
}
|
||||
}
|
||||
header("Location: /?action=user-balances&naction=list&form_message=".urlencode(getLanguageText('TEXT-TRANSACTION-POSTED')));
|
||||
exit();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
endTemplate();
|
||||
?>
|
||||
Reference in new issue
Block a user