0) $source = $_GET['source'];
if (array_key_exists('source',$_POST) && strlen($_POST['source']) > 0) $source = $_POST['source'];
if (!isset($source) || strlen($source) == 0) $source = "On-Line";
// Process other parameters
if (array_key_exists('show_all',$_GET) && strlen($_GET['show_all']) > 0) $show_all = $_GET['show_all'];
if (array_key_exists('show_all',$_POST) && strlen($_POST['show_all']) > 0) $show_all = $_POST['show_all'];
if (array_key_exists('show_status',$_GET) && strlen($_GET['show_status']) > 0) $show_status = $_GET['show_status'];
if (array_key_exists('show_status',$_POST) && strlen($_POST['show_status']) > 0) $show_status = $_POST['show_status'];
if (array_key_exists('show_source',$_GET) && strlen($_GET['show_source']) > 0) $show_source = $_GET['show_source'];
if (array_key_exists('show_source',$_POST) && strlen($_POST['show_source']) > 0) $show_source = $_POST['show_source'];
// Get user num if it is set
unset($existing_user_num);
if (array_key_exists('existing_user_num',$_POST) && strlen($_POST['existing_user_num']) > 0) $existing_user_num = intval($_POST['existing_user_num']);
if (!isset($schedule_num)) {
header("Location: /?error_message=".urlencode(getLanguageText('ERRORMSG-INVALID-SCHEDULE-NUM')));
exit();
}
$query = "select * from hotlunch_schedules " .
"where record_num = $schedule_num " .
"and school_num = $school_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
header("Location: /?error_message=".urlencode(getLanguageText('ERRORMSG-INVALID-SCHEDULE-NUM')));
exit();
}
$schedule = db_fetch_assoc($results);
$schedule_name = $schedule['schedule_name'];
// Get current order information
if (isset($entered_order_num) && $entered_order_num > 0) {
$order_num = $entered_order_num;
$query = "select * from hotlunch_order_header " .
"where school_num = $school_num " .
"and record_num = $entered_order_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = "Invalid order number";
if (!isset($show_all)) $show_all = '';
if (!isset($show_status)) $show_status = '';
if (!isset($show_source)) $show_source = '';
if (!isset($show_only)) $show_only = '';
header("Location: /?action=orders&schedule_num=$schedule_num&show_all=$show_all&show_status=$show_status&show_source=$show_source" .
"&show_only=$show_only&error_message=".urlencode($error_message));
exit();
}
$row = db_fetch_array($results);
$originalOrder = $row;
$ordered_by_num = intval($row['ordered_by_num']);
$ordered_by_type = $row['ordered_by_type'];
}
else {
$originalOrder = array();
// Get staff_num
if (array_key_exists('staff_num',$_GET)) $staff_num = intval($_GET['staff_num']);
if (array_key_exists('staff_num',$_POST)) $staff_num = intval($_POST['staff_num']);
// Get student_num
if (array_key_exists('student_num',$_GET)) $student_num = intval($_GET['student_num']);
if (array_key_exists('student_num',$_POST)) $student_num = intval($_POST['student_num']);
// Get ordered_by_num
if (array_key_exists('ordered_by_num',$_GET)) $ordered_by_num = intval($_GET['ordered_by_num']);
if (array_key_exists('ordered_by_num',$_POST)) $ordered_by_num = intval($_POST['ordered_by_num']);
// Get ordered_by_type
if (array_key_exists('ordered_by_type',$_GET)) $ordered_by_type = $_GET['ordered_by_type'];
if (array_key_exists('ordered_by_type',$_POST)) $ordered_by_type = $_POST['ordered_by_type'];
// Get people_type
if (array_key_exists('people_type',$_GET)) $people_type = $_GET['people_type'];
if (array_key_exists('people_type',$_POST)) $people_type = $_POST['people_type'];
// Process the order_by_code value
if (array_key_exists('ordered_by_code',$_POST)) {
$ordered_by_code = $_POST['ordered_by_code'];
if (strpos($ordered_by_code, "Student") === 0) {
$ordered_by_num = intval(str_replace("Student.","",$ordered_by_code));
$ordered_by_type = 'Student';
}
if (strpos($ordered_by_code, "Staff") === 0) {
$ordered_by_num = intval(str_replace("Staff.","",$ordered_by_code));
$ordered_by_type = 'Staff';
}
if ($ordered_by_code == 'Concession') {
$ordered_by_num = $school_num;
$ordered_by_type = 'Concession';
$source = 'Concession';
}
}
// Set ordered_by_num from staff_num
if (isset($staff_num) && !isset($ordered_by_num)) {
$ordered_by_num = intval($staff_num);
$ordered_by_type = 'Staff';
}
// Set ordered_by_num from student_num
if (isset($student_num) && !isset($ordered_by_num) && $student_num != 0) {
$ordered_by_num = intval($student_num);
if (isset($people_type)) $ordered_by_type = $people_type;
else $ordered_by_type = db_getVal("SELECT people_type FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
unset($new_last_name);
unset($new_first_name);
}
}
if (isset($ordered_by_num)) writeLog("ordered_by_num: $ordered_by_num");
// Ensure that ordered_by_num is set
$AllowedUserTypes = array('Parent','Staff');
if (!isset($ordered_by_num) && checkPermission($AllowedUserTypes) == 1) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED') . " - ordered_by_num";
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Control if the fields in the form are editable
$form_edit_mode = "edit";
// Perform student validation for Parents
if ($_SESSION['UserInfo']['type'] == 'Parent') {
// Verify that this student is connected to this user account
$uid = $_SESSION['UserInfo']['record_num'];
$ordered_by_num = intval($ordered_by_num);
$query = "select * from people " .
"where school_num = $base_school_num " .
"and user_num = $uid " .
"and record_num = $ordered_by_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = "Invalid ordered by number";
if (!isset($show_all)) $show_all = '';
if (!isset($show_status)) $show_status = '';
if (!isset($show_source)) $show_source = '';
if (!isset($show_only)) $show_only = '';
header("Location: /?action=orders&schedule_num=$schedule_num&show_all=$show_all&show_status=$show_status&show_source=$show_source" .
"&show_only=$show_only&error_message=".urlencode($error_message));
exit();
}
// Verify that the student is allowed to order from this schedule
$class_entries = db_getVal("select count(*) from hotlunch_schedules_classes where school_num = $school_num and schedule_num = $schedule_num");
if (isset($class_num) && $class_entries > 0 && $class_num > 0) {
$ordered_by_num = intval($ordered_by_num);
$class_num = db_getVal("select class_num from people where record_num = $ordered_by_num");
$schedule_access = db_getVal("select count(*) from hotlunch_schedules_classes where school_num = $school_num and schedule_num = $schedule_num and class_num = $class_num");
if ($schedule_access == 0) {
$error_message = "This student can not order from this schedule";
header("Location: /?action=orders&schedule_num=$schedule_num&show_all=$show_all&show_status=$show_status&show_source=$show_source" .
"&show_only=$show_only&error_message=".urlencode($error_message));
exit();
}
}
$source = "On-Line";
}
// Perform validation for Staff
if ($_SESSION['UserInfo']['type'] == 'Staff') {
$ordered_by_num = intval($ordered_by_num);
$query = "select * from people " .
"where school_num = $base_school_num " .
"and record_num = $ordered_by_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = "Invalid staff number";
header("Location: /?action=orders&schedule_num=$schedule_num&show_all=$show_all&show_status=$show_status&show_source=$show_source" .
"&show_only=$show_only&error_message=".urlencode($error_message));
exit();
}
$source = "On-Line";
}
// Parents and Staff can only review orders after end order date has passed
if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff') {
// Check if there is a schedule number and if it is still open for editing
if (isset($schedule_num)) {
$today = date("Y-m-d",time());
$query = "select * from hotlunch_schedules " .
"where record_num = $schedule_num " .
"and school_num = $school_num " .
"and status = 'Active' " .
"and end_order_datetime >= '$now' ";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$form_edit_mode = "review";
}
}
}
// Ensure that Staff and Parent type users have the lunch schedule set
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team','Supplier');
if (checkPermission($AllowedUserTypes) != 1) {
if (!isset($schedule_num)) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED') . " - schedule_num";
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Check if this is a valid schedule
$today = date("Y-m-d",time());
$query = "select * from hotlunch_schedules " .
"where record_num = $schedule_num " .
"and school_num = $school_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
$hotlunch_schedule = db_fetch_array($results);
}
else {
if (!isset($schedule_num)) {
$error_message = "A hot lunch schedule must be specified";
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Check if this is a valid schedule
$swhere = "";
if ($_SESSION['UserInfo']['type'] == 'Supplier') $swhere = " and supplier_num = " . $_SESSION['UserInfo']['supplier_num'];
$query = "select * from hotlunch_schedules " .
"where record_num = $schedule_num " .
"and school_num = $school_num $swhere";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = "The requested hot lunch schedule is invalid";
header("Location: /?error_message=".urlencode($error_message));
exit();
}
$hotlunch_schedule = db_fetch_array($results);
}
// Check that this schedule date has lunch dates specified
$query = "select count(*) num from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num";
$results = db_query($query);
$row = db_fetch_array($results);
if ($row['num'] == 0) {
$error_message = "This lunch schedule has no menus defined";
header("Location: /?action=schedule-reports&schedule_num=$schedule_num&error_message=".urlencode($error_message));
exit();
}
// Check that this schedule date has lunch items specified
$query = "select count(hotlunch_menu_items.record_num) num from hotlunch_menu_items,hotlunch_menu_dates " .
"WHERE hotlunch_menu_items.school_num = $school_num " .
"AND hotlunch_menu_dates.school_num = $school_num " .
"AND hotlunch_menu_items.active != 'N' " .
"AND hotlunch_menu_dates.record_num = hotlunch_menu_items.menu_num " .
"AND hotlunch_menu_dates.schedule_num = $schedule_num";
$results = db_query($query);
$row = db_fetch_array($results);
if ($row['num'] == 0) {
$error_message = "This lunch schedule has no menu items defined";
header("Location: /?action=schedule-reports&schedule_num=$schedule_num&error_message=".urlencode($error_message));
exit();
}
$CurrentTable = "hotlunch_order_header";
$DeleteField = "";
$dSeparator = "";
$FormFile = "hotlunch_orders.form.php";
$TitleText = "Order";
$OrderBy = "";
$FormFile = "hotlunch_orders.form.new.php";
writeLog("FormFile: $FormFile");
//
// Process all actions to list and edit records
//
$naction = "";
$templatePageTitle = $hotlunch_schedule['schedule_name'] . ' ' . getLanguageText('TEXT-ORDERS');;
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
if (array_key_exists('ordered_by_num', $_GET)) $ordered_by_num = intval($_GET['ordered_by_num']);
if (array_key_exists('ordered_by_num', $_POST)) $ordered_by_num = intval($_POST['ordered_by_num']);
// if (!isset($ordered_by_num)) $ordered_by_num = $school_num;
if (isset($ordered_by_num)) writeLog("ordered_by_num: $ordered_by_num");
// $ordered_by_type = 'Concession';
if (isset($ordered_by_num) && $ordered_by_num > 3) {
$query = "SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num";
writeLog($query);
$results = db_query($query);
if (db_num_rows($results)) {
$person = db_fetch_assoc($results);
$ordered_by_type = $person['people_type'];
}
}
switch (strtolower($naction)) {
case "add":
$sourceText = getLanguageText('TEXT-'.$source.'-ORDER');
$PageTitle = $sourceText;
$ButtonText = getLanguageText('TEXT-PLACE-ORDER');
$next_naction = "insert";
$paction = $naction;
if (!in_array($_SESSION['UserInfo']['type'],array('SuperUser','System Administrator','Application Administrator')) && in_array($_SESSION['UserInfo']['can_order'],array('No','Balance'))) {
$error_message = $school_record['no_ordering_message'] . " - " . $_SESSION['UserInfo']['can_order'];
echo("
\n");
include "form.messages.php";
break;
}
if ($_SESSION['UserInfo']['type'] == "Parent" || $_SESSION['UserInfo']['type'] == "Staff") $source = "On-Line";
include $FormFile;
break;
case "edit":
if ($_SESSION['UserInfo']['type'] == "Parent" || $_SESSION['UserInfo']['type'] == "Staff") $source = "On-Line";
$sourceText = getLanguageText('TEXT-'.$source.'-ORDER');
$PageTitle = $sourceText;
$ButtonText = getLanguageText('TEXT-UPDATE-ORDER');
$next_naction = "update";
$paction = $naction;
if (!in_array($_SESSION['UserInfo']['type'],array('SuperUser','System Administrator','Application Administrator')) && in_array($_SESSION['UserInfo']['can_order'],array('No','Balance'))) {
$error_message = $school_record['no_ordering_message'];
echo("
\n");
include "form.messages.php";
break;
}
include $FormFile;
break;
case "update":
case "insert":
extract($_POST);
$error_message = "";
if (!isset($schedule_num)) {
echo("
\n");
$error_message = getLanguageText('ERRORMSG-INVALID-SCHEDULE-NUM');
include "form.messages.php";
break;
}
//
// Process each menu and menu item in the schedule
//
$query = "select * from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"order by sequence,menu_date";
$menu_dates = db_query($query);
$num_items = 0;
$qtyError = false;
while ($menu_date = db_fetch_array($menu_dates)) {
$menu_title = $menu_date['menu_title'];
$menu_num = $menu_date['record_num'];
$menu_code = $schedule_num . "_" . $menu_num;
// Get menu items for this menu date
$query = "select * from hotlunch_menu_items " .
"where school_num = $school_num " .
"and menu_num = $menu_num " .
"AND active != 'N' " .
"AND item_type NOT IN ('Heading') " .
"order by sequence";
$menu_items = db_query($query);
while ($menu_item = db_fetch_assoc($menu_items)) {
$item_title = $menu_item['item_title'];
$menu_item_num = $menu_item['record_num'];
$options = $menu_item['options'];
$qty_available = intval($menu_item['quantity_available']);
$max_quantity = intval($menu_item['max_quantity']);
$curr_code = $schedule_num . "_" . $menu_num . "_" . $menu_item_num;
$qty = 0;
if (array_key_exists("qty_$curr_code", $_POST)) $qty = intval($_POST["qty_$curr_code"]);
// If some of this item have been ordered note that something has been ordered and check the quantity available
if ($qty > 0) {
$num_items++;
// If this item has order limits then verify that the qty is less than the limit
if ((!isset($ordered_by_type) || $ordered_by_type != 'Concession') && $max_quantity > 0 && $qty > $max_quantity) {
$error_message = "Error: You can not order more than $max_quantity of $item_title";
$next_naction = $naction;
include $FormFile;
$qtyError = true;
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') {
// echo("$menu_title: $item_title - $max_quantity - $qty_available - $qty");
// exit();
// }
break;
}
// If this item has inventory restrictions determine how many have been sold thus far
if ((!isset($ordered_by_type) || $ordered_by_type != 'Concession') && $qty_available > 0) {
$swhere = "";
if (isset($ordered_by_num) && $ordered_by_num > 0) $swhere = " AND ordered_by_num != $ordered_by_num AND ordered_by_type != 'Concession' ";
$qty_sold = db_getVal("SELECT sum(qty) FROM hotlunch_order_items WHERE school_num = $school_num AND menu_item_num = $menu_item_num AND active != 'N' $swhere");
$qty_remaining = intval($qty_available) - intval($qty_sold);
// If there are not enough available then display the form again
if ($qty_remaining < $qty) {
if ($paction == 'add') {
$sourceText = getLanguageText('TEXT-'.$source.'-ORDER');
$PageTitle = $sourceText;
$ButtonText = getLanguageText('TEXT-PLACE-ORDER');
}
else {
$sourceText = getLanguageText('TEXT-'.$source.'-ORDER');
$PageTitle = $sourceText;
$ButtonText = getLanguageText('TEXT-UPDATE-ORDER');
}
$error_message = "Error: not enough '$item_title' available on $menu_title - Quantity Available: $qty_remaining";
$next_naction = $naction;
header("Location: /?action=orders&naction=add&schedule_num=$schedule_num&student_num=$ordered_by_num&error_message=" . urlencode($error_message));
// include $FormFile;
// $qtyError = true;
// break;
exit();
}
}
}
}
}
//
// Save the order
//
if ($qtyError) writeLog("qtyError: true");
writeLog("num_items: $num_items");
if (!$qtyError && $num_items > 0) {
if (isset($defaultOrder) && $defaultOrder == 'Y') include "hotlunch_orders.generate.php";
else include "hotlunch_orders.save.php";
}
else {
writeLog("order_num: $order_num");
writeLog("num_items: $num_items");
if (isset($order_num) && $order_num > 0 && $num_items == 0) {
logOrderChange($order_num, "ORDER DELETED - NO ITEMS", "hotlunch_orders.php");
$query = "SELECT * FROM hotlunch_order_items " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND ordered_by_num = $ordered_by_num " .
"AND order_num = $order_num";
writeLog($query);
$items = db_query($query);
writeLog("Num Items: ".db_num_rows($items));
while ($row = db_fetch_assoc($items)) {
$rnum = $row['record_num'];
db_query("DELETE FROM hotlunch_order_items WHERE school_num = $school_num AND record_num = $rnum");
}
db_query("DELETE FROM hotlunch_order_header WHERE school_num = $school_num AND ordered_by_num = $ordered_by_num AND record_num = $order_num");
db_query("DELETE FROM user_account WHERE school_num = $school_num AND order_num = $order_num");
// Calculate multiple order discounts
calcMultiOrderDiscounts($user_num,$schedule_num,$school_num);
header("Location: /?error_message=".urlencode(getLanguageText('TEXT-ORDER-DELETED')));
exit();
}
header("Location: /?error_message=".urlencode(getLanguageText('TEXT-NO-ITEMS-ORDERED')));
}
break;
case "completed":
include "hotlunch_orders.completed.php";
$naction = 'list';
break;
case "edit-header":
$PageTitle = getLanguageText('TEXT-EDIT-ORDER-HEADER');
$ButtonText = getLanguageText('TEXT-UPDATE-ORDER-HEADER');
$next_naction = "update-header";
include "hotlunch_order_header.form.php";
break;
case "update-header":
extract($_POST);
$order_num = $record_num;
// Get user_num for current ordered_by_num
$user_num = db_getVal("SELECT user_num FROM people WHERE record_num = $ordered_by_num");
// Handle change of ordered_by_num
if ($ordered_by_num != $selected_ordered_by_num) {
// Get original person info
$student = db_getVal("SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
$student_name = $student['first_name'].' '.$student['last_name'];
$oname = $student['last_name'].', '.$student['first_name'];
// Get new person info
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $selected_ordered_by_num");
$new_person = db_fetch_array($results);
$new_ordered_by_type = $new_person['people_type'];
$new_unum = $new_person['user_num'];
$nname = $new_person['first_name'] . ' ' . $new_person['last_name'];
// Update the order
db_query("UPDATE hotlunch_order_header SET ordered_by_num = $selected_ordered_by_num,ordered_by_type = '$new_ordered_by_type' WHERE school_num = $school_num AND record_num = $order_num");
db_query("UPDATE hotlunch_order_items SET ordered_by_num = $selected_ordered_by_num,ordered_by_type = '$new_ordered_by_type' WHERE school_num = $school_num AND order_num = $order_num");
logOrderChange($order_num, "ORDER REASSIGNED - NEW ORDERED BY", "hotlunch_orders.php");
// Move transaction entry to new user account
db_query("UPDATE user_account SET user_num = $new_unum,people_num = $selected_ordered_by_num WHERE school_num = $school_num AND user_num = $user_num AND order_num = $order_num");
// Set ordered_by_num to the new value
$ordered_by_num = $selected_ordered_by_num;
$user_num = $new_unum;
// Make activity log entry
$uid = db_escape_string($_SESSION['UserInfo']['userid']);
$ip = $_SESSION['LoginIP'];
$time = time();
$datetime = date("Y-m-d H:i:s",$time);
if (db_tableExists("activity_log")) {
db_query("insert into activity_log (school_num,userid,user_ip,activity_time,activity_datetime,activity,information) " .
"values ($school_num,'$uid','$ip',$time,'$datetime','ordered-by #$order_num changed $oname -> $nname',NULL)");
}
}
// Cleanup values for the database
$amount_paid = str_replace('$','',$amount_paid);
$amount_paid = number_format($amount_paid,2);
// Get existing order header record
$results = db_query("select * from hotlunch_order_header where school_num = $school_num and record_num = $record_num");
$oh = db_fetch_array($results);
$setValues = "status = '$status'";
if ($status != $oh['status']) {
if ($status == 'Paid') $setValues .= ", payment_method = 'Manual Posting'";
}
$setValues .= ", price_category = '" . db_escape_string($price_category) . "', delivered = '" . db_escape_string($delivered) . "'";
$setValues .= ", ordered_by_type = '$ordered_by_type'";
// Save order header data
$query = "update hotlunch_order_header " .
"set $setValues, " .
"source = '$source' " .
"where school_num = $school_num " .
"and record_num = $record_num";
db_query($query);
// echo("$query\n"); exit();
logOrderChange($record_num, "ORDER HEADER UPDATED", "hotlunch_orders.php");
// Check if order status was changed
$ostatus = $oh['status'];
// Check the order status
if ($status != $ostatus) {
// Get user_num
$ordered_by_num = $oh['ordered_by_num'];
$ordered_by_type = $oh['ordered_by_type'];
// Set other fields
$order_num = $record_num;
$people_num = $ordered_by_num;
$transaction_datetime = date("Y-m-d H:i:s",time());
$entered_time = time();
$note = "Order #$order_num: $ostatus -> $status ";
$transaction_type = 'TRX Note';
$transaction_amount = 0.00;
$entered_by_user_num = intval($_SESSION['UserInfo']['record_num']);
// If new status is Complimentary post a credit to the account
if ($status == 'Complimentary') {
$transaction_amount = -1 * $oh['order_total'];
$transaction_amount = floatval($transaction_amount);
$transaction_type = "Complimentary Credit";
$deleted = 'N';
$transaction_status = 'Open';
if ($transaction_amount != 0.00) $order_payments = "{" . $record_num . ":" . $transaction_amount . "}";
// Check to make sure the transaction is not posted already
$results = db_query("SELECT * FROM user_account WHERE school_num = $school_num AND user_num = $user_num AND order_num = $order_num AND transaction_type = '$transaction_type'");
if (db_num_rows($results) == 0) {
// Create user_account entry
$user_account = new Table("user_account");
$query = $user_account->BuildInsert();
db_query($query);
}
// Update order header
$today = date("Y-m-d",time());
$query = "UPDATE hotlunch_order_header " .
"SET amount_paid = 0, " .
"paid_date = '$today', " .
"payment_method = 'Complimentary' " .
"WHERE school_num = $school_num " .
"AND record_num = $record_num";
db_query($query);
logOrderChange($record_num, "ORDER PAID", "hotlunch_orders.php");
// Update user balance
updateUserBalance($user_num);
}
// If new status is Unpaid and previous status was Complimentary
if ($status == 'Unpaid' && $ostatus == 'Complimentary') {
// Delete user_account credit entry
if (isset($user_num) && $user_num > 0) {
db_query("delete from user_account where school_num = $school_num and user_num = $user_num and order_num = $order_num and transaction_type = 'Complimentary Credit'");
$query = "UPDATE user_account " .
"SET transaction_status = 'Open' " .
"WHERE school_num = $school_num " .
"AND order_num = $record_num";
db_query($query);
}
}
// If new status is Unpaid and previous status was Paid
if ($status == 'Unpaid' && $ostatus == 'Paid') {
$query = "UPDATE hotlunch_order_header " .
"SET amount_paid = 0, " .
"paid_date = NULL, " .
"payment_method = '' " .
"WHERE school_num = $school_num " .
"AND record_num = $record_num";
db_query($query);
logOrderChange($record_num, "ORDER STATUS CHANGED", "hotlunch_orders.php");
if (isset($user_num) && $user_num > 0) {
$query = "UPDATE user_account " .
"SET transaction_status = 'Open' " .
"WHERE school_num = $school_num " .
"AND order_num = $record_num";
db_query($query);
}
}
// Make activity log entry
$uid = db_escape_string($_SESSION['UserInfo']['userid']);
$ip = $_SESSION['LoginIP'];
$time = time();
if (db_tableExists("activity_log")) {
db_query("insert into activity_log (school_num,userid,user_ip,activity_time,activity,information) values ($school_num,'$uid','$ip',$time,'order-status #$order_num changed $ostatus -> $status',NULL)");
}
}
$naction = "list";
header("Location: /?action=orders&naction=list&schedule_num=$schedule_num&selected_order_num=$record_num&form_message=".urlencode(getLanguageText('TEXT-ORDER-HEADER-UPDATED')));
exit();
case "set-inactive":
$record_num = intval($_GET['order_num']);
$query = "UPDATE hotlunch_order_header SET status = 'Inactive' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $record_num " .
"and status = 'Unpaid'";
db_query($query);
logOrderChange($record_num, "ORDER STATUS CHANGED TO INACTIVE", "hotlunch_orders.php");
$form_message = "Order Status Has Been Updated";
$show_status = 'Unpaid';
$naction = "list";
break;
case "set-paid":
$record_num = intval($_GET['order_num']);
$query = "UPDATE hotlunch_order_header SET status = 'Paid' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $record_num " .
"and status = 'Unpaid'";
db_query($query);
logOrderChange($record_num, "ORDER STATUS CHANGED TO PAID", "hotlunch_orders.php");
$form_message = "Order Status Has Been Updated";
$show_status = 'Unpaid';
$naction = "list";
break;
case "set-unpaid":
$record_num = intval($_GET['order_num']);
$query = "UPDATE hotlunch_order_header SET status = 'Unpaid' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $record_num " .
"and status = 'Inactive'";
db_query($query);
logOrderChange($record_num, "ORDER STATUS CHANGED TO UNPAID", "hotlunch_orders.php");
$form_message = "Order Status Has Been Updated";
$show_status = 'Inactive';
$naction = "list";
break;
case "flag-delivered":
$record_num = intval($_GET['order_num']);
$query = "UPDATE hotlunch_order_header SET delivered = 'Y' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $record_num";
db_query($query);
logOrderChange($record_num, "ORDER DELIVERED", "hotlunch_orders.php");
$form_message = "Order Status Has Been Updated";
$show_all = 'Y';
$naction = "list";
break;
case "toggle-inactive-unpaid":
$query = "UPDATE hotlunch_order_header SET status = 'Unpaid' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and status = 'Inactive'";
db_query($query);
logOrderChange(0, "ORDERS CHANGED FROM INACTIVE TO UNPAID", "hotlunch_orders.php", $schedule_num);
$form_message = getLanguageText('MSG-INACTIVE-ORDERS-SET-UNPAID');
$show_status = 'Unpaid';
$naction = "list";
break;
case "toggle-unpaid-inactive":
$query = "UPDATE hotlunch_order_header SET status = 'Inactive' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and status = 'Unpaid'";
db_query($query);
logOrderChange(0, "ORDERS CHANGED FROM UNPAID TO INACTIVE", "hotlunch_orders.php", $schedule_num);
$form_message = getLanguageText('MSG-UNPAID-ORDERS-SET-INACTIVE');
$show_status = 'Inactive';
$naction = "list";
break;
case "toggle-unpaid-paid":
if (array_key_exists('balance_payable',$_GET) && $_GET['balance_payable'] == 'Y') {
$query = "SELECT hloh.*,p.user_num FROM hotlunch_order_header AS hloh, people AS p " .
"WHERE hloh.school_num = $school_num " .
"AND p.school_num = $base_school_num " .
"AND p.record_num = hloh.ordered_by_num " .
"AND hloh.schedule_num = $schedule_num " .
"AND hloh.status = 'Unpaid'";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
$onum = $row['record_num'];
$unum = $row['user_num'];
$balance = db_getVal("select sum(transaction_amount) as balance from user_account where school_num = $school_num and user_num = $unum AND (deleted != 'Y' OR deleted IS NULL)");
if ($balance <= 0) {
db_query("UPDATE hotlunch_order_header SET status = 'Paid' WHERE school_num = $school_num AND record_num = $onum");
logOrderChange($onum, "ORDER CHANGED FROM UNPAID TO PAID", "hotlunch_orders.php");
}
}
}
else {
$query = "UPDATE hotlunch_order_header SET status = 'Paid' " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND status = 'Unpaid'";
db_query($query);
logOrderChange(0, "ALL ORDERS SET TO UNPAID (PAID)", "hotlunch_orders.php");
}
$form_message = getLanguageText('MSG-UNPAID-ORDERS-SET-PAID');
$show_status = 'Paid';
$naction = "list";
break;
case "toggle-zerototal-paid":
$query = "UPDATE hotlunch_order_header SET status = 'Paid' " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND status = 'Unpaid' " .
"AND order_total = 0.00";
db_query($query);
logOrderChange(0, "ZERO TOTAL ORDERS SET TO PAID", "hotlunch_orders.php", $schedule_num);
$form_message = getLanguageText('MSG-UNPAID-ORDERS-SET-PAID');
$show_status = 'Paid';
$naction = "list";
break;
case "delete-unpaid":
case "delete-inactive":
case "delete-paid":
$status = 'Unpaid';
if ($naction == 'delete-inactive') $status = 'Inactive';
if ($naction == 'delete-paid') $status = 'Paid';
// Get schedule title
$schedule_name = $hotlunch_schedule['schedule_name'];
// Get matching orders
$query = "SELECT * FROM hotlunch_order_header " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND status = '$status'";
$orders = db_query($query);
// Process each order
while ($row = db_fetch_array($orders)) {
extract($row);
$order_total = $currencySymbol . number_format($row['order_total'],2);
$order_num = $record_num;
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
$person = db_fetch_array($results);
$user_num = intval($person['user_num']);
if (!isset($schedule_name)) $schedule_name = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num");
$lognote = $person['first_name'] . ' ' . $person['last_name'] . " - $schedule_name ($order_total)";
// Delete existing user_account entry for order
db_query("DELETE FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND schedule_num = $schedule_num " .
"AND order_num = $order_num " .
"AND transaction_type = 'Order'");
$entered_time = time();
$trx_time = date("Y-m-d H:i:s",$entered_time);
$lognote = db_escape_string($lognote);
$logmsg = 'Order Deleted';
$query = "INSERT INTO user_account " .
"(school_num,user_num,schedule_num,transaction_datetime,transaction_type,note,transaction_amount,transaction_fee,payment_method,payment_reference,order_payments,deleted,entered_time,transaction_status) " .
"VALUES ($school_num,$user_num,$schedule_num,'$trx_time','TRX Note','$logmsg - $lognote',0,0,NULL,'',NULL,'N',$entered_time,'Closed')";
db_query($query);
logOrderChange($order_num, "ORDER DELETED - ADMIN", "hotlunch_orders.php");
db_query("DELETE FROM hotlunch_order_header WHERE school_num = $school_num AND schedule_num = $schedule_num AND status = '$status' AND record_num = $order_num");
$items = db_query("SELECT * FROM hotlunch_order_items " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND ordered_by_num = $ordered_by_num " .
"AND order_num = $order_num");
while ($row = db_fetch_assoc($items)) {
$rnum = $row['record_num'];
db_query("DELETE FROM hotlunch_order_items WHERE school_num = $school_num AND record_num = $rnum");
}
// Calculate multiple order discounts
calcMultiOrderDiscounts($user_num,$schedule_num,$school_num);
}
$form_message = getLanguageText('MSG-ORDERS-DELETED');
$show_status = '';
$naction = "list";
break;
case "flag-paid":
case "flag-unpaid":
case "flag-inactive":
$status = 'Unpaid';
if ($naction == 'flag-inactive') $status = 'Inactive';
if ($naction == 'flag-paid') $status = 'Paid';
// Get matching orders
$query = "SELECT * FROM hotlunch_order_header " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND status = '$status'";
$orders = db_query($query);
// Process each order
while ($row = db_fetch_array($orders)) {
extract($row);
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
$row = db_fetch_array($results);
$user_num = $row['user_num'];
db_query("UPDATE users SET email_flag = 'Y' WHERE school_num = $base_school_num AND record_num = $user_num");
}
$num_entries = db_getVal("SELECT count(*) FROM users WHERE school_num = $base_school_num AND email_flag = 'Y'");
$form_message = getLanguageText('TEXT-FLAGGED'). ": $num_entries";
$naction = "list";
$show_status = $status;
break;
case "set-complimentary":
$record_num = $_GET['order_num'];
// Get existing order header record
$results = db_query("select * from hotlunch_order_header where school_num = $school_num and record_num = $record_num");
$oh = db_fetch_array($results);
// Get user_num
$ordered_by_num = $oh['ordered_by_num'];
$ordered_by_type = $oh['ordered_by_type'];
$user_num = db_getVal("SELECT user_num FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
// Set other fields
$order_num = $record_num;
$people_num = $ordered_by_num;
$transaction_datetime = date("Y-m-d H:i:s",time());
$entered_time = time();
$note = "Order #$order_num: $show_status -> Complimentary ";
$transaction_amount = -1 * $oh['order_total'];
$transaction_amount = floatval($transaction_amount);
$transaction_type = "Complimentary Credit";
$deleted = 'N';
if ($transaction_amount != 0.00) $order_payments = "{" . $record_num . ":" . $transaction_amount . "}";
// Create user_account entry
$user_account = new Table("user_account");
$query = $user_account->BuildInsert();
db_query($query);
// Update user balance
updateUserBalance($user_num);
// Update status
$query = "UPDATE hotlunch_order_header " .
"SET status = 'Complimentary', " .
"amount_paid = 0, " .
"payment_method = 'Complimentary' " .
"WHERE school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $record_num " .
"and status = '$show_status'";
db_query($query);
logOrderChange($record_num, "ORDER SET COMPLIMENTARY", "hotlunch_orders.php");
$form_message = "Order Status Has Been Updated";
$naction = "list";
break;
case "delete-confirmed":
extract($_GET);
$query = "select * from hotlunch_order_header " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $order_num";
$results = db_query($query);
$row = db_fetch_array($results);
$order_total = $row['order_total'];
$order_status = $row['status'];
$ordered_by_num = $row['ordered_by_num'];
$ordered_by_type = $row['ordered_by_type'];
$order_num = $row['record_num'];
if ($order_status == 'Paid') {
$error_message = getLanguageText('ERRORMSG-UNABLE-TO-DELETE-PAID-ORDERS');
$naction = 'list';
header("Location: /?action=orders&schedule_num=$schedule_num&show_all=$show_all&show_status=$show_status&show_source=$show_source" .
"&show_only=$show_only&error_message=".urlencode($error_message));
exit();
}
// Get student info
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $ordered_by_num");
if (db_num_rows($results)) {
$row = db_fetch_array($results);
if (array_key_exists('user_num', $row)) $user_num = intval($row['user_num']);
else $user_num = 0;
$order_total = $currencySymbol . number_format($order_total,2);
$lognote = $row['first_name'] . ' ' . $row['last_name'] . " - $schedule_name ($order_total)";
$entered_time = time();
$trx_time = date("Y-m-d H:i:s",$entered_time);
$lognote = db_escape_string($lognote);
$logmsg = 'Order Deleted';
$query = "INSERT INTO user_account " .
"(school_num,user_num,schedule_num,transaction_datetime,transaction_type,note,transaction_amount,transaction_fee,payment_method," .
"payment_reference,order_payments,deleted,entered_time,transaction_status) " .
"VALUES ($school_num,$user_num,$schedule_num,'$trx_time','TRX Note','$logmsg - $lognote',0,0,NULL,'',NULL,'N',$entered_time,'Closed')";
db_query($query);
}
// Delete order header
logOrderChange($order_num, "ORDER DELETED", "hotlunch_orders.php");
$query = "delete from hotlunch_order_header " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $order_num";
db_query($query);
// Delete order line items
$query = "select * from hotlunch_order_items " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and ordered_by_num = $ordered_by_num " .
"and order_num = $order_num";
$items = db_query($query);
while ($row = db_fetch_assoc($items)) {
$rnum = $row['record_num'];
db_query("DELETE FROM hotlunch_order_items WHERE school_num = $school_num AND record_num = $rnum");
}
// Delete account transaction entry
$user_num = db_getVal("select user_num from people where school_num = $base_school_num and record_num = $ordered_by_num");
if (isset($user_num) && $user_num > 0) {
$query = "delete from user_account " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and user_num = $user_num " .
"and order_num = $order_num";
db_query($query);
// Update user balance
updateUserBalance($user_num);
// Calculate multiple order discounts
calcMultiOrderDiscounts($user_num,$schedule_num,$school_num);
}
$form_message = getLanguageText('RECORD-DELETED-MSG');
$naction = 'list';
break;
case "select":
case "list":
default:
$naction = 'list';
break;
}
// Update the Concession order to be paid in full
db_query("update hotlunch_order_header set amount_paid = order_total where school_num = $school_num and schedule_num = $schedule_num and ordered_by_type = 'Concession'");
// List current orders for this schedule if user type is allowed
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team','Supplier');
if ($naction == 'list' && checkPermission($AllowedUserTypes) == 1) {
$message_width = $default_data_width;
include "form.messages.php";
echo("
$TitleText
\n"); listDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign); } echo("