Files
HotLunches/hotlunch_schedules.php
T
2026-10-19 15:22:52 -07:00

917 lines
42 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
//
// Process all actions to list and edit records
//
$CurrentTable = "hotlunch_schedules";
$DeleteField = "schedule_name";
$dSeparator = " ";
$FormFile = "hotlunch_schedules.form.php";
$TitleText = getLanguageText('TEXT-SCHEDULE');
// Start the template and output buffering
startTemplate();
$templatePageTitle = "$TitleText " . getLanguageText('TEXT-ADMINISTRATION');
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Administration Team','Schedule Team','Supplier');
if (!in_array($_SESSION['UserInfo']['type'],$AllowedUserTypes)) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
include "form.messages.php";
endTemplate();
exit();
}
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
switch (strtolower($naction)) {
case "add":
$next_naction = "insert";
$active = 'Y';
$display = 'Y';
include $FormFile;
break;
case "insert":
extract($_POST);
// startLog("hotlunch_schedules");
// Setup defaults for school fees sites
if ($siteType != 'hotlunch') {
$schedule_start_date = date("Y-m-d",strtotime($end_order_datetime) + 60 * 60 * 26);
$schedule_end_date = date("Y-m-d",strtotime($end_order_datetime) + 60 * 60 * 26);
$lunch_days = "Mon,Tue,Wed,Thu,Fri,Sat,Sun";
$check_for_missed_menus = 'N';
$discount_offered = 0;
$discount_type = 'Amount';
$discount_order_minimum = 0;
$paper_order_charge = 0;
$tax_rate = 0;
$days_prior_to_order_date = 0;
$hide_unavailable_dates = 'N';
$display_instructions = 'N';
$max_volunteers = 0;
}
if (!isset($display_menu_date)) $display_menu_date = 'Y';
if (!in_array($schedule_type,array('Hot Lunch','Date Sensitive'))) {
$display_menu_date = 'N';
}
if (!isset($custom_menu_end_dates)) $custom_menu_end_dates = 'N';
if ($custom_menu_end_dates == 'Y') $days_prior_to_order_date = 0;
if (!isset($menu_display_mode)) $menu_display_mode = 'Form';
if ($menu_display_mode != 'Form') $display_menu_date = 'Y';
// Validate the schedule data entered
$error = 'N';
if ($display_menu_date == 'Y' && $error == 'N' && $start_order_datetime > "$schedule_start_date 00:00:00") {
$error = 'Y';
$error_message = getLanguageText('ERRORMSG-DATE-ORDER');
}
if ($error == 'N' && $schedule_start_date > $schedule_end_date) {
$error = 'Y';
$error_message = getLanguageText('ERRORMSG-DATE-ORDER');
}
$numDays = intval(strtotime($schedule_end_date) - strtotime($schedule_start_date)) / (60 * 60 * 24);
if ($error == 'N' && $numDays > 300) {
$error = 'Y';
$error_message = getLanguageText('ERRORMSG-INVALID-DATE-RANGE');
}
// Ensure that some lunch days are specified
if ($error == 'N' && isset($lunch_days) && is_array($lunch_days) && count($lunch_days) == 0) {
$error = 'Y';
$error_message = getLanguageText('ERRORMSG-NO-ORDER-DAYS');
}
// If there is an error return to the form
if ($error == 'Y') {
$naction = "add";
$next_naction = "insert";
$active = 'Y';
include $FormFile;
break;
}
// Reformat the lunch_days
if (isset($lunch_days)) {
$lunch_days_save = $lunch_days;
if (is_array($lunch_days)) $lunch_days = implode(",",$lunch_days);
else {
$lunch_days = "";
$lunch_days_save = array();
}
}
else {
$lunch_days = "";
$lunch_days_save = array();
}
$supplier_source_school = $school_num;
$entry = array();
if (isset($school_num)) $entry['school_num'] = $school_num;
if (isset($sequence)) $entry['sequence'] = $sequence;
if (isset($schedule_name)) $entry['schedule_name'] = $schedule_name;
if (isset($start_order_datetime)) $entry['start_order_datetime'] = $start_order_datetime;
if (isset($end_order_datetime)) $entry['end_order_datetime'] = $end_order_datetime;
if (isset($start_order_date)) $entry['start_order_date'] = $start_order_date;
if (isset($end_order_date)) $entry['end_order_date'] = $end_order_date;
if (isset($end_order_time)) $entry['end_order_time'] = $end_order_time;
if (isset($custom_menu_end_dates)) $entry['custom_menu_end_dates'] = $custom_menu_end_dates;
if (isset($schedule_start_date)) $entry['schedule_start_date'] = $schedule_start_date;
if (isset($schedule_end_date)) $entry['schedule_end_date'] = $schedule_end_date;
if (isset($default_menu_title)) $entry['default_menu_title'] = $default_menu_title;
if (isset($lunch_days)) $entry['lunch_days'] = $lunch_days;
if (isset($status)) $entry['status'] = $status;
if (isset($schedule_type)) $entry['schedule_type'] = $schedule_type;
if (isset($schedule_prices)) $entry['schedule_prices'] = $schedule_prices;
if (isset($order_button_text)) $entry['order_button_text'] = $order_button_text;
if (isset($display_on_calendar)) $entry['display_on_calendar'] = $display_on_calendar;
if (isset($schedule_for)) $entry['schedule_for'] = $schedule_for;
if (isset($edit_paid_orders)) $entry['edit_paid_orders'] = $edit_paid_orders;
if (isset($edit_complimentary_orders)) $entry['edit_complimentary_orders'] = $edit_complimentary_orders;
if (isset($edit_linked_menus)) $entry['edit_linked_menus'] = $edit_linked_menus;
if (isset($menu_display_mode)) $entry['menu_display_mode'] = $menu_display_mode;
if (isset($calendar_month_breaks)) $entry['calendar_month_breaks'] = $calendar_month_breaks;
if (isset($display_title_or_label)) $entry['display_title_or_label'] = $display_title_or_label;
if (isset($display_menu_title)) $entry['display_menu_title'] = $display_menu_title;
if (isset($display_menu_headings)) $entry['display_menu_headings'] = $display_menu_headings;
if (isset($display_item_price)) $entry['display_item_price'] = $display_item_price;
if (isset($display_product_thumbnail)) $entry['display_product_thumbnail'] = $display_product_thumbnail;
if (isset($schedule_print_format)) $entry['schedule_print_format'] = $schedule_print_format;
if (isset($schedule_receipts_description)) $entry['schedule_receipts_description'] = $schedule_receipts_description;
if (isset($allow_multiple_orders)) $entry['allow_multiple_orders'] = $allow_multiple_orders;
if (isset($check_for_missed_menus)) $entry['check_for_missed_menus'] = $check_for_missed_menus;
if (isset($discount_offered)) $entry['discount_offered'] = $discount_offered;
if (isset($discount_type)) $entry['discount_type'] = $discount_type;
if (isset($discount_order_minimum)) $entry['discount_order_minimum'] = $discount_order_minimum;
if (isset($discount_expiry_date)) $entry['discount_expiry_date'] = $discount_expiry_date;
if (isset($paper_order_charge)) $entry['paper_order_charge'] = $paper_order_charge;
if (isset($paper_order_message)) $entry['paper_order_message'] = $paper_order_message;
if (isset($late_charge)) $entry['late_charge'] = $late_charge;
if (isset($late_charge_date)) $entry['late_charge_date'] = $late_charge_date;
if (isset($tax_rate)) $entry['tax_rate'] = $tax_rate;
if (isset($tax_description)) $entry['tax_description'] = $tax_description;
if (isset($days_prior_to_order_date)) $entry['days_prior_to_order_date'] = $days_prior_to_order_date;
if (isset($order_until_hour)) $entry['order_until_hour'] = $order_until_hour;
if (isset($menu_cutoff_date)) $entry['menu_cutoff_date'] = $menu_cutoff_date;
if (isset($hide_unavailable_dates)) $entry['hide_unavailable_dates'] = $hide_unavailable_dates;
if (isset($additional_charge)) $entry['additional_charge'] = $additional_charge;
if (isset($additional_charge_message)) $entry['additional_charge_message'] = $additional_charge_message;
if (isset($qty_warning_limit)) $entry['qty_warning_limit'] = $qty_warning_limit;
if (isset($qty_absolute_limit)) $entry['qty_absolute_limit'] = $qty_absolute_limit;
if (isset($display_menu_date)) $entry['display_menu_date'] = $display_menu_date;
if (isset($display_instructions)) $entry['display_instructions'] = $display_instructions;
if (isset($description)) $entry['description'] = $description;
if (isset($paper_description)) $entry['paper_description'] = $paper_description;
if (isset($paper_footer)) $entry['paper_footer'] = $paper_footer;
if (isset($notification_email)) $entry['notification_email'] = $notification_email;
if (isset($notification_order_details)) $entry['notification_order_details'] = $notification_order_details;
if (isset($email_message)) $entry['email_message'] = $email_message;
if (isset($order_entered_message)) $entry['order_entered_message'] = $order_entered_message;
if (isset($volunteer_signup)) $entry['volunteer_signup'] = $volunteer_signup;
if (isset($schedule_volunteer_message)) $entry['schedule_volunteer_message'] = $schedule_volunteer_message;
if (isset($min_volunteers)) $entry['min_volunteers'] = $min_volunteers;
if (isset($max_volunteers)) $entry['max_volunteers'] = $max_volunteers;
if (isset($class_sort_field)) $entry['class_sort_field'] = $class_sort_field;
if (isset($implement_order_notes)) $entry['implement_order_notes'] = $implement_order_notes;
if (isset($order_notes_message)) $entry['order_notes_message'] = $order_notes_message;
if (isset($implement_order_notes2)) $entry['implement_order_notes2'] = $implement_order_notes2;
if (isset($order_notes_message2)) $entry['order_notes_message2'] = $order_notes_message2;
if (isset($supplier_num)) $entry['supplier_num'] = $supplier_num;
if (isset($supplier_source_school)) $entry['supplier_source_school'] = $supplier_source_school;
if (isset($last_link_update)) $entry['last_link_update'] = $last_link_update;
// Insert primary record
$table = new Table("$CurrentTable");
$query = $table->BuildInsert($entry);
writeLog($query);
db_query($query);
$schedule_num = db_insert_id();
// Handle selected documents
db_query("delete from hotlunch_schedules_documents where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_documents) && count($selected_documents) > 0) {
for ($i = 0; $i < count($selected_documents); $i++) {
if ($selected_documents[$i] == 0) continue;
$doc_num = $selected_documents[$i];
db_query("insert into hotlunch_schedules_documents values ($school_num,$schedule_num,$doc_num)");
}
}
// Handle selected classes
db_query("delete from hotlunch_schedules_classes where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_classes) && count($selected_classes) > 0) {
for ($i = 0; $i < count($selected_classes); $i++) {
if ($selected_classes[$i] == 0) continue;
$class_num = $selected_classes[$i];
db_query("insert into hotlunch_schedules_classes values ($school_num,$schedule_num,$class_num)");
}
}
// Handle selected categories
db_query("delete from hotlunch_schedules_categories where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_categories) && count($selected_categories) > 0) {
for ($i = 0; $i < count($selected_categories); $i++) {
if ($selected_categories[$i] == 0) continue;
$category_num = $selected_categories[$i];
db_query("insert into hotlunch_schedules_categories values ($school_num,$schedule_num,$category_num)");
}
}
// Handle selected people
db_query("delete from hotlunch_schedules_people where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_people) && count($selected_people) > 0) {
for ($i = 0; $i < count($selected_people); $i++) {
if ($selected_people[$i] == 0) continue;
$user_num = $selected_people[$i];
db_query("insert into hotlunch_schedules_people values ($school_num,$schedule_num,$user_num)");
}
}
// Process lunch menu dates
$menu_dates = new Table("hotlunch_menu_dates");
$current_date = $schedule_start_date;
$current_time = strtotime($current_date) + 12 * 60 * 60;
$error_message = "";
$menuCount = 0;
while ((($siteType == 'hotlunch' || $siteType == 'fundraising') && $current_date <= $schedule_end_date) && $menuCount < 300) {
$day = date("D",$current_time);
if (isset($lunch_days_save) && in_array($day,$lunch_days_save)) {
switch ($default_menu_title) {
case 'dayofweek':
$menu_title = date("l",$current_time);
break;
case 'longdate':
$menu_title = date("l F jS",$current_time);
break;
case 'shortdate':
$menu_title = date("l jS",$current_time);
break;
default:
$menu_title = $default_menu_title;
break;
}
$menu_date = $current_date;
$menu_end_order_datetime = $current_date . " 00:00:00";
$menu_type = "Regular";
$status = 'Active';
$order_format = 'Quantity';
$display_supplier_code = 'N';
$order_revenue = 0.00;
$other_revenue = 0.00;
$supplier_costs = 0.00;
$other_costs = 0.00;
$net_revenue = 0.00;
$menu_link = 'No';
$source_menu = 0;
$group_a_min = 0;
$group_a = 0;
$group_b = 0;
$group_c = 0;
$group_d = 0;
$group_e = 0;
$group_f = 0;
$group_g = 0;
$group_h = 0;
$group_i = 0;
$group_j = 0;
$group_k = 0;
$group_l = 0;
$group_m = 0;
$group_b_a_required = 'N';
$group_c_a_required = 'N';
$group_d_a_required = 'N';
$group_e_a_required = 'N';
$group_f_a_required = 'N';
$group_g_a_required = 'N';
$group_h_a_required = 'N';
$group_i_a_required = 'N';
$group_j_a_required = 'N';
$group_k_a_required = 'N';
$group_l_a_required = 'N';
$group_m_a_required = 'N';
$group_b_mandatory = 'N';
$group_c_mandatory = 'N';
$group_d_mandatory = 'N';
$group_e_mandatory = 'N';
$group_f_mandatory = 'N';
$group_g_mandatory = 'N';
$group_h_mandatory = 'N';
$group_i_mandatory = 'N';
$group_j_mandatory = 'N';
$group_k_mandatory = 'N';
$group_l_mandatory = 'N';
$group_m_mandatory = 'N';
$num_volunteer_override = 'D';
$max_volunteers = 0;
$email_message = "";
$active = 'Y';
$available = 'Y';
$display = 'Y';
// Create the requested number of menus per date
for ($i = 0; $i < $menus_per_date; $i++) {
$query = $menu_dates->BuildInsert();
writeLog($query);
db_query($query);
$menuCount++;
}
}
$current_time += 24 * 60 * 60;
$current_date = date("Y-m-d",$current_time);
if ($menuCount > 295) {
$error_message = getLanguageText('ERRORMSG-INVALID-DATE-RANGE');
}
}
writeLog("done");
$form_message = getLanguageText('RECORD-INSERTED-MSG');
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "edit":
$PageTitle = getLanguageText('RECORD-UPDATE-ENTRY') . " - $TitleText";
$ButtonText = getLanguageText('RECORD-UPDATE-ENTRY');
$next_naction = "update";
// Get current record
$record_num = intval($_GET['record_num']);
$query = "select * from $CurrentTable where record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 1) {
$row = db_fetch_array($results);
extract($row);
$schedule_num = $record_num;
include $FormFile;
}
else {
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
break;
case "update":
extract($_POST);
$schedule_num = $record_num;
if (isset($custom_menu_end_dates) && $custom_menu_end_dates == 'Y') $days_prior_to_order_date = 0;
if ($menu_display_mode != 'Form') $display_menu_date = 'Y';
if (!in_array($schedule_type,array('Hot Lunch','Date Sensitive'))) {
$display_menu_date = 'N';
}
// Reformat the lunch_days
if (isset($lunch_days) && is_array($lunch_days)) $lunch_days = implode(",",$lunch_days);
else $lunch_days = "";
// Update schedule
$table = new Table("$CurrentTable");
$query = $table->BuildUpdate();
db_query($query);
// Handle selected documents
db_query("delete from hotlunch_schedules_documents where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_documents) && count($selected_documents) > 0) {
for ($i = 0; $i < count($selected_documents); $i++) {
if ($selected_documents[$i] == 0) continue;
$doc_num = $selected_documents[$i];
db_query("insert into hotlunch_schedules_documents values ($school_num,$schedule_num,$doc_num)");
}
}
// Handle selected classes
db_query("delete from hotlunch_schedules_classes where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_classes) && count($selected_classes) > 0) {
for ($i = 0; $i < count($selected_classes); $i++) {
if ($selected_classes[$i] == 0) continue;
$class_num = $selected_classes[$i];
db_query("insert into hotlunch_schedules_classes values ($school_num,$schedule_num,$class_num)");
}
}
// Handle selected categories
db_query("delete from hotlunch_schedules_categories where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_categories) && $select_category == 'Selected Categories' && count($selected_categories) > 0) {
for ($i = 0; $i < count($selected_categories); $i++) {
if ($selected_categories[$i] == 0) continue;
$category_num = $selected_categories[$i];
db_query("insert into hotlunch_schedules_categories values ($school_num,$schedule_num,$category_num)");
}
}
// Handle selected people
db_query("delete from hotlunch_schedules_people where school_num = $school_num and schedule_num = $schedule_num");
if (isset($selected_people) && count($selected_people) > 0) {
for ($i = 0; $i < count($selected_people); $i++) {
if ($selected_people[$i] == 0) continue;
$user_num = $selected_people[$i];
db_query("insert into hotlunch_schedules_people values ($school_num,$schedule_num,$user_num)");
}
}
$form_message = getLanguageText('RECORD-UPDATED-MSG');
if ($next_action == "summary") header("Location: /?action=schedule-reports&schedule_num=$schedule_num&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
else header("Location: /?action=schedules&naction=list&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "set-schedule-pending":
$record_num = intval($_GET['record_num']);
// Set to Pending the current record
$query = "update $CurrentTable set status = 'Pending' where school_num = $school_num and record_num = $record_num";
db_query($query);
$form_message = getLanguageText('RECORD-UPDATED-MSG');
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "activate-schedule":
$record_num = intval($_GET['record_num']);
// Activate the current record
$query = "update $CurrentTable set status = 'Active' where school_num = $school_num and record_num = $record_num";
db_query($query);
$form_message = getLanguageText('RECORD-UPDATED-MSG');
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "complete-schedule":
$record_num = intval($_GET['record_num']);
// Close the current record
$query = "update $CurrentTable set status = 'Completed' where school_num = $school_num and record_num = $record_num";
db_query($query);
$form_message = getLanguageText('RECORD-UPDATED-MSG');
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "delete":
$record_num = intval($_GET['record_num']);
$query = "select * from $CurrentTable where record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 1) {
$row = db_fetch_array($results);
extract($row);
$dFields = explode(",",$DeleteField);
$dTitle = "$TitleText ";
for ($i = 0; $i < count($dFields); $i++) {
$dTitle .= $row[$dFields[$i]] . $dSeparator;
}
include "delete.form.php";
}
else {
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
break;
case "delete-confirmed":
$record_num = intval($_GET['record_num']);
// Delete the current record
$query = "update $CurrentTable set status = 'Deleted' where school_num = $school_num and record_num = $record_num";
db_query($query);
$form_message = getLanguageText('RECORD-DELETED-MSG');
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "sort-by-start-order-date":
$sequence = 1;
$results = db_query("SELECT * FROM hotlunch_schedules WHERE school_num = $school_num AND status != 'Deleted' ORDER BY start_order_datetime");
while ($row = db_fetch_assoc($results)) {
$rnum = $row['record_num'];
db_query("UPDATE hotlunch_schedules SET sequence = $sequence WHERE school_num = $school_num AND record_num = $rnum");
$sequence++;
}
$naction = "list";
break;
case "set-old-to-completed":
$new_status = 'Completed';
$date = date("Y-m-d",time() - 24 * 60 * 60 * 60);
db_query("UPDATE hotlunch_schedules SET status = '$new_status' WHERE school_num = $school_num AND status IN ('Active','Completed') AND schedule_end_date <= '$date'");
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "set-old-to-deleted":
$new_status = 'Deleted';
$date = date("Y-m-d",time() - 24 * 60 * 60 * 60);
db_query("UPDATE hotlunch_schedules SET status = '$new_status' WHERE school_num = $school_num AND status IN ('Active','Completed','Closed') AND schedule_end_date <= '$date'");
$naction = "list";
if (array_key_exists('next_naction',$_GET)) $naction = $_GET['next_naction'];
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
default:
break;
}
//
// List all records if naction is "list"
//
if ($naction == "list" || $naction == 'list-all' || $naction == 'list-deleted') {
$scriptName = str_replace("/m/data1/app.hotlunches.net/","",__FILE__);
include "help.docs.php";
// Manage supplier schedules
$insert_new = 'Y';
$swhere = "";
if ($_SESSION['UserInfo']['type'] == 'Supplier') {
$swhere = " and supplier_num = " . $_SESSION['UserInfo']['supplier_num'];
}
// Get records to display
$columnHeaders = array(getLanguageText('TEXT-SCHEDULE'),
getLanguageText('TEXT-START-ORDER'),
getLanguageText('TEXT-END-ORDER'),
getLanguageText('TEXT-STATUS'),
getLanguageText('TEXT-SCHEDULE-TYPE'),
getLanguageText('TEXT-MENUS'),
getLanguageText('TEXT-ORDERS'));
$columnAlign = array('left','left','left','center','center','center','center','center','center','center','center');
switch ($naction) {
case 'list':
$today = date("Y-m-d",time() - 60 * 60 * 24 * 2);
$now = date("Y-m-d H:i:00",time() - 60 * 60 * 24 * 2);
$query = "select schedule_num,max(menu_date) from hotlunch_schedules AS hls, hotlunch_menu_dates AS hlmd " .
"where hlmd.school_num = $school_num " .
"and hls.school_num = $school_num " .
"and hlmd.menu_date >= '$today' " .
"and hlmd.schedule_num = hls.record_num " .
"and hls.status in ('Pending','Active') " .
"GROUP BY 1";
$menudates = db_query($query);
$mDateSchedules = "";
while ($row = db_fetch_array($menudates)) {
if (strlen($mDateSchedules)) $mDateSchedules .= ",";
$mDateSchedules .= $row['schedule_num'];
}
if (strlen($mDateSchedules)) $mDateSchedules = "OR record_num IN ($mDateSchedules)";
$query = "select hls.* " .
"from hotlunch_schedules as hls " .
"where hls.school_num = $school_num " .
"and hls.status != 'Deleted' " .
"and (hls.schedule_end_date >= '$today' OR hls.end_order_datetime >= '$now' $mDateSchedules) " .
"$swhere " .
"order by $scheduleSortOrder";
break;
case 'list-all':
$query = "select hls.* " .
"from hotlunch_schedules as hls " .
"where hls.school_num = $school_num " .
"and hls.status != 'Deleted' " .
$swhere .
"order by schedule_start_date DESC";
break;
case 'list-deleted':
$query = "select hls.* " .
"from hotlunch_schedules as hls " .
"where hls.school_num = $school_num " .
"and hls.status = 'Deleted' " .
$swhere .
"order by schedule_start_date DESC";
break;
}
$results = db_query($query);
$otipSpans = "";
$data = array();
$count = 0;
while ($row = db_fetch_array($results)) {
extract($row);
// Determine which classes have access to this schedule
$classList = "";
$selectedClasses = db_query("SELECT * FROM hotlunch_schedules_classes WHERE school_num = $school_num AND schedule_num = $record_num");
$numClasses = db_num_rows($selectedClasses);
if ($numClasses == 0) $scheduleAccess = $GlobalText['AllClasses'];
else {
$scheduleAccess = $GlobalText['SelectedClasses'] . " ($numClasses)";
$classes = "";
while ($row = db_fetch_assoc($selectedClasses)) {
$cnum = $row['class_num'];
$classes .= "(" . getClassInfo($cnum,'internal') . ")<br>";
}
$classList = sprintf($otipROW2,"",$classes);
}
// Determine the number of menu dates
$num_dates = db_getVal("SELECT count(*) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $record_num");
// Determine the number of menu dates
$num_orders = db_getVal("SELECT count(*) FROM hotlunch_order_header WHERE school_num = $school_num AND schedule_num = $record_num AND ordered_by_type != 'Concession'");
$span_id = "schedule_$record_num";
$start_order_datet = substr($start_order_datetime,0,16);
$end_order_datet = substr($end_order_datetime,0,16);
$otipSpans .= "<span id='$span_id'>" . $otipTABLE .
sprintf($otipROW2,getLanguageText('TEXT-SCHEDULE') . ": ",$schedule_name) .
sprintf($otipROW2,getLanguageText('TEXT-START-ORDER') . ": ",$start_order_datet) .
sprintf($otipROW2,getLanguageText('TEXT-END-ORDER') . ": ",$end_order_datet);
if ($schedule_type == 'Hot Lunch' || $schedule_type == 'Date Sensitive') {
$otipSpans .= sprintf($otipROW2,getLanguageText('TEXT-SCHEDULE-START') . ": ",$schedule_start_date) .
sprintf($otipROW2,getLanguageText('TEXT-SCHEDULE-END') . ": ",$schedule_end_date);
}
$otipSpans .= sprintf($otipROW2,getLanguageText('TEXT-STATUS') . "Status: ",$status) .
sprintf($otipROW2,getLanguageText('TEXT-TYPE') . ": ",$schedule_type) .
$otipROW21hr .
sprintf($otipROW2,getLanguageText('TEXT-WARNING-LIMIT') . ": ",$qty_warning_limit) .
sprintf($otipROW2,getLanguageText('TEXT-ABSOLUTE-LIMIT') . ": ",$qty_absolute_limit) .
sprintf($otipROW2,getLanguageText('TEXT-DISPLAY-MENU-DATES') . ": ",$display_menu_date) .
sprintf($otipROW2,getLanguageText('TEXT-DISPLAY-PRICES') . ": ",$schedule_prices);
// Other schedule parameters
if ($end_order_datetime > $schedule_start_date) {
$otipSpans .= sprintf($otipROW2,"Days Prior to Meal Date :",$days_prior_to_order_date);
}
// Discount info
if ($discount_offered > 0) {
$currency = '';
$percentage = '';
if ($discount_type == 'Amount') $currency = $school_record['currency_symbol'];
if ($discount_type == 'Percentage') $percentage = '%';
$otipSpans .= $otipROW21hr .
sprintf($otipROW2,"Discount Offered :",$currency . $discount_offered . $percentage) .
sprintf($otipROW2,"Discount Minimum Order :",$school_record['currency_symbol'] . $discount_order_minimum) .
sprintf($otipROW2,"Discount Offered Until :",$discount_expiry_date);
}
// Tax info
if ($tax_rate > 0) {
$otipSpans .= $otipROW21hr .
sprintf($otipROW2,"Tax Rate :",$tax_rate . '%') .
sprintf($otipROW2,"Tax Description :",$tax_description);
}
$currency = $school_record['currency_symbol'];
if ($paper_order_charge > 0) {
$otipSpans .= sprintf($otipROW2,"Paper Order Charge :",$currency . $paper_order_charge) .
sprintf($otipROW2,"Paper Order Charge Message :",$paper_order_message);
}
if ($late_charge > 0) {
$otipSpans .= sprintf($otipROW2,"Late Order Charge :",$currency . $late_charge) .
sprintf($otipROW2,"Late Order Date :",$late_charge_date);
}
if ($additional_charge > 0) {
$otipSpans .= sprintf($otipROW2,"Additional Charge :",$currency . $additional_charge) .
sprintf($otipROW2,"Additional Charge Message :",$additional_charge_message);
}
// Number of orders
$hr = false;
$orderStatus = array('Paid','Unpaid','Complimentary','Pending','Inactive');
for ($i = 0; $i < count($orderStatus); $i++) {
$cStatus = $orderStatus[$i];
$numOrders = db_getVal("SELECT count(*) FROM hotlunch_order_header WHERE school_num = $school_num AND schedule_num = $record_num AND status = '$cStatus'");
$amtOrders = db_getVal("SELECT sum(order_total) FROM hotlunch_order_header WHERE school_num = $school_num AND schedule_num = $record_num AND status = '$cStatus'");
if ($numOrders) {
if (!$hr) {
$otipSpans .= $otipROW21hr;
$hr = true;
}
$otipSpans .= sprintf($otipROW2,"$cStatus Orders :",$numOrders . " - $currency" . number_format($amtOrders,2));
}
}
if ($schedule_type == 'Hot Lunch' || $schedule_type == 'Date Sensitive') {
$first_menu_date = db_getVal("SELECT min(menu_date) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $record_num AND menu_type != 'Footer'");
$last_menu_date = db_getVal("SELECT max(menu_date) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $record_num AND menu_type != 'Footer'");
$otipSpans .= $otipROW21hr .
sprintf($otipROW2,"First Menu Date :",$first_menu_date) .
sprintf($otipROW2,"Last Menu Date :",$last_menu_date);
}
$otipSpans .= $otipROW21hr .
sprintf($otipROW2,getLanguageText('TEXT-SCHEDULE-ACCESS') . ": ",$scheduleAccess) .
$classList;
$otipSpans .= "</table></span>\n";
$schedule_name = "<b><a href='?action=schedule-reports&schedule_num=$record_num' onmouseover=\"TagToTip('$span_id')\" onmouseout=\"UnTip()\">$schedule_name</a></b><br>" .
"<span class='small'>$scheduleAccess</span>";
$sdate = dateString('shortdatetime',strtotime($start_order_datetime))."<br><span class='small'>".date("Y",strtotime($start_order_datetime));
$edate = dateString('shortdatetime',strtotime($end_order_datetime))."<br><span class='small'>".date("Y",strtotime($end_order_datetime));
$statusText = getLanguageText('TEXT-'.$status);
$typeText = getLanguageText('TEXT-'.$schedule_type);
$data[$count] = array($schedule_name,
$sdate,
$edate,
"<span class='status-span' id='status-$record_num' rnum='$record_num' status='$status'>$statusText</span>",
$typeText,
$num_dates,
$num_orders,
'record_num' => $record_num);
$count++;
}
$message_width = $default_data_width;
include "form.messages.php";
echo("<center>\n");
echo("<p><b>$TitleText List</b></p>\n");
echo("</center>\n");
$edit_icon = "<img src='images/icons/edit24.png' alt='Edit Schedule' border='0'>";
$delete_icon = "<img src='images/icons/delete24.png' alt='Delete Schedule' border='0'>";
$pending_icon = "<img src='images/icons/pause24.png' alt='Set Schedule to Pending' border='0'>";
$activate_icon = "<img src='images/icons/play24.png' alt='Activate Schedule' border='0'>";
$close_icon = "<img src='images/icons/stop24.png' alt='Close Schedule' border='0'>";
$order_icon = "<img src='images/icons/textfile24.png' alt='Order Order Form' border='0'>";
$dates_icon = "<img src='images/icons/calendar24.png' alt='Order Menus' border='0'>";
$summary_icon = "<img src='images/icons/configure24.png' alt='Schedule Summary Page' border='0'>";
switch ($_SESSION['UserInfo']['type']) {
case 'Supplier':
$commands = array(
"<a href='?action=schedules&naction=edit&record_num=%d' title='Edit Schedule'>$edit_icon</a>",
"<a href='?action=menu-dates&naction=list&schedule_num=%d' title='Edit Menus'>$dates_icon</a>",
"<a href='?action=schedule-reports&schedule_num=%d' title='Schedule Summary Page'>$summary_icon</a>"
);
$insert_new = 'N';
break;
case 'Schedule Team':
$commands = array(
"<a href='?action=menu-dates&naction=list&schedule_num=%d' title='Edit Menus'>$dates_icon</a>",
"<a href='?action=schedule-reports&schedule_num=%d' title='Schedule Summary Page'>$summary_icon</a>"
);
$insert_new = 'N';
break;
default:
$commands = array();
$commands[] = "<a href='?action=schedules&naction=edit&record_num=%d' title='Edit Schedule'>$edit_icon</a>";
$text = getLanguageText('TEXT-SET-STATUS-TO-PENDING');
$commands[] = "<a href='#' class='update-status' status='Pending' snum='%d' title='Set Schedule to Pending' onclick='return confirm(\"$text\");'>$pending_icon</a>";
$text = getLanguageText('TEXT-SET-STATUS-TO-ACTIVE');
$commands[] = "<a href='#' class='update-status' status='Active' snum='%d' title='Activate Schedule' onclick='return confirm(\"$text\");'>$activate_icon</a>";
$text = getLanguageText('TEXT-SET-STATUS-TO-COMPLETED');
$commands[] = "<a href='#' class='update-status' status='Completed' snum='%d' title='Complete Schedule' onclick='return confirm(\"$text\");'>$close_icon</a>";
$text = getLanguageText('TEXT-SET-STATUS-TO-DELETED');
$commands[] = "<a href='#' class='update-status' status='Deleted' snum='%d' title='Delete Schedule' onclick='return confirm(\"$text\");'>$delete_icon</a>";
$commands[] = "<a href='?action=menu-dates&naction=list&schedule_num=%d' title='Edit Menus'>$dates_icon</a>";
$commands[] = "<a href='?action=schedule-reports&schedule_num=%d' title='Schedule Summary Page'>$summary_icon</a>";
break;
}
if ($school_record['schedule_sort'] == 'sequence') {
$customTableID = "schedules-table";
$useRowIDS = true;
include "table.dnd.php";
}
listDataCustom($data,$columnHeaders,$action,$commands,$insert_new,$columnAlign);
if (count($data)) {
echo("<table>\n<tr>\n");
echo("<td><a href='?action=schedules&naction=sort-by-start-order-date' class='btn btn--primary>'>" . getLanguageText('TEXT-SORT-BY-START-ORDER-DATE') . "</a></td>");
echo("<td><a href='?action=schedules&naction=set-old-to-completed' class='btn btn--primary>'>" . getLanguageText('TEXT-SET-OLD-TO-COMPLETED') . "</a></td>");
echo("<td><a href='?action=schedules&naction=set-old-to-deleted' class='btn btn--primary>'>" . getLanguageText('TEXT-SET-OLD-TO-DELETED') . "</a></td>");
echo("</tr>\n</table>\n");
}
}
?>
<script>
$(document).ready(function(){
<?php include "include/ajax.Setup.php" ?>
$(document).on('click touch','.status-span',function(e) {
e.preventDefault();
var scheduleNum = $(this).attr('rnum');
var status = $(this).attr('status');
var new_status;
var new_text;
switch (status) {
case 'Pending':
new_status = 'Active';
new_text = "<?php displayLanguageText('TEXT-ACTIVE'); ?>";
break;
case 'Active':
new_status = 'Completed';
new_text = "<?php displayLanguageText('TEXT-COMPLETED'); ?>";
break;
case 'Completed':
new_status = 'Closed';
new_text = "<?php displayLanguageText('TEXT-CLOSED'); ?>";
break;
case 'Closed':
new_status = 'Deleted';
new_text = "<?php displayLanguageText('TEXT-DELETED'); ?>";
break;
case 'Deleted':
new_status = 'Pending';
new_text = "<?php displayLanguageText('TEXT-PENDING'); ?>";
break;
}
var data = "table_name=hotlunch_schedules" +
"&record_num=" + scheduleNum +
"&status=" + new_status;
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
$("#status-"+scheduleNum).html(new_text);
$("#status-"+scheduleNum).attr('status', new_status);
}
);
});
<?php include "hotlunch_schedules.js.php"; ?>
});
</script>
<?php
endTemplate();
?>