Files
HotLunches/hotlunch_menu.price_update.form.php
2026-10-19 15:22:52 -07:00

421 lines
16 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team','Supplier');
if (checkPermission($AllowedUserTypes) == 1) {
include "hotlunch_reports.menu.php";
}
// Get schedule information
$query = "select * from hotlunch_schedules " .
"where school_num = $school_num " .
"and record_num = $schedule_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
echo("<br>\n");
$error_message = "Invalid lunch schedule id";
include "form.messages.php";
return;
}
$schedule_record = db_fetch_array($results);
$schedule_name = $schedule_record['schedule_name'];
// 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 = "You are not allowed access to the requested hot lunch schedule";
include "form.messages.php";
return;
}
}
?>
<br>
<form method='post' action='/' name='orderform'>
<?php
$form_width = '80%';
$message_width = $form_width;
include "form.messages.php";
?>
<table width='<?php echo($form_width) ?>' class='content-table'>
<tr>
<td align='center' class='heading'><?php displayLanguageText('TEXT-MENU-PRICE-UPDATE'); ?> - <?php echo($schedule_name) ?></td>
</tr>
<tr>
<td align='center'>
<br>
<table width='920' cellpadding='1' cellspacing='1' border='0'>
<?php
// Handle a selected menu date
$mwhere = "";
if (isset($selected_menu_num) && $selected_menu_num > 0) $mwhere = "AND record_num = $selected_menu_num ";
// Get menu dates for this schedule
$query = "select * from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
$mwhere .
"order by sequence,menu_date";
$menu_dates = db_query($query);
while ($menu_date = db_fetch_array($menu_dates)) {
$menu_num = $menu_date['record_num'];
$menu_title = $menu_date['menu_title'];
$menu_link = $menu_date['menu_link'];
if ($menu_link != 'No') $menu_title .= " - Linked Menu: $menu_link";
// Get menu items for this menu date
$query = "select * from hotlunch_menu_items " .
"where school_num = $school_num " .
"and menu_num = $menu_num " .
"order by sequence";
$menu_items = db_query($query);
$menuTitle = $menu_title;
if ($hotlunch_schedule['display_menu_date'] == 'Y') $menuTitle .= ' - '.date($school_record['date_format'],strtotime($menu_date['menu_date']));
$menuTitle = str_replace("'","&#39;",$menuTitle);
$mTitle = "<input type='hidden' id='menu-title-$menu_num' value='$menuTitle'>";
?>
<tr>
<td align='left' colspan='9' class='success'>
<table width='100%' cellspacing='0' cellpadding='0' border='0'>
<tr>
<td align='left' class='success'><b><?php echo($menu_title); echo($mTitle); ?></td>
<?php if ($hotlunch_schedule['display_menu_date'] == 'Y') { ?>
<td align='right' class='success'><?php echo(date($school_record['date_format'],strtotime($menu_date['menu_date']))) ?></b></td>
<?php } else { ?>
<td class='success'>&nbsp;</td>
<?php } ?>
</tr>
</td>
</table>
</tr>
<?php
if (db_num_rows($menu_items) > 0) {
?>
<tr>
<td align='left' class='oitem'><b><?php displayLanguageText('TEXT-ITEM'); ?></b></td>
<td width='60' align='center' class='oitem'><b><?php displayLanguageText('TEXT-GROUP'); ?></b></td>
<td width='60' align='center' class='oitem'><b><?php displayLanguageText('TEXT-DISPLAY-PRICES'); ?></b></td>
<td width='60' align='right' class='oitem'><b><?php displayLanguageText('TEXT-ON-LINE'); ?></b></td>
<td width='60' align='right' class='oitem'><b><?php displayLanguageText('TEXT-PAPER'); ?></b></td>
<td width='60' align='right' class='oitem'><b><?php displayLanguageText('TEXT-COST'); ?></b></td>
<td width='60' align='center' class='oitem'><b><?php displayLanguageText('TEXT-TAXABLE'); ?></b></td>
<td width='60' align='center' class='oitem'><b><?php displayLanguageText('TEXT-SALES-SUMMARY'); ?></b></td>
<td align='center' class='oitem'>&nbsp;</td>
</tr>
<?php
}
$Groups = array('A','B','C','D','E','F','G','H','I','J','K','L','M');
$class = 'data-odd';
while ($menu_item = db_fetch_array($menu_items)) {
extract($menu_item);
$menu_item_num = $record_num;
if ($class == 'data-odd') $class = 'data-even';
else $class = 'data-odd';
if ($item_type != 'Heading') {
$item_cost = 0;
$item_cost = floatval(db_getVal("select sum((package_cost / package_qty) * supplier_product_qty) " .
"from hotlunch_menu_products,supplier_products " .
"where hotlunch_menu_products.school_num = $school_num " .
"and supplier_products.school_num = $supplier_school_num " .
"and menu_item_num = $menu_item_num " .
"and supplier_product_num = supplier_products.record_num"));
// Setup field names
$ofield = "oprice_$menu_item_num";
$pfield = "pprice_$menu_item_num";
$gfield = "group_$menu_item_num";
$dfield = "display_$menu_item_num";
$tfield = "taxable_$menu_item_num";
$fpm = " item_num='$menu_item_num' size='6' style='text-align: right; float: right;'";
if (!isset($sales_summary_item)) $sales_summary_item = 'Y';
$disabled = '';
$query = "SELECT count(*) FROM hotlunch_order_items " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND menu_num = $menu_num " .
"AND menu_item_num = $menu_item_num";
$numItemOrdered = db_getVal($query);
if ($numItemOrdered > 0) $disabled = 'disabled';
$itemCheckbox = "<input type='checkbox' class='menu-items-checkbox' id='$menu_item_num' menu_num='$menu_num' item_num='$menu_item_num' $disabled>";
$itemTitle = $item_title;
$itemTitle = str_replace("'","&#39;",$itemTitle);
$iTitle = "<input type='hidden' id='menu-item-title-$menu_item_num' value='$itemTitle'>";
?>
<tr>
<td align='left' class='oitem'><?php echo($item_title); echo($iTitle); ?> ::</td>
<?php if ($menu_link == 'No') { ?>
<td class='oitem' align='center'>
<select name='<?php echo($gfield) ?>' id='<?php echo($gfield) ?>' fname='menu_group' item_num='<?php echo($menu_item_num) ?>' class='menu-group-field'>
<option value=''></option>
<?php
for ($i = 0; $i < count($Groups); $i++) {
$group = $Groups[$i];
$selected = "";
if ($menu_group == $group) $selected = " selected='selected'";
echo(" <option value='$group'$selected>$group</option>\n");
}
?>
</select>
</td>
<td align='center' class='oitem'>
<span id='display-price-$record_num' class='toggle-field' fname='display_price' item_num='<?php echo($menu_item_num) ?>'><?php echo($display_price) ?></span>
</td>
<td align='right' class='oitem'><input type='text' name='<?php echo($ofield) ?>' id='<?php echo($ofield) ?>' fname='online_price' value='<?php echo($currencySymbol . number_format($online_price,2)) ?>'<?php echo($fpm) ?> class='price-field'></td>
<td align='right' class='oitem'><input type='text' name='<?php echo($pfield) ?>' id='<?php echo($pfield) ?>' fname='offline_price' value='<?php echo($currencySymbol . number_format($offline_price,2)) ?>'<?php echo($fpm) ?> class='price-field'></td>
<td align='right' class='oitem'><?php echo($currencySymbol . number_format($item_cost,2)) ?></td>
<td align='center' class='oitem'>
<span id='taxable-$record_num' class='toggle-field' fname='taxable_item' item_num='<?php echo($menu_item_num) ?>'><?php echo($taxable_item) ?></span>
</td>
<td align='center' class='oitem'>
<span id='sales-summary-$record_num' class='toggle-field' fname='sales_summary_item' item_num='<?php echo($menu_item_num) ?>'><?php echo($sales_summary_item) ?></span>
</td>
<td align='center' class='oitem'><?php echo($itemCheckbox) ?></td>
<?php } else { ?>
<td align='center' class='oitem'><span id='menu_group_<?php echo($menu_item_num) ?>'><?php echo($menu_group) ?></span></td>
<td align='center' class='oitem'><span id='display_price_<?php echo($menu_item_num) ?>'><?php echo($display_price) ?></span></td>
<td align='right' class='oitem'><span id='online_price_<?php echo($menu_item_num) ?>'><?php echo($currencySymbol) ?><?php echo(number_format($online_price,2)) ?></span></td>
<td align='right' class='oitem'><span id='offline_price_<?php echo($menu_item_num) ?>'><?php echo($currencySymbol) ?><?php echo(number_format($offline_price,2)) ?></span></td>
<td align='right' class='oitem'><span id='item_cost_<?php echo($menu_item_num) ?>'><?php echo($currencySymbol . number_format($item_cost,2)) ?></span></td>
<td align='center' class='oitem'><span id='taxable_item_<?php echo($menu_item_num) ?>'><?php echo($taxable_item) ?></span></td>
<td align='center' class='oitem'><span id='sales_summary_item_<?php echo($menu_item_num) ?>'><?php echo($sales_summary_item) ?></span></td>
<td align='center' class='oitem'><?php echo($itemCheckbox) ?></td>
<?php } ?>
</tr>
<?php
}
else {
?>
<tr>
<td align='left' colspan='9' class='menudate-subheader'><b> -- <?php echo($item_title) ?> -- </b></td>
</tr>
<?php
}
}
?>
<tr>
<td align='left' colspan='9'>&nbsp;</td>
</tr>
<?php
}
?>
</table>
</td>
</tr>
<tr>
<td align='center'>
<br>
<input type='submit' id='refresh-screen' class='btn btn--primary' value="<?php displayLanguageText('TEXT-REFRESH-DATA'); ?>">
<input type='submit' id='delete-selected-items' class='btn btn--outline' value="<?php displayLanguageText('TEXT-DELETE-SELECTED'); ?>">
<input type='hidden' name='schedule_num' value='<?php echo($schedule_num) ?>'>
<?php if (isset($selected_menu_num) && $selected_menu_num > 0) { ?>
<input type='hidden' name='selected_menu_num' value='<?php echo($selected_menu_num) ?>'>
<?php } ?>
<br>
<br>
</td>
</tr>
</table>
</form>
<?php include "hotlunch_orders.print_buttons.php"; ?>
<script>
$(document).ready(function() {
<?php include "include/ajax.Setup.php" ?>
$(document).on('change', '.price-field', function() {
var item_num = $(this).attr('item_num');
var fname = $(this).attr('fname');
var price = $(this).val();
var fID = $(this).attr('id');
$.ajax({
url: 'ajax.UpdateDBField.php',
data: {
table_name: 'hotlunch_menu_items',
field_name: fname,
field_value: price,
field_type: 'decimal',
record_num: item_num
},
dataType: 'json'
}).done(function(results) {
var new_value = '<?php echo($currencySymbol) ?>'+results.new_value;
$('#'+fID).val(new_value);
if (results.linked.length > 0) {
$.each(results.linked, function(key, entry) {
var linkedField = fname+'_'+entry;
$("#"+linkedField).html(new_value);
});
}
});
});
$(document).on('click', '.toggle-field', function() {
var item_num = $(this).attr('item_num');
var fname = $(this).attr('fname');
var spanID = $(this);
var flag = $(this).html();
var new_flag = 'Y';
if (flag == 'Y') new_flag = 'N';
$.ajax({
url: 'ajax.UpdateDBField.php',
data: {
table_name: 'hotlunch_menu_items',
field_name: fname,
field_value: new_flag,
field_type: 'string',
record_num: item_num
},
dataType: 'json'
}).done(function(results) {
$(spanID).html(new_flag);
if (results.linked.length > 0) {
$.each(results.linked, function(key, entry) {
var linkedField = fname+'_'+entry;
$("#"+linkedField).html(results.new_value);
});
}
});
});
$(document).on('change', '.menu-group-field', function() {
var item_num = $(this).attr('item_num');
var fname = $(this).attr('fname');
var fvalue = $(this).val();
$.ajax({
url: 'ajax.UpdateDBField.php',
data: {
table_name: 'hotlunch_menu_items',
field_name: fname,
field_value: fvalue,
field_type: 'string',
record_num: item_num
},
dataType: 'json'
}).done(function(results) {
if (results.linked.length > 0) {
$.each(results.linked, function(key, entry) {
var linkedField = fname+'_'+entry;
$("#"+linkedField).html(results.new_value);
});
}
});
});
$("#refresh-screen").click(function(e) {
e.preventDefault();
location.reload();
});
$("#delete-selected-items").click(function(e) {
e.preventDefault();
var schedule_num = <?php echo($schedule_num) ?>;
var id;
var ids = '';
var title;
var titles = '';
var mtitle;
var menu_num;
var pmenu_num = 0;
var msg = "<?php displayLanguageText('TEXT-CONFIRM-DELETE'); ?>\n";
$(".menu-items-checkbox").each(function() {
id = $(this).attr('id');
menu_num = $(this).attr('menu_num');
if ($(this).prop('checked')) {
if (menu_num != pmenu_num) {
titles += "\n";
mtitle = $("#menu-title-"+menu_num).val();
titles += mtitle+"\n";
}
pmenu_num = menu_num;
if (ids.length) ids += ',';
ids += id;
title = ' - '+$("#menu-item-title-"+id).val();
titles += title+"\n";
}
});
if (ids.length == 0) {
alert("<?php displayLanguageText('ERRORMSG-NO-ITEMS-SELECTED'); ?>");
return;
}
msg += titles;
var ans = confirm(msg);
if (ans) {
$.getJSON("ajax.MenuItems.Delete.php",
{
table_name: "hotlunch_menu_items",
schedule_num: schedule_num,
selected_items: ids,
action: 'delete-selected-items'
},
function(results) {
if (results.ajax_return_code == -1) {
alert(results.error_message);
return;
}
location.reload();
var msg = "<?php displayLanguageText('TEXT-PROCESS-COMPLETED'); ?>";
if (results.ajax_message.length > 0) msg += "\n" + results.ajax_message;
alert(msg);
}
);
}
});
});
</script>