";
$FormFile = "hotlunch_menu_dates.form.php";
$TitleText = getLanguageText('TEXT-MENU');
$OrderBy = "sequence,menu_date asc";
$Sequence = 'Y';
// Start the template and output buffering
startTemplate();
$templatePageTitle = getLanguageText('TEXT-MANAGE-FORM');
$moduleName = "hotlunch_menu_dates.php";
// startLog($moduleName);
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Schedule Team','Application Administrator');
if (checkPermission($AllowedUserTypes) != 1) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
include "form.messages.php";
include "hotlunch_reports.menu.php";
endTemplate();
exit();
}
if (array_key_exists('schedule_num',$_GET)) $schedule_num = intval($_GET['schedule_num']);
if (array_key_exists('schedule_num',$_POST)) $schedule_num = intval($_POST['schedule_num']);
if (!isset($schedule_num) || intval($schedule_num) == 0) {
$error_message = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
include "form.messages.php";
include "hotlunch_reports.menu.php";
endTemplate();
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 = getLanguageText('ERRORMSG-INVALID-SCHEDULE-NUM');
include "form.messages.php";
include "hotlunch_reports.menu.php";
endTemplate();
exit();
}
$hotlunch_schedule = db_fetch_array($results);
$templatePageTitle .= " - " . $hotlunch_schedule['schedule_name'];
// If this is a ScheduleTeam user check if they have permission to access this schedule
if ($_SESSION['UserInfo']['type'] == 'Schedule Team') {
$userNum = $_SESSION['UserInfo']['record_num'];
$access = db_getVal("SELECT count(*) FROM hotlunch_schedules_people WHERE school_num = $school_num AND schedule_num = $schedule_num AND user_num = $userNum");
if (!$access || $access == 0) {
$error_message = getLanguageText('ERRORMSG-NO-SCHEDULE-ACCESS');
include "form.messages.php";
include "hotlunch_reports.menu.php";
endTemplate();
exit();
}
}
// Main buttons
include "hotlunch_reports.menu.php";
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
switch (strtolower($naction)) {
case "generate":
// Process lunch menu dates
$menu_dates = new Table("hotlunch_menu_dates");
if (strlen($hotlunch_schedule['lunch_days']) == 0) {
$error_message = getLanguageText('ERRORMSG-NO-MENU-DATES-DEFINED');
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
$lunch_days = explode(",",$hotlunch_schedule['lunch_days']);
$schedule_start_date = $hotlunch_schedule['schedule_start_date'];
$schedule_end_date = $hotlunch_schedule['schedule_end_date'];
$current_date = $hotlunch_schedule['schedule_start_date'];
$current_time = strtotime($current_date) + 12 * 60 * 60;
$newDays = 0;
while ($current_date <= $schedule_end_date) {
$day = date("D",$current_time);
if (in_array($day,$lunch_days)) {
$entry = initializeTableArray('hotlunch_menu_dates');
$entry['school_num'] = $school_num;
$entry['schedule_num'] = $schedule_num;
$sequence = db_getVal("SELECT max(sequence) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num");
$sequence++;
$entry['sequence'] = $sequence;
$entry['menu_title'] = $hotlunch_schedule['default_menu_title'];
$entry['menu_date'] = $current_date;
$entry['menu_end_order_datetime'] = $current_date . " 23:59:00";
$entry['menu_type'] = "Regular";
$entry['menu_end_order_datetime'] = $menu_date . " 09:00:00";
$entry['status'] = 'Active';
$entry['order_format'] = $hotlunch_schedule['default_order_format'];
$entry['display_supplier_code'] = 'N';
$entry['order_revenue'] = 0.00;
$entry['other_revenue'] = 0.00;
$entry['supplier_costs'] = 0.00;
$entry['other_costs'] = 0.00;
$entry['net_revenue'] = 0.00;
$entry['menu_link'] = 'No';
$entry['source_menu'] = 0;
$entry['quantity_available'] = 0;
$entry['min_quantity'] = 0;
$entry['warn_quantity'] = 0;
$entry['max_quantity'] = 0;
$entry['max_quantity_by'] = 'Order';
$entry['number_of_labels'] = 1;
$entry['group_a_min'] = 0;
$entry['group_a'] = 0;
$entry['group_b'] = 0;
$entry['group_c'] = 0;
$entry['group_d'] = 0;
$entry['group_e'] = 0;
$entry['group_f'] = 0;
$entry['group_g'] = 0;
$entry['group_h'] = 0;
$entry['group_i'] = 0;
$entry['group_j'] = 0;
$entry['group_k'] = 0;
$entry['group_l'] = 0;
$entry['group_m'] = 0;
$entry['group_b_a_required'] = 'N';
$entry['group_c_a_required'] = 'N';
$entry['group_d_a_required'] = 'N';
$entry['group_e_a_required'] = 'N';
$entry['group_f_a_required'] = 'N';
$entry['group_g_a_required'] = 'N';
$entry['group_h_a_required'] = 'N';
$entry['group_i_a_required'] = 'N';
$entry['group_j_a_required'] = 'N';
$entry['group_k_a_required'] = 'N';
$entry['group_l_a_required'] = 'N';
$entry['group_m_a_required'] = 'N';
$entry['group_b_mandatory'] = 'N';
$entry['group_c_mandatory'] = 'N';
$entry['group_d_mandatory'] = 'N';
$entry['group_e_mandatory'] = 'N';
$entry['group_f_mandatory'] = 'N';
$entry['group_g_mandatory'] = 'N';
$entry['group_h_mandatory'] = 'N';
$entry['group_i_mandatory'] = 'N';
$entry['group_j_mandatory'] = 'N';
$entry['group_k_mandatory'] = 'N';
$entry['group_l_mandatory'] = 'N';
$entry['group_m_mandatory'] = 'N';
$entry['num_volunteer_override'] = 'D';
$entry['max_volunteers'] = 0;
$entry['active'] = 'Y';
$entry['available'] = 'Y';
$entry['display'] = 'Y';
// Check if an entry exists for this date
$insertRecord = true;
if ($hotlunch_schedule['display_menu_date'] == 'Y' || $hotlunch_schedule['schedule_type'] == 'Date Sensitive') {
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num AND menu_date = '$menu_date'");
if (db_num_rows($results) != 0) $insertRecord = false;
}
if ($insertRecord) {
$query = $menu_dates->BuildInsert($entry);
db_query($query);
$newDays++;
}
}
$current_time += 24 * 60 * 60;
$current_date = date("Y-m-d",$current_time);
}
$form_message = "$newDays " . getLanguageText('TEXT-MENU-DATES-CREATED') . " - ($hotlunch_schedule[lunch_days])";
if ($newDays == 0) $form_message = getLanguageText('TEXT-ALL-MENU-DATES-EXIST') . " - ($hotlunch_schedule[lunch_days])";
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "manage":
include "hotlunch_menu_dates.manage.php";
break;
case "manage-update":
// Get set of menu dates to process
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num ORDER BY sequence,menu_date");
while ($row = db_fetch_array($results)) {
$end_order = '';
$min_vol = 0;
$max_vol = 0;
$menu_link = 'No';
$record_num = $row['record_num'];
$menu_title = db_escape_string(trim($_POST["title_$record_num"]));
$menu_date = $_POST["date_$record_num"];
if (array_key_exists("end_date_$record_num", $_POST)) $end_order = $_POST["end_date_$record_num"];
if (array_key_exists("min_$record_num", $_POST)) $min_vol = number_format($_POST["min_$record_num"],0);
if (array_key_exists("max_$record_num", $_POST)) $max_vol = number_format($_POST["max_$record_num"],0);
if (array_key_exists("menu_link_$record_num", $_POST)) $menu_link = $_POST["menu_link_$record_num"];
if (strlen($end_order)) $meodate = "menu_end_order_datetime = '$end_order', ";
else $meodate = "menu_end_order_datetime = NULL, ";
$query = "UPDATE hotlunch_menu_dates " .
"SET menu_title = '$menu_title', " .
"menu_date = '$menu_date', " .
$meodate .
"max_volunteers = $max_vol, " .
"menu_link = '$menu_link' " .
"WHERE school_num = $school_num AND record_num = $record_num";
db_query($query);
}
$form_message = getLanguageText('MSG-MENUS-UPDATED');
$action = "$action&schedule_num=$schedule_num";
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "manage-links":
include "hotlunch_menu_dates.manage.links.php";
break;
case "manage-links-update":
// Get set of menu dates to process
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num ORDER BY sequence,menu_date");
while ($row = db_fetch_array($results)) {
$record_num = $row['record_num'];
$menu_title = db_escape_string(trim($_POST["title_$record_num"]));
$menu_date = $_POST["date_$record_num"];
$end_order = $_POST["end_date_$record_num"];
$min_vol = number_format($_POST["min_$record_num"],0);
$max_vol = number_format($_POST["max_$record_num"],0);
$menu_link = $_POST['menu_link'];
$query = "UPDATE hotlunch_menu_dates " .
"SET menu_title = '$menu_title', " .
"menu_date = '$menu_date', " .
"menu_end_order_datetime = '$end_order', " .
"max_volunteers = $max_vol, " .
"menu_link = '$menu_link' " .
"WHERE school_num = $school_num AND record_num = $record_num";
db_query($query);
}
$form_message = getLanguageText('MSG-MENUS-UPDATED');
$action = "$action&schedule_num=$schedule_num";
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "manage-rules":
include "hotlunch_menu_dates.manage_rules.php";
break;
case "manage-rules-update":
$hotlunch_menu_dates = new Table("hotlunch_menu_dates");
// Get set of menu dates to process
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num ORDER BY sequence,menu_date");
while ($row = db_fetch_array($results)) {
extract($row);
// Group A
$group_a = intval($_POST['group_a'."_$record_num"]);
$group_a_available = intval($_POST['group_a_available'."_$record_num"]);
$group_a_max_message = $_POST['group_a_max_message'."_$record_num"];
// Group B
$group_b = intval($_POST['group_b'."_$record_num"]);
$group_b_available = intval($_POST['group_b_available'."_$record_num"]);
$group_b_a_required = $_POST['group_b_a_required'."_$record_num"];
$group_b_mandatory = $_POST['group_b_mandatory'."_$record_num"];
$group_b_message = $_POST['group_b_message'."_$record_num"];
$group_b_max_message = $_POST['group_b_max_message'."_$record_num"];
// Group C
$group_c = intval($_POST['group_c'."_$record_num"]);
$group_c_available = intval($_POST['group_c_available'."_$record_num"]);
$group_c_a_required = $_POST['group_c_a_required'."_$record_num"];
$group_c_mandatory = $_POST['group_c_mandatory'."_$record_num"];
$group_c_message = $_POST['group_c_message'."_$record_num"];
$group_c_max_message = $_POST['group_c_max_message'."_$record_num"];
$query = $hotlunch_menu_dates->BuildUpdate();
db_query($query);
}
$form_message = getLanguageText('MSG-MENUS-UPDATED');
$action = "$action&schedule_num=$schedule_num";
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "set-to-checkboxes":
case "set-to-quantities":
$new_format = "Checkbox";
if ($naction == "set-to-quantities") $new_format = "Quantity";
$query = "UPDATE hotlunch_menu_dates " .
"SET order_format = '$new_format' " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num";
db_query($query);
$query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num";
$dates = db_query($query);
while ($row = db_fetch_assoc($dates)) {
$menu_num = $row['record_num'];
db_query("UPDATE hotlunch_menu_items SET menu_item_format = 'D' WHERE school_num = $school_num AND menu_num = $menu_num");
}
$form_message = getLanguageText('MSG-MENUS-UPDATED');
$action = "$action&schedule_num=$schedule_num";
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "delete-all":
$dTitle .= getLanguageText('TEXT-THIS-WILL-DELETE-ALL-MENU-DATES-FOR-THIS-SCHEDULE')."
\n".getLanguageText('JAVA-CONFIRM-DELETE');
$dTitle = getLanguageText('MSG-DELETE-ALL-DATES') . '
' . getLanguageText('JAVA-CONFIRM-DELETE');
$HiddenFields = " \n";
$HiddenFields .= " \n";
include "delete.form.php";
break;
case "delete-all-confirmed":
// Get set of menu dates to delete
$query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num";
$menu_dates = db_query($query);
if (db_num_rows($menu_dates) > 0) {
while ($row = db_fetch_array($menu_dates)) {
$menu_num = $row['record_num'];
// Get set of menu items for menu date
$menu_items = db_query("SELECT * FROM hotlunch_menu_items WHERE school_num = $school_num AND menu_num = $menu_num");
if (db_num_rows($menu_items) > 0) {
while ($row = db_fetch_array($menu_items)) {
$menu_item_num = $row['record_num'];
// Delete menu items and menu products
db_query("DELETE FROM hotlunch_menu_products WHERE school_num = $school_num AND menu_item_num = $menu_item_num");
db_query("DELETE FROM hotlunch_menu_items WHERE school_num = $school_num AND record_num = $menu_item_num");
// db_query("UPDATE hotlunch_menu_items SET active = 'N' WHERE school_num = $school_num AND record_num = $menu_item_num");
}
}
db_query("DELETE FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $menu_num");
}
}
$form_message = getLanguageText('MSG-ALL-DATES-DELETED');
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "copy":
include "hotlunch_menu.copy.php";
break;
case "copy-menu":
$curr_source_menu = $_POST['source_menu'];
$destination_type = $_POST['destination_type'];
$destination_menu = $_POST['menu_num'];
$menu_link = $_POST['menu_link'];
$copy_menu_title = $_POST['copy_menu_title'];
unset($error_message);
$destination_schedule_num = $schedule_num;
$source_schedule_num = db_getVal("SELECT schedule_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $curr_source_menu");
// Check that the source menu date is part of the current schedule if linking is requested
if ($menu_link != 'No' && $source_schedule_num != $destination_schedule_num) {
$error_message = getLanguageText('ERRORMSG-LINKING-MENUS-NOT-ALLOWED');
$action = "$action&schedule_num=$destination_schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
$hotlunch_menu_items = new Table("hotlunch_menu_items");
$hotlunch_menu_products = new Table("hotlunch_menu_products");
$hotlunch_menu_dates_classes = new Table("hotlunch_menu_dates_classes");
$hotlunch_menu_items_classes = new Table("hotlunch_menu_items_classes");
// Copy to existing menu date
if ($destination_type == "Existing") {
// Ensure that a valid menu has been selected
if (count($destination_menu) == 0) {
$error_message = getLanguageText('ERRORMSG-NO-DESTINATION-MENU');
$action = "$action&schedule_num=$destination_schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
// Check that source and destination are not the same
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
if ($curr_source_menu == $menu_num) {
continue;
}
// Check if the destination menu is a source for other menus
$num_menus = db_getVal("SELECT count(*) FROM hotlunch_menu_dates WHERE school_num = $school_num AND source_menu = $menu_num");
if ($num_menus > 0) {
$error_message = getLanguageText('ERRORMSG-NO-COPY-TO-SOURCE');
$action = "$action&schedule_num=$destination_schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
}
// Check that the destination date is after the source date if linking
if ($menu_link != 'No') {
$source_date = db_getVal("select menu_date from hotlunch_menu_dates where school_num = $school_num and schedule_num = $source_schedule_num and record_num = $curr_source_menu");
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
$destination_date = db_getVal("select menu_date from hotlunch_menu_dates where school_num = $school_num and schedule_num = $source_schedule_num and record_num = $menu_num");
if ($source_date > $destination_date || !$destination_date) {
$error_message = getLanguageText('ERRORMSG-SOURCE-MENU-PRIOR');
$action = "$action&schedule_num=$destination_schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
}
}
// Delete all items and products in destination menu
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
if (isset($menu_num) && $menu_num == $curr_source_menu) continue;
// Get menu items from destination menu
$query = "select * from hotlunch_menu_items " .
"where school_num = $school_num " .
"and menu_num = $menu_num";
$results = db_query($query);
// Delete each menu item's products
while ($row = db_fetch_array($results)) {
$mnum = $row['record_num'];
$query = "delete from hotlunch_menu_products " .
"where school_num = $school_num " .
"and menu_item_num = $mnum";
db_query($query);
}
// Delete all items in destination menu
$query = "delete from hotlunch_menu_items " .
"where school_num = $school_num " .
"and menu_num = $menu_num";
db_query($query);
// Delete all menu_dates_classes in destination menu
$query = "delete from hotlunch_menu_dates_classes " .
"where school_num = $school_num " .
"and schedule_num = $destination_schedule_num " .
"and menu_num = $menu_num";
db_query($query);
// Delete all menu_items_classes in destination menu
$query = "delete from hotlunch_menu_items_classes " .
"where school_num = $school_num " .
"and schedule_num = $destination_schedule_num " .
"and menu_num = $menu_num";
db_query($query);
}
}
else {
$destination_menu = array();
// Check if there is a menu entry for this date
if ($hotlunch_schedule['display_menu_date'] == 'Y') {
$menu_date = $_POST['new_menu_date'];
$num = db_getVal("select count(*) from hotlunch_menu_dates where school_num = $school_num and schedule_num = $destination_schedule_num and menu_date = '$menu_date'");
}
// Check that the destination date is after the source date if linking
if ($menu_link != 'No') {
$source_date = db_getVal("select menu_date from hotlunch_menu_dates where school_num = $school_num and schedule_num = $source_schedule_num and record_num = $curr_source_menu");
if ($source_date > $menu_date) {
$error_message = getLanguageText('ERRORMSG-SOURCE-MENU-PRIOR');
$action = "$action&schedule_num=$destination_schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
}
// Get source menu date record
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $source_schedule_num AND record_num = $curr_source_menu");
$row = db_fetch_array($results);
extract($row);
// Create a new menu date entry
$entry = initializeTableArray('hotlunch_menu_dates', $row);
$entry['group_a_min'] = 0;
$entry['group_b_mandatory'] = 'N';
$entry['group_c_mandatory'] = 'N';
$entry['group_d_mandatory'] = 'N';
$entry['group_e_mandatory'] = 'N';
$entry['group_f_mandatory'] = 'N';
$entry['group_g_mandatory'] = 'N';
$entry['group_h_mandatory'] = 'N';
$entry['group_i_mandatory'] = 'N';
$entry['group_j_mandatory'] = 'N';
$entry['group_k_mandatory'] = 'N';
$entry['group_l_mandatory'] = 'N';
$entry['group_m_mandatory'] = 'N';
$entry['order_revenue'] = 0;
$entry['other_revenue'] = 0;
$entry['supplier_costs'] = 0;
$entry['other_costs'] = 0;
$entry['net_revenue'] = 0;
$entry['available'] = 'Y';
$entry['active'] = 'Y';
$entry['display'] = 'Y';
$sequence++;
$entry['sequence'] = $sequence;
$entry['menu_date'] = $_POST['new_menu_date'];
$entry['menu_link'] = $_POST['menu_link'];
$entry['source_menu'] = $curr_source_menu;
if ($menu_link == 'No') $entry['source_menu'] = 0;
if (strlen($_POST['new_menu_title'])) $entry['menu_title'] = $_POST['new_menu_title'];
$entry['schedule_num'] = $destination_schedule_num;
$menu_dates = new Table("hotlunch_menu_dates");
$query = $menu_dates->BuildInsert($entry);
db_query($query);
$destination_menu[] = db_insert_id();
}
if (!isset($error_message) || strlen($error_message) == 0) {
// Copy any hotlunch_menu_dates_classes entries
$classes = db_query("SELECT * FROM hotlunch_menu_dates_classes WHERE school_num = $school_num AND schedule_num = $source_schedule_num AND menu_num = $curr_source_menu");
if (db_num_rows($classes)) {
$selected_classes = array();
while ($row = db_fetch_assoc($classes)) {
$selected_classes[] = $row['class_num'];
}
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
if (isset($menu_num) && $menu_num == $curr_source_menu) continue;
db_query("DELETE FROM hotlunch_menu_dates_classes WHERE school_num = $school_num AND schedule_num = $destination_schedule_num AND menu_num = $menu_num");
for ($j = 0; $j < count($selected_classes); $j++) {
$cnum = $selected_classes[$j];
db_query("INSERT INTO hotlunch_menu_dates_classes VALUES ($school_num,$destination_schedule_num,$menu_num,$cnum)");
}
}
}
// Get list of items from source_menu
$query = "select * from hotlunch_menu_items " .
"where school_num = $school_num " .
"and menu_num = $curr_source_menu " .
"order by sequence";
$items = db_query($query);
while ($row = db_fetch_array($items)) {
extract($row);
// Initialize common values
$source_item = 0;
$current_source_item = 0;
$comment = "";
$active_until_date = '';
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
if (isset($menu_num) && $menu_num == $curr_source_menu) continue;
$source_item_num = $record_num;
$source_item = $record_num;
if ($_POST['menu_link'] == 'No') $source_item = 0;
$query = $hotlunch_menu_items->BuildInsert();
db_query($query);
$new_item_num = db_insert_id();
// Get products for the menu item
$query = "select * from hotlunch_menu_products " .
"where school_num = $school_num " .
"and menu_item_num = $record_num";
$products = db_query($query);
while ($row = db_fetch_array($products)) {
extract($row);
$menu_item_num = $new_item_num;
$query = $hotlunch_menu_products->BuildInsert();
db_query($query);
}
// Copy any hotlunch_menu_items_classes entries
$classes = db_query("SELECT * FROM hotlunch_menu_items_classes WHERE school_num = $school_num AND schedule_num = $source_schedule_num AND menu_num = $curr_source_menu AND menu_item_num = $source_item_num");
if (db_num_rows($classes)) {
$selected_classes = array();
while ($row = db_fetch_assoc($classes)) {
$selected_classes[] = $row['class_num'];
}
db_query("DELETE FROM hotlunch_menu_items_classes WHERE school_num = $school_num AND schedule_num = $destination_schedule_num AND menu_num = $menu_num AND menu_item_num = $new_item_num");
for ($j = 0; $j < count($selected_classes); $j++) {
$cnum = $selected_classes[$j];
db_query("INSERT INTO hotlunch_menu_items_classes VALUES ($school_num,$destination_schedule_num,$menu_num,$new_item_num,$cnum)");
}
}
}
}
// Update the destination menu title and linking information
for ($i = 0; $i < count($destination_menu); $i++) {
$menu_num = $destination_menu[$i];
if (isset($menu_num) && $menu_num == $curr_source_menu) continue;
$query = "select * from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and record_num = $curr_source_menu";
$results = db_query($query);
$row = db_fetch_array($results);
// Setup the code to assign the destination menu title value
$title = db_escape_string($row['menu_title']);
$mtitle_code = " menu_title = '$title', ";
if ($destination_type == "Existing" && $copy_menu_title == 'N') $mtitle_code = "";
if ($destination_type == "New" && strlen($new_menu_title)) $mtitle_code = " menu_title = '" . db_escape_string($new_menu_title) . "', ";
$order_format = $row['order_format'];
$display_supplier_code = $row['display_supplier_code'];
$display_group_colors = $row['display_group_colors'];
$display_group_letters = $row['display_group_letters'];
$menu_instructions = db_escape_string($row['menu_instructions']);
$email_message = db_escape_string($row['email_message']);
$active = $row['active'];
$available = $row['available'];
$display = 'Y';
$group_a = intval($row['group_a']);
$group_b = intval($row['group_b']);
$group_c = intval($row['group_c']);
$group_d = intval($row['group_d']);
$group_e = intval($row['group_e']);
$group_f = intval($row['group_f']);
$group_g = intval($row['group_g']);
$group_h = intval($row['group_h']);
$group_i = intval($row['group_i']);
$group_j = intval($row['group_j']);
$group_k = intval($row['group_k']);
$group_l = intval($row['group_l']);
$group_m = intval($row['group_m']);
$group_a_available = intval($row['group_a_available']);
$group_b_available = intval($row['group_b_available']);
$group_c_available = intval($row['group_c_available']);
$group_d_available = intval($row['group_d_available']);
$group_e_available = intval($row['group_e_available']);
$group_f_available = intval($row['group_f_available']);
$group_g_available = intval($row['group_g_available']);
$group_h_available = intval($row['group_h_available']);
$group_i_available = intval($row['group_i_available']);
$group_j_available = intval($row['group_j_available']);
$group_k_available = intval($row['group_k_available']);
$group_l_available = intval($row['group_l_available']);
$group_m_available = intval($row['group_m_available']);
$group_a_min = intval($row['group_a_min']);
$group_a_max_message = $row['group_a_max_message'];
$group_b_message = $row['group_b_message'];
$group_b_max_message = $row['group_b_max_message'];
$group_c_message = $row['group_c_message'];
$group_c_max_message = $row['group_c_max_message'];
$group_e_message = $row['group_e_message'];
$group_b_a_required = $row['group_b_a_required'];
$group_c_a_required = $row['group_c_a_required'];
$group_d_a_required = $row['group_d_a_required'];
$group_e_a_required = $row['group_e_a_required'];
$group_f_a_required = $row['group_f_a_required'];
$group_g_a_required = $row['group_g_a_required'];
$group_h_a_required = $row['group_h_a_required'];
$group_i_a_required = $row['group_i_a_required'];
$group_j_a_required = $row['group_j_a_required'];
$group_k_a_required = $row['group_k_a_required'];
$group_l_a_required = $row['group_l_a_required'];
$group_m_a_required = $row['group_m_a_required'];
$group_b_mandatory = $row['group_b_mandatory'];
$group_c_mandatory = $row['group_c_mandatory'];
$group_d_mandatory = $row['group_d_mandatory'];
$group_e_mandatory = $row['group_e_mandatory'];
$group_f_mandatory = $row['group_f_mandatory'];
$group_g_mandatory = $row['group_g_mandatory'];
$group_h_mandatory = $row['group_h_mandatory'];
$group_i_mandatory = $row['group_i_mandatory'];
$group_j_mandatory = $row['group_j_mandatory'];
$group_k_mandatory = $row['group_k_mandatory'];
$group_l_mandatory = $row['group_l_mandatory'];
$group_m_mandatory = $row['group_m_mandatory'];
$menu_link = $_POST['menu_link'];
if ($menu_link == 'No') $source_menu = 0;
$query = "update hotlunch_menu_dates " .
"set $mtitle_code" .
"order_format = '$order_format', " .
"display_supplier_code = '$display_supplier_code', " .
"menu_instructions = '$menu_instructions', " .
"email_message = '$email_message', " .
"group_a = $group_a, " .
"group_b = $group_b, " .
"group_c = $group_c, " .
"group_d = $group_d, " .
"group_e = $group_e, " .
"group_f = $group_f, " .
"group_g = $group_g, " .
"group_h = $group_h, " .
"group_i = $group_i, " .
"group_j = $group_j, " .
"group_k = $group_k, " .
"group_l = $group_l, " .
"group_m = $group_m, " .
"group_b_a_required = '$group_b_a_required', " .
"group_c_a_required = '$group_c_a_required', " .
"group_d_a_required = '$group_d_a_required', " .
"group_e_a_required = '$group_e_a_required', " .
"group_f_a_required = '$group_f_a_required', " .
"group_g_a_required = '$group_g_a_required', " .
"group_h_a_required = '$group_h_a_required', " .
"group_i_a_required = '$group_i_a_required', " .
"group_j_a_required = '$group_j_a_required', " .
"group_k_a_required = '$group_k_a_required', " .
"group_l_a_required = '$group_l_a_required', " .
"group_m_a_required = '$group_m_a_required', " .
"group_a_min = $group_a_min, " .
"group_b_mandatory = '$group_b_mandatory', " .
"group_c_mandatory = '$group_c_mandatory', " .
"group_d_mandatory = '$group_d_mandatory', " .
"group_e_mandatory = '$group_e_mandatory', " .
"group_f_mandatory = '$group_f_mandatory', " .
"group_g_mandatory = '$group_g_mandatory', " .
"group_h_mandatory = '$group_h_mandatory', " .
"group_i_mandatory = '$group_i_mandatory', " .
"group_j_mandatory = '$group_j_mandatory', " .
"group_k_mandatory = '$group_k_mandatory', " .
"group_l_mandatory = '$group_l_mandatory', " .
"group_m_mandatory = '$group_m_mandatory', " .
"group_a_max_message = '$group_a_max_message', " .
"group_b_message = '$group_b_message', " .
"group_b_max_message = '$group_b_max_message', " .
"group_c_message = '$group_c_message', " .
"group_c_max_message = '$group_c_max_message', " .
"group_e_message = '$group_e_message', " .
"display = 'Y', " .
"menu_link = '$menu_link', " .
"source_menu = $source_menu " .
"where school_num = $school_num " .
"and record_num = $menu_num";
db_query($query);
}
$form_message = getLanguageText('MSG-MENU-COPIED');
if ($menu_link != 'No') $form_message = getLanguageText('MSG-MENU-LINKED');
}
// $action = "$action&schedule_num=$destination_schedule_num";
// $naction = 'list';
// header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
header("Location: ?action=menu-dates&schedule_num=$schedule_num&naction=verify-links");
exit();
case "supplier-menu":
case "view products":
include "hotlunch_menu.supplier-menu.php";
break;
case "generate menu":
$selected_supplier = intval($_POST['selected_supplier']);
$curr_menu_num = intval($_POST['menu_num']);
// Get the location for these items
$item_location = 'End';
if (array_key_exists('item_location',$_POST) && strlen($_POST['item_location'])) $item_location = $_POST['item_location'];
// Format the menu dates into an array for further processing
if ($curr_menu_num > 0) $current_menus = array($curr_menu_num);
else {
$selected_menus = $_POST['selected_menus'];
if (is_array($selected_menus) && count($selected_menus) > 0) $current_menus = $selected_menus;
else {
$error_message = getLanguageText('ERRORMSG-NO-MENU-DATES-SELECTED');
header("Location: /?action=menu-dates&naction=supplier-menu&schedule_num=$schedule_num&menu_num=0");
exit();
}
}
// Check that a supplier has been selected
if (strlen($selected_supplier) == 0) {
$error_message = getLanguageText('ERRORMSG-NO-SUPPLIER-SELECTED');
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
// Handle selected products
$pwhere = "";
if (array_key_exists('selected_products',$_POST)) {
$selected_products = $_POST['selected_products'];
if (is_array($selected_products) && count($selected_products) > 0) {
$pwhere = "and record_num IN (" . implode(",",$selected_products) . ") ";
}
}
$products = db_query("SELECT * FROM supplier_products WHERE school_num = $supplier_school_num AND supplier_num = $selected_supplier AND status = 'Active' $pwhere ORDER BY sequence,product_name");
$num_products = db_num_rows($products);
if ($num_products > 0) {
$hotlunch_menu_items = new Table("hotlunch_menu_items");
$count = 0;
while ($product = db_fetch_array($products)) {
$menu_item = array();
// Initialize common values
$menu_item['school_num'] = $school_num;
$menu_item['menu_num'] = $curr_menu_num;
$menu_item['source_item'] = 0;
$menu_item['current_source_item'] = 0;
$menu_item['comment'] = "";
$menu_item['warn_quantity'] = 0;
$menu_item['item_title'] = $product['product_name'];
$menu_item['item_description'] = $product['product_description'];
$menu_item['label_title'] = $product['label_name'];
$menu_item['online_price'] = $product['standard_online_price'];
$menu_item['offline_price'] = $product['standard_offline_price'];
$menu_item['special_price1'] = $product['special_price1'];
$menu_item['special_price2'] = $product['special_price2'];
$menu_item['special_price3'] = $product['special_price3'];
$menu_item['number_of_alternate_prices'] = $product['number_of_alternate_prices'];
$menu_item['alternate_price1'] = $product['alternate_price1'];
$menu_item['alternate_price2'] = $product['alternate_price2'];
$menu_item['alternate_price3'] = $product['alternate_price3'];
$menu_item['alternate_price4'] = $product['alternate_price4'];
$menu_item['alternate_price5'] = $product['alternate_price5'];
$menu_item['alternate_price6'] = $product['alternate_price6'];
$menu_item['alternate_price7'] = $product['alternate_price7'];
$menu_item['alternate_price8'] = $product['alternate_price8'];
$menu_item['alternate_price9'] = $product['alternate_price9'];
$menu_item['alternate_price10'] = $product['alternate_price10'];
$menu_item['taxable_item'] = $product['taxable_product'];
$menu_item['bc_guideline_rating'] = $product['bc_guideline_rating'];
$menu_item['quantity_available'] = $product['quantity_available'];
$menu_item['max_quantity'] = $product['max_quantity'];
$menu_item['options_title'] = $product['options_title'];
$menu_item['options'] = $product['product_options'];
$menu_item['default_options'] = $product['default_options'];
$menu_item['max_options'] = $product['max_options'];
$menu_item['min_options'] = $product['min_options'];
$menu_item['options2_title'] = $product['options2_title'];
$menu_item['options2'] = $product['product_options2'];
$menu_item['default_options2'] = $product['default_options2'];
$menu_item['max_options2'] = $product['max_options2'];
$menu_item['min_options2'] = $product['min_options2'];
$menu_item['options3_title'] = $product['options3_title'];
$menu_item['options3'] = $product['product_options3'];
$menu_item['default_options3'] = $product['default_options3'];
$menu_item['max_options3'] = $product['max_options3'];
$menu_item['min_options3'] = $product['min_options3'];
$menu_item['nutritional_info'] = $product['nutritional_info'];
$menu_item['item_message'] = $product['item_message'];
$menu_item['hot_cold_food'] = $product['hot_cold_food'];
$menu_item['sales_summary_item'] = $product['sales_summary_item'];
$menu_item['image'] = $product['image'];
$menu_item['item_type'] = 'Item';
$menu_item['menu_item_format'] = 'D';
$menu_item['active'] = 'Y';
$menu_item['display_price'] = 'Y';
$menu_item['product_type'] = $product['product_type'];
$menu_item['quantity_available'] = 0;
$menu_item['max_quantity'] = 0;
for ($m = 0; $m < count($current_menus); $m++) {
$menu_num = $current_menus[$m];
$product_num = $product['record_num'];
$product_type = $product['product_type'];
// Get next sequence number
if ($item_location == 'End') {
$sequence = intval(db_getVal("SELECT max(sequence) FROM hotlunch_menu_items WHERE school_num = $school_num AND menu_num = $menu_num"));
if (!$sequence) $sequence = 1;
else $sequence++;
}
else {
$sequence = $count + 1;
db_query("UPDATE hotlunch_menu_items SET sequence = sequence + 1 WHERE school_num = $school_num AND menu_num = $menu_num AND sequence >= $sequence");
}
$menu_item['menu_num'] = $menu_num;
$menu_item['sequence'] = $sequence;
// Create the menu item entry
$query = $hotlunch_menu_items->BuildInsert($menu_item);
db_query($query);
$menu_item_num = db_insert_id();
// Create the menu item product entry
if ($product_type == 'Product') {
db_query("INSERT INTO hotlunch_menu_products VALUES ($school_num,$menu_item_num,1,$product_num,1)");
}
else {
if (isset($product_num) && $product_num > 0) {
$query = "SELECT sp.product_name,sp.record_num " .
"FROM supplier_products_combos AS sc, supplier_products AS sp " .
"WHERE sc.school_num = $supplier_school_num " .
"AND sp.school_num = $supplier_school_num " .
"AND sc.component_product_num = sp.record_num " .
"AND sc.primary_product_num = $product_num";
$items = db_query($query);
if (db_num_rows($items)) {
while ($row = db_fetch_array($items)) {
$component_num = $row['record_num'];
db_query("INSERT INTO hotlunch_menu_products VALUES ($school_num,$menu_item_num,1,$component_num,1)");
}
}
}
}
// Get set of linked menu dates
$linked_dates = db_query("select * from hotlunch_menu_dates where school_num = $school_num AND source_menu = $menu_num");
$linked_menus = array();
if (db_num_rows($linked_dates) > 0) {
while ($row = db_fetch_array($linked_dates)) {
$linked_menus[] = $row['record_num'];
}
}
// Insert this item on any linked menus
if (count($linked_menus) > 0) {
$source_item = $menu_item_num;
for ($i = 0; $i < count($linked_menus); $i++) {
$menu_num = $linked_menus[$i];
$menu_item['menu_num'] = $menu_num;
// Create the menu item entry
$query = $hotlunch_menu_items->BuildInsert($menu_item);
db_query($query);
$menu_item_num = db_insert_id();
// Create the menu item product entry
if ($product_type == 'Product') {
db_query("INSERT INTO hotlunch_menu_products VALUES ($school_num,$menu_item_num,1,$product_num,1)");
}
else {
$query = "SELECT sp.product_name,sp.record_num " .
"FROM supplier_products_combos AS sc, supplier_products AS sp " .
"WHERE sc.school_num = $supplier_school_num " .
"AND sp.school_num = $supplier_school_num " .
"AND sc.component_product_num = sp.record_num " .
"AND sc.primary_product_num = $product_num";
$items = db_query($query);
if (db_num_rows($items)) {
while ($row = db_fetch_array($items)) {
$component_num = $row['record_num'];
db_query("INSERT INTO hotlunch_menu_products VALUES ($school_num,$menu_item_num,1,$component_num,1)");
}
}
}
}
}
}
$count++;
}
$form_message = sprintf(getLanguageText('MSG-MENU-GENERATED'),$count);
}
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case "change-source-date":
extract($_GET);
// Get selected menu date record
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $menu_num");
$current_menu = db_fetch_array($results);
$current_source = $current_menu['source_menu'];
$current_mdate = $current_menu['menu_date'];
if ($current_source == '' || $current_source == 0) {
$error_message = getLanguageText('ERRORMSG-MENU-DATE-NOT-SERIES');
$action = "$action&schedule_num=$schedule_num";
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
// Get set of menu dates in the current series
$results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND (source_menu = $current_source OR record_num = $current_source) ORDER BY sequence,menu_date");
// Create the text for the confirmation form
$ConfirmText = "
| $mtitle - $mdate | \n"; if ($mnum == $menu_num) { $ConfirmText .= "- " . getLanguageText('TEXT-NEW-SOURCE-MENU') . " | "; } else { if ($row['menu_date'] < $current_mdate) { $ConfirmText .= "- " . getLanguageText('TEXT-UNLINKED-MENU') . " | "; } else { $ConfirmText .= "- " . getLanguageText('TEXT-LINKED-TO') . ' ' . $current_mdate . " | "; } } $ConfirmText .= "