Files
HotLunches/hotlunch_menu_items_details.csv.php
2026-10-19 15:22:52 -07:00

245 lines
7.1 KiB
PHP

<?php
$ValidAccess = 2010;
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
// startLog("hotlunch_menu_items_details.csv.php");
$action = "menu-details";
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team','Supplier','Financial Team');
if (checkPermission($AllowedUserTypes) != 1) {
header("Location: /?action=$action&error_code=NOACCESS");
return;
}
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog("hotlunch_menu_items_details.csv.php");
// Get parameters
$mode = 'All';
if (array_key_exists('schedule_num',$_REQUEST)) $schedule_num = intval($_REQUEST['schedule_num']);
if (array_key_exists('menu_num',$_REQUEST)) $selected_menu_num = intval($_REQUEST['menu_num']);
if (array_key_exists('mode',$_REQUEST)) $mode = db_escape_string($_REQUEST['mode']);
writeLog("schedule_num: $schedule_num");
writeLog("selected_menu_num: $selected_menu_num");
if (!isset($schedule_num)) {
$action = "";
header("Location: /?action=$action&error_code=NOSCHED");
exit();
}
if (!isset($selected_menu_num)) {
$action = "";
header("Location: /?action=$action&error_code=NOMENUS");
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) {
header("Location: /?action=$action&error_code=INVALIDSCHED");
return;
}
$hotlunch_schedule = db_fetch_array($results);
// If this is a ScheduleTeam user check if they have permission to access this schedule
if (in_array($_SESSION['UserInfo']['type'],array('Schedule Team','Schedule Volunteer'))) {
$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) {
echo("<br>\n");
$error_message = getLanguageText('TEXT-NO-ACCESS-TO-SCHEDULE');
include "form.messages.php";
return;
}
}
$document_name = "menu-items-details-spreadsheet.csv";
$selectedMenuDates = array();
if ($selected_menu_num == 0) {
$query = "SELECT record_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num ORDER BY sequence";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
$selectedMenuDates[] = $row['record_num'];
}
$document_name = "schedule-items-details-spreadsheet.csv";
}
else {
$selectedMenuDates[] = $selected_menu_num;
}
// Initialize the spreadsheet document type
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header("Content-type: application/octet-stream; charset=utf-8");
header("Content-Disposition: attachment; filename=$document_name");
header('Content-Transfer-Encoding: text');
echo("\xEF\xBB\xBF");
echo($hotlunch_schedule['schedule_name']);
echo("\n");
echo("\n");
for ($m = 0; $m < count($selectedMenuDates); $m++) {
$selected_menu_num = $selectedMenuDates[$m];
// Get menu date info
$query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $selected_menu_num";
writeLog($query);
$results = db_query($query);
$menu_date = db_fetch_assoc($results);
writeLog($menu_date['menu_title']);
// Get set of menu items for this date
$query = "SELECT * " .
"FROM hotlunch_menu_items " .
"WHERE school_num = $school_num " .
"AND menu_num = $selected_menu_num " .
"ORDER BY sequence";
writeLog($query);
$results = db_query($query);
if (db_num_rows($results) == 0) continue;
$menu_items = array();
$count = 0;
while ($row = db_fetch_array($results)) {
extract($row);
if ($item_type == 'Heading') continue;
else {
$entry = array();
$entry['item_num'] = $record_num;
$entry['item_title'] = $item_title;
$entry['label_title'] = $label_title;
$entry['oprice'] = $online_price;
$entry['pprice'] = $offline_price;
$entry['price1'] = $special_price1;
$entry['price2'] = $special_price2;
$entry['price3'] = $special_price3;
$menu_items[] = $entry;
}
}
//
// Output the menu title and dates
//
echo($menu_date['menu_title']);
echo("\n");
echo($menu_date['menu_date']);
echo("\n");
echo("\n");
//
// Output the menu items titles
//
for ($i = 0; $i < count($menu_items); $i++) {
$entry = $menu_items[$i];
$item_num = $entry['item_num'];
$title = $entry['item_title'];
if (strlen($entry['label_title'])) $title = $entry['label_title'];
$pwhere = "";
if ($mode == 'Variations') $pwhere = "AND menu_item_price != ".$entry['oprice']." ";
$query = "SELECT first_name, last_name, people_type, menu_item_price, extended_price, qty " .
"FROM people, hotlunch_order_items " .
"WHERE people.school_num = $school_num " .
"AND hotlunch_order_items.school_num = $school_num " .
"AND hotlunch_order_items.ordered_by_num = people.record_num " .
"AND hotlunch_order_items.menu_item_num = $item_num " .
$pwhere .
"ORDER BY people_type, last_name, first_name";
$results = db_query($query);
echo($title.',,,');
if (db_num_rows($results)) {
echo(getLanguageText('TEXT-QUANTITY').',');
echo(getLanguageText('TEXT-PAID').',');
echo(getLanguageText('TEXT-ON-LINE-PRICE').',');
echo(getLanguageText('TEXT-EXTENDED-PRICE').',');
echo(getLanguageText('TEXT-DIFFERENCE').',');
echo("\n");
$diff_total = 0;
$extended_total = 0;
while ($row = db_fetch_assoc($results)) {
extract($row);
echo($first_name.',');
echo($last_name.',');
echo($people_type.',');
echo($qty.',');
echo('$'.$menu_item_price.',');
echo('$'.$entry['oprice'].',');
echo('$'.$extended_price.',');
if ($menu_item_price != $entry['oprice']) {
$diff = $qty * ($entry['oprice'] - $menu_item_price);
$diff_total += $diff;
echo('$'.number_format($diff,2).',');
echo("***".',');
}
$extended_total += $extended_price;
echo("\n");
}
echo(",,,,,,".getLanguageText('TEXT-DIFFERENCE').','.'$'.number_format($diff_total,2));
echo("\n");
}
else {
echo("\n");
echo('*** '.getLanguageText('TEXT-NO-ORDER-FOR-STUDENT'));
echo("\n");
}
echo("\n");
}
echo("\n");
echo("\n");
}
?>