0) { $menuNumbers = implode(',',$selected_menus); writeLog("menuNumbers: $menuNumbers"); $results = db_query("SELECT DISTINCT schedule_num FROM hotlunch_menu_dates WHERE record_num IN ($menuNumbers)"); if (db_num_rows($results)) { $schedule_nums = ""; $selected_schedules = array(); while ($row = db_fetch_assoc($results)) { if ($schedule_nums) $schedule_nums .= ","; $schedule_nums .= $row['schedule_num']; $selected_schedules[] = $row['schedule_num']; } } $scheduleNums = $schedule_nums; } else { header("Location: /?action=$action&error_code=NOSCHED"); return; } // Check that there are orders for these schedules writeLog("scheduleNums: $scheduleNums"); $query = "select count(*) from hotlunch_order_header " . "where school_num = $school_num " . "and schedule_num IN ($scheduleNums) " . "and ordered_by_type != 'Concession' " . "and status NOT IN ('Inactive','Deleted')"; $num = db_getVal($query); writeLog("num: $num"); if ($num == 0) { header("Location: /?action=$action&error_code=NOORDERS"); return; } // Post supplier orders for each schedule for ($i = 0; $i < count($selected_menus); $i++) { $curr_menu_num = $selected_menus[$i]; $schedule_num = db_getVal("SELECT schedule_num FROM hotlunch_menu_dates WHERE record_num = $curr_menu_num"); writeLog("schedule_num: $schedule_num -> supplier_orders.post.php"); include "supplier_orders.post.php"; } $numMenuDates = count($selected_menus); $firstMenuDate = $selected_menus[0]; $menuNumbers = implode(',',$selected_menus); // Check the class_num value for staff to ensure that every staff person has a valid class number $query = "SELECT * FROM people WHERE school_num = $base_school_num AND class_num IS NULL"; writeLog($query); $results = db_query($query); if (db_num_rows($results)) { while ($row = db_fetch_assoc($results)) { $rnum = $row['record_num']; db_query("UPDATE people SET class_num = 0 WHERE school_num = $base_school_num AND class_num IS NULL AND record_num = $rnum"); } } // Get set of suppliers to process $swhere = ""; if (isset($selected_supplier_num) && $selected_supplier_num > 0) $swhere = "and soh.supplier_num = $selected_supplier_num "; $query = "SELECT DISTINCT supplier_name,supplier_num,hlmd.menu_date " . "FROM supplier_order_header AS soh, suppliers AS s, hotlunch_menu_dates AS hlmd " . "WHERE soh.school_num = $school_num " . "AND s.school_num = $supplier_school_num " . "AND soh.schedule_num IN ($scheduleNums) " . "AND soh.menu_num IN ($menuNumbers) " . "AND soh.menu_num = hlmd.record_num " . "AND soh.supplier_num = s.record_num " . $swhere . "ORDER BY supplier_name,hlmd.menu_date"; writeLog($query); $orders = db_query($query); // Ensure that there are supplier orders to process if (db_num_rows($orders) == 0) { $error_message = "Error: No Orders Found"; header("Location: /?action=home&error_code=NOORDERS"); return; } // 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=multi-menu-supplier-orders.csv"); header('Content-Transfer-Encoding: text'); echo("\xEF\xBB\xBF"); // Process each order $today = date("D M jS, Y",time()); $prev_supplier = 0; $totals = array(); $products = array(); while ($order = db_fetch_assoc($orders)) { extract($order); $order_subtotal = 0; $mdate = date("D M jS, Y",strtotime($menu_date)); // Print supplier info if this is a new supplier if ($supplier_num != $prev_supplier) { if ($prev_supplier > 0) { echo("\"$prev_supplier_name\",".getLanguageText('TEXT-TOTALS')."," . $totals['qty'] . ",,," . $totals['units'] . "," . $totals['cost'] . "\n"); echo("\n\n\n"); } $prev_supplier = $supplier_num; $totals = array(); $totals['qty'] = 0; $totals['units'] = 0; $totals['cost'] = 0; // Get supplier info $query = "select * from suppliers " . "where school_num = $supplier_school_num " . "AND status = 'Active' " . "and record_num = $supplier_num"; $results = db_query($query); $supplier = db_fetch_assoc($results); extract($supplier); $prev_supplier_name = $supplier_name; switch ($format) { case 'order': echo("\"$supplier_name\"\n"); echo(getLanguageText('TEXT-ITEM').",". getLanguageText('TEXT-ORDERED').",". getLanguageText('TEXT-PACKAGE-QUANTITY').",". getLanguageText('TEXT-PACKAGE-COST').",". getLanguageText('TEXT-UNITS').",". getLanguageText('TEXT-TOTAL')."\n"); break; case 'production': echo("\"$supplier_name\"\n"); echo(getLanguageText('TEXT-ITEM').","); $n = count($selected_menus); for ($i = 0; $i < count($selected_menus); $i++) { $menu_num = $selected_menus[$i]; $schedule_name = db_getVal("SELECT schedule_name FROM hotlunch_schedules AS hls, hotlunch_menu_dates AS hlmd " . "WHERE hls.school_num = $school_num " . "AND hlmd.school_num = $school_num " . "AND hls.record_num = hlmd.schedule_num " . "AND hlmd.record_num = $menu_num"); echo($schedule_name.' - '.$menu_titles[$i].","); if ($staff == 'separate') echo($schedule_name.' - '.$GlobalText['Staff'].","); } echo(getLanguageText('TEXT-TOTAL')); echo("\n"); break; } } // Get and process the order items $query = "SELECT sp.product_name,supplier_product_num,SUM(online_qty) AS online_qty,sp.package_qty,package_cost " . "FROM supplier_order_items as soi, supplier_products as sp " . "WHERE soi.school_num = $school_num " . "AND sp.school_num = $supplier_school_num " . "AND soi.supplier_num = $supplier_num " . "AND soi.supplier_product_num = sp.record_num " . "AND soi.menu_num in ($menuNumbers) " . "GROUP BY 1,2,4,5 " . "ORDER BY sp.sequence,product_name"; $order_items = db_query($query); while ($row = db_fetch_assoc($order_items)) { extract($row); switch ($format) { case 'order': writeLog("online_qty: $online_qty - package_qty: $package_qty"); $units = intval(($online_qty + $package_qty - 1) / $package_qty); $cost = number_format($units * $package_cost,2); echo("\"$product_name\",$online_qty,$package_qty,$package_cost,$units,$cost\n"); $totals['qty'] += $online_qty; $totals['units'] += $units; $totals['cost'] += $cost; if (!array_key_exists($supplier_product_num, $products)) { $products[$supplier_product_num] = array(); $products[$supplier_product_num]['qty'] = 0; } $products[$supplier_product_num]['qty'] += $online_qty; $products[$supplier_product_num]['product_name'] = $product_name; break; case 'production': echo("\"$product_name\","); $itotal = 0; for ($i = 0; $i < count($selected_menus); $i++) { $menu_num = $selected_menus[$i]; $items = db_query("SELECT hlmp.* FROM hotlunch_menu_products AS hlmp, hotlunch_menu_items AS hlmi " . "WHERE hlmp.school_num = $school_num " . "AND hlmi.school_num = $school_num " . "AND hlmi.menu_num = $menu_num " . "AND hlmp.menu_item_num = hlmi.record_num " . "AND hlmp.supplier_product_num = $supplier_product_num"); $cItems = ""; while ($row = db_fetch_assoc($items)) { if (strlen($cItems)) $cItems .= ","; $cItems .= $row['menu_item_num']; } switch ($staff) { case 'included': if (strlen($cItems)) $qty = db_getVal("SELECT sum(qty) FROM hotlunch_order_items WHERE school_num = $school_num AND menu_item_num IN ($cItems)"); if ($qty) echo("$qty,"); else echo("0,"); $itotal += $qty; break; case 'separate': // Get student quantities $qty = 0; if (strlen($cItems)) $qty = db_getVal("SELECT sum(qty) FROM hotlunch_order_items " . "WHERE school_num = $school_num AND menu_item_num IN ($cItems) AND ordered_by_type = 'Student'"); if ($qty) echo("$qty,"); else echo("0,"); $itotal += $qty; // Get non-student quantities if (strlen($cItems)) $qty = db_getVal("SELECT sum(qty) FROM hotlunch_order_items " . "WHERE school_num = $school_num AND menu_item_num IN ($cItems) AND ordered_by_type != 'Student'"); if ($qty) echo("$qty,"); else echo("0,"); $itotal += $qty; break; } } echo("$itotal\n"); break; } } echo("\n"); } if ($format == 'order') { echo("\"$supplier_name\",".getLanguageText('TEXT-TOTALS')."," . $totals['qty'] . ",,," . $totals['units'] . "," . $totals['cost'] . "\n"); echo("\n"); echo(getLanguageText('TEXT-TOTALS').":\n"); echo(getLanguageText('TEXT-PRODUCT').",".getLanguageText('TEXT-ORDERED')."\n"); foreach ($products as $key => $value) { echo("\"" . $products[$key]['product_name'] . "\",".$products[$key]['qty'] . "\n"); } } echo("\n"); ?>