0) { $menuNumbers = db_escape_string(implode(',',$selected_menus)); $query = "SELECT schedule_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num IN ($menuNumbers)"; $results = db_query($query); if (db_num_rows($results)) { $schedule_num = ""; $selected_schedules = array(); while ($row = db_fetch_array($results)) { if ($schedule_num) $schedule_num .= ","; $schedule_num .= $row['schedule_num']; $selected_schedules[] = $row['schedule_num']; } } $scheduleNums = $schedule_num; $generateDeliverySheet = 'Y'; } else { $action = "schedule-reports"; header("Location: /?action=$action&error_code=NOSCHED"); return; } } else { $selected_schedules[] = $schedule_num; $scheduleNums = $schedule_num; } // Verify the schedule_num is a valid and active schedule $swhere = ""; if ($_SESSION['UserInfo']['type'] == 'Supplier') $swhere = " and supplier_num = " . $_SESSION['UserInfo']['supplier_num']; $today = date("Y-m-d",time()); $query = "select * from hotlunch_schedules " . "where school_num = $school_num " . "and record_num IN ($scheduleNums)"; writeLog($query); $results = db_query($query); if (db_num_rows($results) == 0) { $action = "schedule-reports"; header("Location: /?action=$action&schedule_num=$schedule_num&error_code=INVALIDSCHED"); return; } $schedule = db_fetch_array($results); $ClassNumField = "class_num"; if ($school_record['implement_meal_locations'] == 'Y' && $schedule['class_sort_field'] == 'D' || $schedule['class_sort_field'] == 'L') { $ClassNumField = "meal_location"; $query = "UPDATE people SET meal_location = class_num WHERE school_num = $school_num AND meal_location IS NULL"; writeLog($query); db_query($query); } // Check that there are orders for this schedule $numO = db_getVal("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')"); $numI = db_getVal("SELECT count(*) FROM hotlunch_order_items WHERE school_num = $school_num AND schedule_num IN ($scheduleNums) AND ordered_by_type = 'Concession'"); if ($numO == 0 && $numI == 0) { $action = ""; header("Location: /?action=$action&schedule_num=$schedule_num&error_code=NOORDERS"); return; } $numMenuDates = 1; $menuTitles = ""; $mfirst = ""; $mlast = ""; if (is_array($selected_menus)) { $numMenuDates = count($selected_menus); $firstMenuDate = $selected_menus[0]; writeLog("selected_menus is an array"); writeLog("numMenuDates $numMenuDates"); $menuNumbers = db_escape_string(implode(',',$selected_menus)); for ($i = 0; $i < count($selected_menus); $i++) { $curr_menu_num = $selected_menus[$i]; writeLog("curr_menu_num $curr_menu_num"); $results = db_query("SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $curr_menu_num"); $row = db_fetch_assoc($results); if ($numMenuDates == 1) $mdate = date("Y-m-d",strtotime($row['menu_date'])); $schedule_num = $row['schedule_num']; $title = $row['menu_title']; writeLog("schedule_num $schedule_num"); writeLog("menu title: $title"); $menu_date = dateString('date',strtotime($row['menu_date'])); $display_date = db_getVal("SELECT display_menu_date FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num"); if ($display_date == 'Y') $title .= " - $menu_date"; if ($i == 0) $mfirst = $title; if ($i == count($selected_menus) - 1) $mlast = $title; if ($i > 0) { if (($i % 2) == 0) $menuTitles .= "\n"; else $menuTitles .= " / "; } $menuTitles .= $title; include "supplier_orders.post.php"; } if (count($selected_menus) > 8) $menuTitles = $mfirst . ' - ' . $mlast; $schedule_num = $scheduleNums; $orderTitle = ""; } else { writeLog("selected_menus is NOT an array"); $num_schedules = count($selected_schedules); writeLog("num_schedules $num_schedules"); for ($i = 0; $i < count($selected_schedules); $i++) { $schedule_num = $selected_schedules[$i]; writeLog("schedule_num $schedule_num"); include "supplier_orders.post.php"; } $schedule_num = $scheduleNums; $menuNumbers = $selected_menus; $firstMenuDate = $selected_menus; $snum = db_getVal("SELECT schedule_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $selected_menus"); $query = "SELECT * FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $snum"; writeLog($query); $results = db_query($query); $row = db_fetch_assoc($results); $display_menu_date = $row['display_menu_date']; $schedule_name = $row['schedule_name']; // Get Title for products list $query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $selected_menus"; writeLog($query); $results = db_query($query); $menu_date = db_fetch_array($results); $mdate = date("Y-m-d",strtotime($menu_date['menu_date'])); if ($display_menu_date == 'Y') { $orderTitle = $schedule_name . " - " . $menu_date['menu_title'] . ': ' . dateString('default',strtotime($menu_date['menu_date'])); } else { $orderTitle = $schedule_name . " - " . $menu_date['menu_title']; } } // 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"; $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"); } } // // Setup the PDF // $document_font = $school_record['document_font']; if (strlen($document_font) == 0) $document_font = "Helvetica"; $document_font_weight = ""; $document_text_color = "#000000"; $document_font_size = 9; // Set parameters for this document $max_rows = 250; $left_col = 16; $start_col = 10; $order_date_col = 131; $order_date_row = 29; $order_date_width = 65; $school_col = 111; $qty_col = 145; $amount_col = 180; $title_width = 190; $address_row = 46; $account_row = 81; $account_col = 111; $discount_row = 185; $subtotal_row = 190; $tax_row = 195; $total_row = 225; $notes_row = 231; $start_row = 98; $incr = 3.5; // // Setup PDF document // require("tcpdf/config/lang/eng.php"); require("tcpdf/tcpdf.php"); $logo_url = $school_record['logo_url']; $logo_image = "images/" . $school_record['logo_image']; $logo_row = $max_rows + 10; $document_name = getLanguageText('TEXT-SUPPLIER-ORDER'); $footer_text = ""; class PDF extends TCPDF { function Header() { global $printTitle, $incr, $document_font, $document_font_size, $start_col, $title_width, $incr, $curr_row, $supplier_name; if (!$printTitle) return; $this->SetFont($document_font,"B",$document_font_size + 1); $this->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); $curr_row = 10; $this->SetXY($start_col,$curr_row); $this->Cell($title_width,$incr + 1,$supplier_name,'0',1,'L',true,'',1); $curr_row = 20; return; } function printForm() { global $incr, $document_font, $document_font_size; // Print the form $this->SetTextColor(0,0,0); $this->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $this->SetLineWidth(0.3); $this->SetDrawColor(0,0,0); // Heading Text $this->SetFont($document_font,"B",$document_font_size + 6); $left_col = 15; $right_col = 105; $width = $right_col - $left_col; $text_row = 20; $this->SetXY($left_col,$text_row); $this->Cell($width,$incr + 2,getLanguageText('TEXT-SUPPLIER-ORDER'),'0',0,'C',false,'',1); // Form Text $this->SetFont($document_font,"B",$document_font_size + 2); // Order Date Box $left_col = 130; $right_col = 200; $top_row = 21; $middle_row = 28; $bottom_row = 35; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Add Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $right_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-ORDER-DATE'),'0',0,'L',false,'',1); // Supplier Box $left_col = 15; $right_col = 105; $top_row = 38; $middle_row = 45; $bottom_row = 70; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Add Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $right_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-SUPPLIER'),'0',0,'L',false,'',1); // School Info Box $left_col = 110; $right_col = 200; $top_row = 38; $middle_row = 45; $bottom_row = 70; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Add Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $right_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-ORDERED-BY'),'0',0,'L',false,'',1); // Delivery Date Box $left_col = 15; $right_col = 105; $top_row = 73; $middle_row = 80; $bottom_row = 87; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Add Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $right_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-DELIVERY-DATE'),'0',0,'L',false,'',1); // Account ID Box $left_col = 110; $right_col = 200; $top_row = 73; $middle_row = 80; $bottom_row = 87; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Add Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $right_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-ACCOUNT-ID'),'0',0,'L',false,'',1); // Items Box $left_col = 15; $qty_col = 140; $amount_col = 170; $right_col = 200; $top_row = 90; $middle_row = 97; $lower_row = 230; $bottom_row = 255; // Draw Box $this->printBox($left_col,$top_row,$right_col,$bottom_row); // Middle Line $this->Line($left_col,$middle_row,$right_col,$middle_row); // Lower Line $this->Line($left_col,$lower_row,$right_col,$lower_row); // Quantity Line $this->Line($qty_col,$top_row,$qty_col,$lower_row); // Amount Line $this->Line($amount_col,$top_row,$amount_col,$lower_row); // Add Item Heading Text $this->SetXY($left_col + 1,$top_row + 1); $width = $qty_col - $left_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-ITEM-DESCRIPTION'),'0',0,'L',false,'',1); // Add Quantity Heading Text $this->SetXY($qty_col + 2,$top_row + 1); $width = $amount_col - $qty_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-QUANTITY'),'0',0,'C',false,'',1); // Add Amount Heading Text $this->SetXY($amount_col + 1,$top_row + 1); $width = $right_col - $amount_col - 2; $this->Cell($width,$incr + 1,getLanguageText('TEXT-AMOUNT'),'0',0,'R',false,'',1); } function printBox($left,$top,$right,$bottom) { // Top Line $this->Line($left,$top,$right,$top); // Bottom Line $this->Line($left,$bottom,$right,$bottom); // Left Line $this->Line($left,$top,$left,$bottom); // Right Line $this->Line($right,$top,$right,$bottom); } function Footer() { global $incr, $left_col, $title_width, $max_rows, $document_font, $document_font_size, $document_name, $logo_image, $logo_url, $logo_row, $footer_text, $school_name; // Print the date $this->SetFont($document_font,"",$document_font_size - 1); $this->SetXY($left_col,$logo_row); $date = dateString('datetime'); $this->Cell($title_width,$incr - 1,"$document_name: $date",'0',1,'R',false,'',1); $this->SetXY($left_col,$logo_row + $incr); $this->Cell($title_width,$incr - 1,"$school_name",'0',1,'R','',1); // Print the footer text if (strlen($footer_text) > 0) { $this->SetXY($left_col,$logo_row + $incr); $this->Cell($title_width,$incr - 1,$footer_text,'0',1,'R',false,'',1); } $this->Image($logo_image,30,$logo_row, 50); } } // Force exact physical size for Letter: 8.5 x 11 inches => 215.9mm x 279.4mm (portrait) $pageFormat = array(215.9, 279.4); $pdf= new PDF('P', 'mm', $pageFormat, true, 'UTF-8', false); // set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); //set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); //set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); $font_red = hexdec("00"); $font_green = hexdec("00"); $font_blue = hexdec("00"); $pdf->SetTextColor($font_red,$font_green,$font_blue); $pdf->SetFont($document_font,"",$document_font_size); $printTitle = false; $pdf->addPage(); $pdf->printForm(); $font_red = hexdec("00"); $font_green = hexdec("00"); $font_blue = hexdec("00"); $school_name = $school_record['pac_name']; $school_address = $school_record['address']; $school_city = $school_record['city']; $school_province = $school_record['province']; $school_postal = $school_record['postal']; $school_phone = $school_record['phone']; $pdf->SetFillColor(hexdec("cc"),hexdec("cc"),hexdec("cc")); // Get set of suppliers to process if ($supplier_school_num == 0) $supplier_school_num = $school_num; writeLog("school_num: $school_num"); writeLog("supplier_school_num: $supplier_school_num"); $swhere = ""; if (isset($selected_supplier_num) && $selected_supplier_num > 0) $swhere = "and soh.supplier_num = $selected_supplier_num "; $query = "select supplier_name,supplier_num,min(delivery_date) as delivery_date " . "from supplier_order_header as soh, suppliers as s " . "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.supplier_num = s.record_num " . $swhere . "GROUP BY 1,2 " . "order by supplier_name"; writeLog($query); $orders = db_query($query); $numOrders = db_num_rows($orders); if ($numOrders == 0) { $error_message = getLanguageText('ERRORMSG-NO-SUPPLIER-ORDER-FOUND'); header("Location: /?error_message=" . urlencode($error_message)); exit(); } // Process each order $page = 1; while ($order = db_fetch_array($orders)) { extract($order); $order_subtotal = 0; $taxable_total = 0; // Get supplier info $query = "select * from suppliers " . "where school_num = $supplier_school_num " . "and record_num = $supplier_num"; writeLog($query); $results = db_query($query); $supplier = db_fetch_array($results); extract($supplier); writeLog($supplier_name); if (strlen($footer_text) == 0) $footer_text = $supplier_name; // Predict the numbr of totals lines there will be $numTotalsLines = 0; if ($school_record['calculate_supplier_costs'] == 'Y') { $numTotalsLines = 1; if ($discount_rate > 0.00) $numTotalsLines++; if (($discount_rate > 0.00) || ($taxable_order == 'Y' && $tax_rate > 0.00)) $numTotalsLines++; if ($taxable_order == 'Y' && $tax_rate > 0.00) $numTotalsLines++; } // Determine the delivery offset amount for this supplier $hotlunchtime = strtotime($delivery_date) + 60 * 60 * 12; $hotlunchdayofweek = date("N",$hotlunchtime); switch($delivery_date_offset) { default: case 'None': $offset = 0; break; case 'Previous Day': $offset = 60 * 60 * 24; break; case 'Two Days': $offset = 60 * 60 * 48; break; case 'Three Days': $offset = 60 * 60 * 72; break; case 'Friday': if ($hotlunchdayofweek >= 5) $offset = ($hotlunchdayofweek - 5) * 60 * 60 * 24; else $offset = (7 - (5 - $hotlunchdayofweek)) * 60 * 60 * 24; break; case 'Thursday': if ($hotlunchdayofweek >= 4) $offset = ($hotlunchdayofweek - 4) * 60 * 60 * 24; else $offset = (7 - (4 - $hotlunchdayofweek)) * 60 * 60 * 24; break; case 'Wednesday': if ($hotlunchdayofweek >= 3) $offset = ($hotlunchdayofweek - 3) * 60 * 60 * 24; else $offset = (7 - (3 - $hotlunchdayofweek)) * 60 * 60 * 24; break; case 'Tuesday': if ($hotlunchdayofweek >= 2) $offset = ($hotlunchdayofweek - 2) * 60 * 60 * 24; else $offset = (7 - (2 - $hotlunchdayofweek)) * 60 * 60 * 24; break; case 'Monday': if ($hotlunchdayofweek >= 1) $offset = ($hotlunchdayofweek - 1) * 60 * 60 * 24; else $offset = (7 - (1 - $hotlunchdayofweek)) * 60 * 60 * 24; break; } $orderdate = dateString('default',time()); $deliverydate = dateString('default',$hotlunchtime - $offset); // 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.schedule_num IN ($scheduleNums) " . "AND soi.menu_num in ($menuNumbers) " . "AND soi.supplier_num = $supplier_num " . "AND soi.supplier_product_num = sp.record_num " . "GROUP BY 1,2,4,5 " . "HAVING sum(online_qty) > 0 " . "ORDER BY sp.sequence,product_name"; writeLog($query); $order_items = db_query($query); writeLog("num items: ".db_num_rows($order_items)); $spacing = 2; if (db_num_rows($order_items) > 10) $spacing = 1; $item_count = 0; $delivery_items = array(); $delivery = array(); // Initialize the delivery array // Get set of all classes with access to this schedule if ($numMenuDates == 1) { $query = "SELECT distinct class_num, entry_type, sequence FROM hotlunch_schedules_classes AS hlsc, classes AS c " . "WHERE hlsc.school_num = $school_num " . "AND c.school_num = $base_school_num " . "AND hlsc.schedule_num IN ($scheduleNums) " . "AND class_num = c.record_num " . "ORDER BY entry_type,sequence"; $results = db_query($query); if (db_num_rows($results) == 0) $results = db_query("SELECT record_num AS class_num FROM classes WHERE school_num = $base_school_num ORDER BY entry_type,sequence"); } else { $query = "SELECT record_num AS class_num FROM classes WHERE school_num = $base_school_num ORDER BY entry_type,sequence"; $results = db_query($query); } while ($row = db_fetch_array($results)) { $num = $row['class_num']; $delivery[$num]['class_num'] = $row['class_num']; $delivery[$num]['total_qty'] = 0; $class_nums[] = $num; } $delivery['Staff']['class_num'] = 0; $delivery['Staff']['total_qty'] = 0; $delivery['Concession']['class_num'] = 0; $delivery['Concession']['total_qty'] = 0; $class_nums[] = 0; $pdf->SetFont($document_font,"",$document_font_size - 1); $HeaderInfo = array(); $HeaderInfo['incr'] = $incr; $HeaderInfo['left_col'] = $left_col; $HeaderInfo['school_col'] = $school_col; $HeaderInfo['document_font'] = $document_font; $HeaderInfo['document_font_size'] = $document_font_size; $HeaderInfo['order_date_col'] = $order_date_col; $HeaderInfo['order_date_row'] = $order_date_row; $HeaderInfo['order_date_width'] = $order_date_width; $HeaderInfo['address_row'] = $address_row; // $HeaderInfo['orderdate'] = $orderdate; $HeaderInfo['orderdate'] = $orderdate; $HeaderInfo['school_name'] = $school_name; $HeaderInfo['school_address'] = $school_address; $HeaderInfo['school_city'] = $school_city; $HeaderInfo['school_phone'] = $school_phone; $HeaderInfo['supplier_name'] = $supplier_name; $HeaderInfo['address'] = $address; $HeaderInfo['city'] = $city; $HeaderInfo['province'] = $province; $HeaderInfo['work_phone'] = $work_phone; $HeaderInfo['fax'] = $fax; $numOrderItems = db_num_rows($order_items); writeLog("numOrderItems: $numOrderItems"); if ($numOrderItems == 0) { if ($page > 1) { $printTitle = false; $pdf->addPage(); $pdf->printForm(); $footer_text = $supplier_name; } printHeaderText($HeaderInfo); $curr_row += $incr * 12; $pdf->SetXY($left_col,$curr_row); $pdf->Cell(100,$incr,getLanguageText('TEXT-NO-ITEMS-FOUND'),'0',1,'L',false,'',1); $page++; continue; } else { $curr_item = 0; $curr_row = $total_row + 1; while ($row = db_fetch_array($order_items)) { $curr_item++; // Print page header info if ($curr_row > $total_row || ($curr_item == $numOrderItems && $curr_row >= ($total_row - $numTotalsLines * 5))) { if ($page > 1) { $printTitle = false; $pdf->addPage(); $pdf->printForm(); $footer_text = $supplier_name; } printHeaderText($HeaderInfo); $curr_row = $account_row; if ($numMenuDates == 1) { $pdf->SetXY($left_col,$curr_row); $pdf->Cell(60,$incr,$deliverydate,'0',1,'L',false,'',1); } $pdf->SetXY($account_col,$curr_row); $pdf->Cell(60,$incr,$account_number,'0',1,'L',false,'',1); $curr_row = $start_row; if (strlen($orderTitle) > 0) { $pdf->SetXY($left_col,$curr_row); $pdf->SetFont($document_font,"B",$document_font_size); $pdf->Cell(100,$incr,$orderTitle,'0',1,'L',false,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 2; } if ((in_array($schedule['schedule_type'],array('Hot Lunch','Date Sensitive')) || $schedule['display_menu_date'] == 'Y') && strlen($menuTitles)) { $pdf->SetXY($left_col + 3,$curr_row); $pdf->SetFont($document_font,"",$document_font_size - 2); $pdf->MultiCell(180,$incr,trim($menuTitles),'0','L',false,1,'','',true,0,false,true,23,'T',true); $pdf->SetFont($document_font,"",$document_font_size); $curr_row = $pdf->GetY() + 2; } $page++; if ($page > 50) break; } extract($row); // Get supplier product name $query = "select * from supplier_products " . "where school_num = $supplier_school_num " . "and supplier_num = $supplier_num " . "and record_num = $supplier_product_num"; writeLog($query); $results = db_query($query); $row = db_fetch_array($results); $product_name = $row['product_name']; $description = $row['product_description']; $supplier_code = $row['supplier_code']; $package_qty = $row['package_qty']; $package_cost = $row['package_cost']; $product_num = $row['record_num']; writeLog("package_cost: $package_cost"); $query = "SELECT sum(qty * hlmp.supplier_product_qty) " . "FROM hotlunch_order_items AS hloi, hotlunch_menu_products AS hlmp, hotlunch_menu_items AS hlmi, hotlunch_order_header AS hloh " . "WHERE hloi.school_num = $school_num " . "AND hlmi.school_num = $school_num " . "AND hlmp.school_num = $school_num " . "AND hloi.school_num = $school_num " . "AND hloh.school_num = $school_num " . "AND hloi.active != 'N' " . "AND hloi.menu_item_num = hlmp.menu_item_num " . "AND hloi.order_num = hloh.record_num " . "AND hloh.status NOT IN ('Inactive','Deleted') " . "AND hlmp.supplier_product_num = $product_num " . "AND hlmp.menu_item_num = hlmi.record_num " . "AND hloi.menu_num IN ($menuNumbers)"; writeLog($query); $online_qty = db_getVal($query); writeLog("online_qty: $online_qty"); if (intval($package_qty) == 0) $package_qty = 1; $qty_ordered = intval(($online_qty + $package_qty - 1) / $package_qty); $estimated_cost = $qty_ordered * $package_cost; writeLog("package_cost: $package_cost"); writeLog("package_qty: $package_qty"); writeLog("qty_ordered: $qty_ordered"); writeLog("estimated_cost: $estimated_cost"); // Include the supplier code value if required if ($print_supplier_code == 'Before' && strlen($supplier_code) > 0) $product_name = "$supplier_code: $product_name"; if ($print_supplier_code == 'After' && strlen($supplier_code) > 0) $product_name = "$product_name ($supplier_code)"; $pdf->SetXY($left_col,$curr_row); $pdf->Cell(120,$incr,$product_name,0,1,'L',false,'',1); if ($school_record['calculate_supplier_costs'] == 'Y' && $estimated_cost) { $pdf->SetXY($qty_col + 7,$curr_row); $text = number_format($qty_ordered,0) . " @ $currencySymbol" . number_format($package_cost,$school_record['supplier_costs_decimals']); $pdf->Cell(16,$incr,$text,'0',1,'R',false,'',1); $pdf->SetXY($amount_col,$curr_row); $pdf->Cell(18,$incr,$currencySymbol . number_format($estimated_cost,2),'0',1,'R',false,'',1); } else { $pdf->SetXY($qty_col,$curr_row); $pdf->Cell(16,$incr,number_format($qty_ordered,0),'0',1,'R',false,'',1); } $order_subtotal += $estimated_cost; if ($row['taxable_product'] == 'Y') $taxable_total += $estimated_cost; $curr_row += $incr; // Print supplier code below if required if ($print_supplier_code == 'Below' && strlen($supplier_code) > 0) { $pdf->SetXY($left_col,$curr_row); $pdf->Cell(100,$incr," ($supplier_code)",'0',1,'L',false,'',1); $curr_row += $incr; } // Print product description if required if ($print_product_description == 'Y' && strlen($description)) { $maxLength = 80; $description = htmlspecialchars_decode($description,ENT_QUOTES); if (strlen($description) > $maxLength) { $words = explode(' ',$description); $d = $words[0]; for ($i = 1; $i < count($words); $i++) { if (strlen($d) + strlen($words[$i]) + 1 > $maxLength) break; $d .= ' ' . $words[$i]; } $description = $d . "..."; } $pdf->SetFont($document_font,"",$document_font_size - 1); $pdf->SetXY($left_col + 5,$curr_row); $pdf->Cell(100,$incr," - $description",'0',1,'L',false,'',1); $curr_row += $incr; $pdf->SetFont($document_font,"",$document_font_size); } // Display package information if not 1 to 1 if ($package_qty != 1) { $pdf->SetFont($document_font,"",$document_font_size - 1); $pdf->SetXY($left_col,$curr_row); $pdf->Cell(100,$incr," ($online_qty / $package_qty)",'0',1,'L',false,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr; } $curr_row += $spacing; $delivery_items[$item_count]['name'] = $product_name; $delivery_items[$item_count]['num'] = $supplier_product_num; // Get delivery report data if required if ($generate_delivery_sheet == 'Y') { // Get totals by division if ($school_record['staff_meals_to_classroom'] == 'Y') { $query = "select division,people.$ClassNumField As class_num,sum(hloi.qty * hlmp.supplier_product_qty) as quantity " . "from hotlunch_menu_items as hlmi, " . "hotlunch_menu_products as hlmp, " . "supplier_products as sp, " . "hotlunch_order_items as hloi, " . "hotlunch_order_header as hloh, " . "people left join classes on (classes.school_num = $base_school_num and people.school_num = $base_school_num and people.$ClassNumField = classes.record_num) " . "where hlmi.school_num = $school_num " . "and hlmp.school_num = $school_num " . "and hloi.school_num = $school_num " . "and hloh.school_num = $school_num " . "and hloh.record_num = hloi.order_num " . "and hloh.status NOT IN ('Inactive','Deleted') " . "and sp.school_num = $supplier_school_num " . "and hlmi.menu_num in ($menuNumbers) " . "and hlmi.record_num = hlmp.menu_item_num " . "and hlmp.supplier_product_num = sp.record_num " . "and hloi.menu_item_num = hlmp.menu_item_num " . "and hloi.active != 'N' " . "and people.school_num = $base_school_num " . "and people.record_num = hloi.ordered_by_num " . "and sp.record_num = $supplier_product_num " . "group by 1,2 " . "order by classes.entry_type,classes.sequence"; } else { $query = "select division,people.$ClassNumField AS class_num,sum(hloi.qty * hlmp.supplier_product_qty) as quantity " . "from hotlunch_menu_items as hlmi, " . "hotlunch_menu_products as hlmp, " . "supplier_products as sp, " . "hotlunch_order_items as hloi, " . "hotlunch_order_header as hloh, " . "people left join classes on classes.school_num = $base_school_num and people.$ClassNumField = classes.record_num " . "where hlmi.school_num = $school_num " . "and hlmp.school_num = $school_num " . "and hloi.school_num = $school_num " . "and hloh.school_num = $school_num " . "and hloh.record_num = hloi.order_num " . "and hloh.status NOT IN ('Inactive','Deleted') " . "and sp.school_num = $supplier_school_num " . "and hlmi.menu_num in ($menuNumbers) " . "and hlmi.record_num = hlmp.menu_item_num " . "and hlmp.supplier_product_num = sp.record_num " . "and hloi.menu_item_num = hlmp.menu_item_num " . "and hloi.active != 'N' " . "and people.record_num = hloi.ordered_by_num " . "and people.people_type NOT IN ('Staff','Customer') " . "and sp.record_num = $supplier_product_num " . "and people.school_num = $base_school_num " . "group by 1,2 " . "order by classes.entry_type,classes.sequence"; } writeLog($query); $delivery_results = db_query($query); // Save division totals to array while ($row = db_fetch_array($delivery_results)) { $div = $row['division']; $qty = $row['quantity']; $num = $row['class_num']; $index = 'Staff'; $class_info = 'Staff'; if ($num) $index = $num; $delivery[$index][$item_count] = $qty; $delivery[$index]['class_num'] = $num; if (!array_key_exists('total_qty', $delivery[$index])) $delivery[$index]['total_qty'] = 0; $delivery[$index]['total_qty'] += $qty; $class_num = $num; switch($class_info_print) { case 'Class Information': $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; case 'Class Label': default: $delivery[$index]['class_info'] = db_getVal("SELECT label_description FROM classes WHERE school_num = $school_num AND record_num = " . intval($class_num)); if (strlen($delivery[$index]['class_info']) == 0) $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; } $delivery[$index]['div'] = $div; } // Get staff totals if ($school_record['staff_meals_to_classroom'] == 'Y') { if ($school_record['implement_meal_locations'] == 'Y') $cwhere = "AND (people.meal_location = 0 or people.meal_location is null) "; else $cwhere = "and (people.class_num = 0 or people.class_num is null) "; $query = "select 'Staff',sp.record_num as product_num,sp.product_name,sum(hloi.qty * hlmp.supplier_product_qty) as quantity " . "from hotlunch_menu_items as hlmi, " . "hotlunch_menu_products as hlmp, " . "supplier_products as sp, " . "hotlunch_order_items as hloi, " . "hotlunch_order_header as hloh, " . "people " . "where hlmi.school_num = $school_num " . "and hlmp.school_num = $school_num " . "and sp.school_num = $supplier_school_num " . "and hloi.school_num = $school_num " . "and hloh.school_num = $school_num " . "and hloh.record_num = hloi.order_num " . "and hloh.status NOT IN ('Inactive','Deleted') " . "and hlmi.menu_num in ($menuNumbers) " . "and hlmi.record_num = hlmp.menu_item_num " . "and hlmp.supplier_product_num = sp.record_num " . "and hloi.menu_item_num = hlmp.menu_item_num " . "and hloi.active != 'N' " . "and sp.record_num = $supplier_product_num " . "and people.school_num = $base_school_num " . "and people.record_num = hloi.ordered_by_num " . "and people.people_type IN ('Staff','Customer') " . $cwhere . "group by 1,2,3"; } else { $query = "select 'Staff',sp.record_num as product_num,sp.product_name,sum(hloi.qty * hlmp.supplier_product_qty) as quantity " . "from hotlunch_menu_items as hlmi, " . "hotlunch_menu_products as hlmp, " . "supplier_products as sp, " . "hotlunch_order_items as hloi, " . "hotlunch_order_header as hloh, " . "people " . "where hlmi.school_num = $school_num " . "and hlmp.school_num = $school_num " . "and sp.school_num = $supplier_school_num " . "and hloi.school_num = $school_num " . "and hloh.school_num = $school_num " . "and hloh.record_num = hloi.order_num " . "and hloh.status NOT IN ('Inactive','Deleted') " . "and hlmi.menu_num in ($menuNumbers) " . "and hlmi.record_num = hlmp.menu_item_num " . "and hlmp.supplier_product_num = sp.record_num " . "and hloi.menu_item_num = hlmp.menu_item_num " . "and hloi.active != 'N' " . "and people.school_num = $base_school_num " . "and people.people_type IN ('Staff','Customer') " . "and sp.record_num = $supplier_product_num " . "and people.record_num = hloi.ordered_by_num " . "group by 1,2,3"; } writeLog($query); $delivery_results = db_query($query); // Save staff totals to array $row = db_fetch_array($delivery_results); $qty = 0; if (is_array($row) && array_key_exists('quantity',$row)) $qty = $row['quantity']; $index = 'Staff'; $delivery[$index][$item_count] = $qty; $delivery[$index]['total_qty'] += $qty; $delivery[$index]['class_num'] = 'Staff'; $delivery[$index]['class_info'] = 'Staff'; // Get concession totals $query = "select 'Concession',sp.record_num as product_num,sp.product_name,sum(hloi.qty * hlmp.supplier_product_qty) as quantity " . "from hotlunch_menu_items as hlmi, " . "hotlunch_menu_products as hlmp, " . "supplier_products as sp, " . "hotlunch_order_items as hloi " . "where hlmi.school_num = $school_num " . "and hlmp.school_num = $school_num " . "and sp.school_num = $supplier_school_num " . "and hloi.school_num = $school_num " . "and hlmi.menu_num in ($menuNumbers) " . "and hlmi.record_num = hlmp.menu_item_num " . "and hlmp.supplier_product_num = sp.record_num " . "and hloi.menu_item_num = hlmp.menu_item_num " . "and hloi.ordered_by_type = 'Concession' " . "and hloi.active != 'N' " . "and sp.record_num = $supplier_product_num " . "group by 1,2,3"; writeLog($query); $delivery_results = db_query($query); // Save concession totals to array $row = db_fetch_array($delivery_results); $qty = 0; if (is_array($row) && array_key_exists('quantity',$row)) $qty = $row['quantity']; $index = 'Concession'; if (!array_key_exists($item_count, $delivery[$index])) $delivery[$index][$item_count] = 0; if (!array_key_exists('total_qty', $delivery[$index])) $delivery[$index]['total_qty'] = 0; $delivery[$index][$item_count] += $qty; $delivery[$index]['total_qty'] += $qty; $delivery[$index]['class_num'] = 'Concession'; $delivery[$index]['class_info'] = 'Concession'; } $item_count++; } } // Print totals and taxes if required $total_lines = array(); $total_line = 0; if ($school_record['calculate_supplier_costs'] == 'Y' && $order_subtotal) { $pdf->SetFont($document_font,"B",$document_font_size); $order_total = $order_subtotal; // Calculate discount if required if ($discount_rate > 0.00) { $discount_amount = round($order_subtotal * $discount_rate) / 100; $order_subtotal = $order_subtotal - $discount_amount; $order_total = $order_subtotal; $total_lines[$total_line]['text'] = getLanguageText('TEXT-DISCOUNT') . " "; $total_lines[$total_line]['amount'] = "- $currencySymbol" . number_format($discount_amount,2); $total_line++; } // Include additional costs if there are any if (strlen($additional_charges_text) && $additional_charges_amount > 0) { $order_subtotal = $order_subtotal + $additional_charges_amount; $order_total = $order_subtotal; $total_lines[$total_line]['text'] = "$additional_charges_text "; $total_lines[$total_line]['amount'] = "$currencySymbol" . number_format($additional_charges_amount,2); $total_line++; } // Include subtotal if required if (($discount_rate > 0.00) || ($taxable_order == 'Y' && $tax_rate > 0.00)) { $total_lines[$total_line]['text'] = getLanguageText('TEXT-ORDER-SUBTOTAL') . " "; $total_lines[$total_line]['amount'] = $currencySymbol . number_format($order_subtotal,2); $total_line++; } // Calculate taxes if required if ($taxable_order == 'Y' && $tax_rate > 0.00) { $order_taxes = round($taxable_total * $tax_rate) / 100; $order_total = $order_subtotal + $order_taxes; $total_lines[$total_line]['text'] = "$tax_description "; $total_lines[$total_line]['amount'] = $currencySymbol . number_format($order_taxes,2); $total_line++; } $total_lines[$total_line]['text'] = getLanguageText('TEXT-ORDER-TOTAL') . " "; $total_lines[$total_line]['amount'] = $currencySymbol . number_format($order_total,2); // Output the total_lines array $curr_row = $total_row - ($total_line * 5); for ($i = 0; $i < count($total_lines); $i++) { $text = $total_lines[$i]['text']; $value = $total_lines[$i]['amount']; $pdf->SetXY($left_col,$curr_row); $pdf->Cell(100,$incr,$text,'0',1,'R',false,'',1); $pdf->SetXY($amount_col,$curr_row); $pdf->Cell(18,$incr,$value,'0',1,'R',false,'',1); $curr_row += 5; } $pdf->SetFont($document_font,"",$document_font_size); } // Print order notes $pdf->SetFont($document_font,"",$document_font_size - 1); // $pdf->SetFont($document_font,"",$document_font_size); $pdf->SetXY($left_col,$notes_row); $pdf->MultiCell(190,$incr - 1,trim($order_notes),'0','L',false,1,'','',true,0,false,true,23,'T',true); $pdf->SetFont($document_font,"",$document_font_size); // Get set of classes to report on if additional reports are required // ksort($delivery); $classes = array(); foreach ($delivery as $k => $v) { if (strlen($k) || $k > 0) $classes[] = $k; } // Print the classroom delivery report if required if ($generate_delivery_sheet == 'Y') { // Print division totals $delivery_totals = array(); $dpage = 1; $last_col = 0; $num_columns = 10; $delivery_groups = array(); $query = "SELECT * FROM delivery_groups WHERE school_num = $school_num ORDER BY sequence,group_id"; writeLog($query); $results = db_query($query); while ($row = db_fetch_assoc($results)) { $delivery_groups[$row['group_id']] = array(); } $numPages = intval((count($delivery_items) + $num_columns - 1) / $num_columns); $numClassPerPage = 40; $numClassSets = intval((count($classes) + $numClassPerPage - 1) / $numClassPerPage); for ($cs = 0; $cs < $numClassSets; $cs++) { $start_class = $cs * $numClassPerPage; $end_class = $start_class + $numClassPerPage; if ($end_class > count($classes)) $end_class = count($classes); // Process each page to display all the items for ($currPage = 0; $currPage < $numPages; $currPage++) { $printTitle = true; $pdf->addPage(); $page++; if ($page > 50) break; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetFillColor(hexdec("cc"),hexdec("cc"),hexdec("cc")); $col_width = 16; $first_col_width = 20; $curr_row = 12; $pdf->SetXY($start_col,$curr_row); $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-DATE') . " :: $deliverydate",'0',1,'L',true,'',1); $pdf->SetFont($document_font,"",$document_font_size - 1); $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $curr_row += $incr + 5; $curr_col = $start_col + $first_col_width + 1; // Determine which items are to be printed $start_item = $currPage * $num_columns; $end_item = ($currPage + 1) * $num_columns; if ($end_item > count($delivery_items)) $end_item = count($delivery_items); // Print item names across top of report $pdf->SetFont($document_font,"",$document_font_size - 3); for ($i = $start_item; $i < $end_item; $i++) { $pdf->SetXY($curr_col,$curr_row); $item_title = $delivery_items[$i]['name']; $pdf->MultiCell($col_width,$incr,$item_title,0,'C',false,0,'','',true,1,false,true,$incr * 5); $curr_col += $col_width + 1; } // Print vertical lines on page $curr_col = $start_col + $first_col_width - $col_width; for ($i = 0; $i <= $num_columns; $i++) { $curr_col += $col_width + 1; $pdf->Line($curr_col,$curr_row,$curr_col,$max_rows - 5); } $pdf->SetFont($document_font,"",$document_font_size - 1); $curr_row += $incr * 5; $bg = true; // Process each class for ($c = $start_class; $c < $end_class; $c++) { // Print class information $class = $classes[$c]; if ($delivery_report_classes == 'Orders' && $delivery[$class]['total_qty'] == 0) continue; // Get class group if required if ($school_record['implement_delivery_groups'] == 'Y') { if (is_numeric($class) && $class > 0) { $group = db_getVal("SELECT delivery_group FROM classes WHERE school_num = $base_school_num AND record_num = $class LIMIT 0,1"); } else { $group = $class; } } if ($class != 'Staff' && $class != 'Concession' && is_numeric($class) && $class > 0) { $class_num = $class; switch($class_info_print) { case 'Class Information': $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; case 'Class Label': default: $delivery[$index]['class_info'] = db_getVal("SELECT label_description FROM classes WHERE school_num = $school_num AND record_num = $class_num"); if (strlen($delivery[$index]['class_info']) == 0) $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; } $class_id = $delivery[$index]['class_info']; } else { $class_id = $class; } $curr_col = $start_col; $pdf->SetXY($curr_col,$curr_row); $pdf->SetFont($document_font,"",$document_font_size - 2); $pdf->Cell($first_col_width,$incr,$class_id,'0',1,'L',$bg,'',1); $pdf->SetFont($document_font,"",$document_font_size - 1); $curr_col = $start_col + $first_col_width + 2; for ($i = $start_item; $i < $end_item; $i++) { $pdf->SetXY($curr_col,$curr_row); $qty = 0; if (array_key_exists($class, $delivery) && array_key_exists($i, $delivery[$class])) $qty = number_format($delivery[$class][$i],0); $pdf->Cell($col_width - 1,$incr,$qty,'0',1,'C',$bg,'',1); $curr_col += $col_width + 1; if (array_key_exists($class, $delivery) && array_key_exists($i, $delivery[$class])) { if (!array_key_exists($i, $delivery_totals)) $delivery_totals[$i] = 0; $delivery_totals[$i] += $delivery[$class][$i]; if ($school_record['implement_delivery_groups'] == 'Y') { if (is_array($group)) $group = implode(',', $group); if (!array_key_exists($group, $delivery_groups)) $delivery_groups[$group] = array(); if (!array_key_exists($i, $delivery_groups[$group])) $delivery_groups[$group][$i] = 0; $delivery_groups[$group][$i] += $delivery[$class][$i]; } } } // Fill in the remaining sections of the report if ($end_item < ($num_columns * ($currPage + 1)) && $bg) { for ($i = $end_item; $i < ($num_columns * ($currPage + 1)); $i++) { $pdf->SetXY($curr_col,$curr_row); $pdf->Cell($col_width - 1,$incr,"",'0',1,'C',$bg,'',1); $curr_col += $col_width + 1; } } $curr_row += $incr + 1; $bg = ! $bg; } $pdf->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); // Print totals $curr_row += 1; $curr_col = $start_col; $pdf->SetXY($curr_col,$curr_row); $pdf->Cell($first_col_width,$incr,getLanguageText('TEXT-TOTALS') . " ::",'0',1,'L',true,'',1); $curr_col = $start_col + $first_col_width + 2; for ($i = $start_item; $i < $end_item; $i++) { $pdf->SetXY($curr_col,$curr_row); $qty = ""; if ($i < count($delivery_totals)) $qty = number_format($delivery_totals[$i]); $pdf->Cell($col_width - 1,$incr,$qty,'0',1,'C',true,'',1); $curr_col += $col_width + 1; } // Fill in the remaining sections of the report if ($end_item < ($num_columns * ($currPage + 1))) { for ($i = $end_item; $i < ($num_columns * ($currPage + 1)); $i++) { $pdf->SetXY($curr_col,$curr_row); $pdf->Cell($col_width - 1,$incr,"",'0',1,'C',true,'',1); $curr_col += $col_width + 1; } } // Print delivery group totals if required if ($school_record['implement_delivery_groups'] == 'Y') { $curr_row += $incr * 3; if ($curr_row + count($delivery_groups) * $incr > $max_rows - 40) { $printTitle = true; $pdf->addPage(); $curr_row = 17; $curr_col = $start_col + $first_col_width + 1; // Determine which items are to be printed $start_item = $currPage * $num_columns; $end_item = ($currPage + 1) * $num_columns; if ($end_item > count($delivery_items)) $end_item = count($delivery_items); // Print item names across top of report $pdf->SetFont($document_font,"",$document_font_size - 3); for ($i = $start_item; $i < $end_item; $i++) { $pdf->SetXY($curr_col,$curr_row); $item_title = $delivery_items[$i]['name']; $pdf->MultiCell($col_width,$incr,$item_title,0,'C',false,0,'','',true,1,false,true,$incr * 5); $curr_col += $col_width + 1; } $curr_row += $incr * 5; } $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $bg = true; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($first_col_width,$incr,getLanguageText('TEXT-DELIVERY-GROUPS'),'0',1,'C',false,'',1); $pdf->SetFont($document_font,"",$document_font_size - 1); $curr_row += $incr + 1; foreach ($delivery_groups as $g => $group_totals) { $curr_col = $start_col; $pdf->SetXY($curr_col,$curr_row); $gtitle = $g; $results = db_query("SELECT * FROM delivery_groups WHERE school_num = $base_school_num AND group_id = '$g'"); if (db_num_rows($results)) { $row = db_fetch_assoc($results); $gtitle = $row['group_title']; } $pdf->Cell($first_col_width,$incr,$gtitle,'0',1,'C',$bg,'',1); $curr_col = $start_col + $first_col_width + 2; for ($i = $start_item; $i < $end_item; $i++) { $pdf->SetXY($curr_col,$curr_row); $qty = ""; if ($i < count($group_totals)) { if (array_key_exists($i, $group_totals)) $qty = number_format($group_totals[$i]); } $pdf->Cell($col_width - 1,$incr,$qty,'0',1,'C',$bg,'',1); $curr_col += $col_width + 1; } $curr_row += $incr + 2; $bg = !$bg; } // Print vertical lines for delivery groups $curr_col = $start_col + $first_col_width - $col_width; $curr_row += $incr; for ($i = 0; $i <= $num_columns; $i++) { $curr_col += $col_width + 1; $pdf->Line($curr_col,17,$curr_col,$curr_row - 5); } } } } } // Print the product options report if required if ($generate_options_report == 'Y') { $curr_row = $max_rows + 1; $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); for ($i = 0; $i < count($delivery_items); $i++) { $name = $delivery_items[$i]['name']; $num = $delivery_items[$i]['num']; // Get the menu item number that corresponds to this product $query = "SELECT hlmi.record_num,hlmi.options " . "FROM hotlunch_menu_items as hlmi, hotlunch_menu_products as hlmp " . "WHERE hlmi.school_num = $school_num " . "AND hlmi.menu_num IN ($menuNumbers) " . "AND hlmp.school_num = $school_num " . "AND hlmp.menu_item_num = hlmi.record_num " . "AND hlmp.supplier_product_num = $num"; writeLog($query); $results = db_query($query); $mitems = array(); while ($row = db_fetch_assoc($results)) { $mitems[] = $row['record_num']; $options = trim($row['options']); } $menu_item_nums = implode(",",$mitems); if ($include_all_items == 'N' && strlen($options) == 0) continue; // Start if new page if required if ($curr_row > ($max_rows - 10)) { $printTitle = true; $pdf->addPage(); $page++; if ($page > 50) break; $curr_row = 16; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-PRODUCT-OPTIONS-REPORT') . " :: $supplier_name",'0',1,'L',true,'',1); if ($numMenuDates == 1) { $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-DATE') . " :: $deliverydate",'0',1,'L',true,'',1); } $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 3; } // Get set of ordered items $query = "SELECT options_ordered,options2_ordered,options3_ordered,sum(qty * hlmp.supplier_product_qty) as qty " . "FROM hotlunch_order_items AS hloi, hotlunch_order_header AS hloh, hotlunch_menu_products AS hlmp " . "WHERE hloi.school_num = $school_num " . "AND hloh.school_num = $school_num " . "AND hlmp.school_num = $school_num " . "AND hloh.record_num = hloi.order_num " . "AND hloh.status NOT IN ('Inactive','Deleted') " . "AND hloi.menu_num IN ($menuNumbers) " . "AND hloi.menu_item_num IN ($menu_item_nums) " . "AND hloi.active != 'N' " . "AND hlmp.menu_item_num = hloi.menu_item_num " . "AND hlmp.supplier_product_num = $num " . "GROUP BY 1,2,3 " . "ORDER BY 1,2,3"; $results = db_query($query); if (db_num_rows($results) > 0) { $pdf->SetFont($document_font,"",$document_font_size); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr,$name,'0',1,'L',true,'',1); $curr_row += $incr + 1; $pdf->SetFont($document_font,"",$document_font_size - 1); while ($row = db_fetch_array($results)) { // Start if new page if required if ($curr_row > ($max_rows - 10)) { $printTitle = true; $pdf->addPage(); $page++; if ($page > 50) break; $curr_row = 16; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-PRODUCT-OPTIONS-REPORT') . " :: $supplier_name",'0',1,'L',true,'',1); $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-DATE') . " :: $deliverydate",'0',1,'L',true,'',1); $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 3; $pdf->SetFont($document_font,"",$document_font_size); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr,"$name - continued",'0',1,'L',true,'',1); $curr_row += $incr + 1; $pdf->SetFont($document_font,"",$document_font_size - 1); } extract($row); $options_ordered = trim($options_ordered); $options2_ordered = trim($options2_ordered); $options3_ordered = trim($options3_ordered); $oordered = ""; if (strlen($options_ordered)) $oordered = trim($options_ordered); if (strlen($options2_ordered)) $oordered = trim($oordered . "\n" . $options2_ordered); if (strlen($options3_ordered)) $oordered = trim($oordered . "\n" . $options3_ordered); $options = str_replace("\n",", ",trim($oordered)); if (strlen(trim($options)) == 0) $options = "No Options Selected"; $width = 175; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($width,$incr,$options,'1',1,'L',false,'',1); $pdf->SetXY($start_col + $width,$curr_row); $pdf->Cell(15,$incr,$qty,'1',1,'R',false,'',1); $curr_row += $incr; } $curr_row += 3; } } } // Print the product options delivery report if required if ($numMenuDates >= 1 && $generate_options_delivery_report == 'Y') { // if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog("supplier_orders.print - product options delivery"); $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $page++; if ($page > 50) break; $curr_row = $max_rows; $num_items = count($delivery_items); $school_options = array(); for ($c = 0; $c < count($classes); $c++) { $index = $classes[$c]; $class_num = $delivery[$index]['class_num']; $class_info = ''; if (array_key_exists($index, $delivery) && array_key_exists('class_info', $delivery[$index])) $class_info = $delivery[$index]['class_info']; $num = $class_num; $optionsPrinted = false; // Start a new page if required $newPage = 'N'; $newClass = 'Y'; if ($class_num != 'Staff' && $class_num != 'Concession') { if (($curr_row + ($num_items) * $incr) > ($max_rows - 5)) $newPage = 'Y'; if (is_numeric($class_num) && $class_num > 0) { switch($class_info_print) { case 'Class Information': $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; case 'Class Label': default: $delivery[$index]['class_info'] = db_getVal("SELECT label_description FROM classes WHERE school_num = $school_num AND record_num = $class_num"); if (strlen($delivery[$index]['class_info']) == 0) $delivery[$index]['class_info'] = getClassInfo($class_num,'internal',1); break; } $class_info = $delivery[$index]['class_info']; } } else { $class_info = $class_num; if (($curr_row + $num_items * $incr) > ($max_rows - 10)) $newPage = 'Y'; } // // Get and print the class totals // for ($i = 0; $i < count($delivery_items); $i++) { $name = $delivery_items[$i]['name']; $num = $delivery_items[$i]['num']; // Get the menu item number that corresponds to this product $query = "SELECT hlmi.record_num,hlmi.options " . "FROM hotlunch_menu_items as hlmi, hotlunch_menu_products as hlmp " . "WHERE hlmi.school_num = $school_num " . "AND hlmi.menu_num IN ($menuNumbers) " . "AND hlmp.school_num = $school_num " . "AND hlmp.menu_item_num = hlmi.record_num " . "AND hlmp.supplier_product_num = $num"; $results = db_query($query); $mitems = array(); while ($row = db_fetch_assoc($results)) { $mitems[] = $row['record_num']; $options = trim($row['options']); } $menu_item_nums = implode(",",$mitems); if ($include_all_items == 'N' && strlen($options) == 0) continue; // Get set of ordered items if ($class_num != 'Staff' && $class_num != 'Concession') { $swhere = ""; if ($school_record['staff_meals_to_classroom'] == 'N') $swhere = "AND hloh.ordered_by_type != 'Staff' "; $query = "SELECT options_ordered,options2_ordered,options3_ordered,sum(qty) AS qty " . "FROM hotlunch_order_items AS hloi, hotlunch_order_header AS hloh, people AS p " . "WHERE hloi.school_num = $school_num " . "AND hloh.school_num = $school_num " . "AND hloh.record_num = hloi.order_num " . "AND hloh.status NOT IN ('Inactive','Deleted') " . $swhere . "AND hloi.menu_num IN ($menuNumbers) " . "AND hloi.menu_item_num IN ($menu_item_nums) " . "AND hloi.ordered_by_num = p.record_num " . "AND hloi.active != 'N' " . "AND p.class_num = $class_num " . "AND p.school_num = $base_school_num " . "GROUP BY 1,2,3 " . "ORDER BY 1,2,3"; $options_results = db_query($query); } else { if ($class_num == 'Staff') { if ($school_record['implement_meal_locations'] == 'Y') $cwhere = "AND p.meal_location = 0 "; else $cwhere = "AND p.class_num = 0 "; if ($school_record['staff_meals_to_classroom'] == 'N') $cwhere = "AND hloi.ordered_by_type = 'Staff' "; $query = "SELECT options_ordered,options2_ordered,options3_ordered,sum(qty) as qty " . "FROM hotlunch_order_items as hloi, hotlunch_order_header AS hloh, people as p " . "WHERE hloi.school_num = $school_num " . "AND hloh.school_num = $school_num " . "AND hloh.record_num = hloi.order_num " . "AND hloh.status NOT IN ('Inactive','Deleted') " . "AND hloi.menu_num IN ($menuNumbers) " . "AND hloi.menu_item_num IN ($menu_item_nums) " . "AND hloi.ordered_by_num = p.record_num " . "AND hloi.active != 'N' " . $cwhere . "AND p.school_num = $base_school_num " . "GROUP BY 1,2,3 " . "ORDER BY 1,2,3"; $options_results = db_query($query); } else { $query = "SELECT options_ordered,options2_ordered,options3_ordered,sum(qty) as qty " . "FROM hotlunch_order_items as hloi " . "WHERE hloi.school_num = $school_num " . "AND hloi.menu_num IN ($menuNumbers) " . "AND hloi.menu_item_num IN ($menu_item_nums) " . "AND hloi.ordered_by_type = 'Concession' " . "AND hloi.active != 'N' " . "GROUP BY 1,2,3 " . "ORDER BY 1,2,3"; $options_results = db_query($query); } } $numItems = db_num_rows($options_results); if ($numItems == 0) continue; if ($newClass == 'Y' && ($curr_row + ($numItems + 6) * $incr) > ($max_rows - $numItems)) $newPage = 'Y'; // Start new page if required if ($newPage == 'Y') { $printTitle = true; $pdf->addPage(); $page++; if ($page > 50) break; $curr_row = 16; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-PRODUCT-OPTIONS-DELIVERY-REPORT') . " :: $supplier_name",'0',1,'L',true,'',1); $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-DATE') . " :: $deliverydate",'0',1,'L',true,'',1); $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr; $newPage = 'N'; $newClass = 'Y'; } if ($newClass == 'Y') { if ($optionsPrinted && $i > 0) $class_info = "$class_info (continued)"; $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->SetFont($document_font,"B",$document_font_size); $pdf->Cell($title_width,$incr + 1,$GlobalText['Class'] . " :: $class_info",'0',1,'L',true,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 3; $newClass = 'N'; } if (db_num_rows($options_results) > 0) { while ($row = db_fetch_array($options_results)) { extract($row); $oordered = ""; $options_ordered = trim($options_ordered); $options2_ordered = trim($options2_ordered); $options3_ordered = trim($options3_ordered); if (strlen($options_ordered)) $oordered = trim($options_ordered); if (strlen($options2_ordered)) $oordered = trim($oordered . "\n" . $options2_ordered); if (strlen($options3_ordered)) $oordered = trim($oordered . "\n" . $options3_ordered); $options = str_replace("\n",", ",trim($oordered)); $text = $name; if (strlen($options) > 0) $text .= " + $options"; $width = 175; $pdf->SetXY($start_col,$curr_row); $pdf->SetFont($document_font,"",$document_font_size - 2); $pdf->Cell($width,$incr,$text,'1',1,'L',false,'',1); $pdf->SetXY($start_col + $width,$curr_row); $pdf->Cell(15,$incr,$qty,'1',1,'R',false,'',1); $curr_row += $incr; if ($curr_row >= 250) { $pdf->addPage(); $pdf->SetXY($start_col,$curr_row); $pdf->SetFont($document_font,"B",$document_font_size); $pdf->Cell($title_width,$incr + 1,$GlobalText['Class'] . " :: $class_info (continued)",'0',1,'L',true,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 3; } $optionsPrinted = true; } $curr_row += 1; } } } // // Get and print the school totals // $newPage = 'Y'; for ($i = 0; $i < count($delivery_items); $i++) { $name = $delivery_items[$i]['name']; $num = $delivery_items[$i]['num']; // Get the menu item number that corresponds to this product $query = "SELECT hlmi.record_num,hlmi.options " . "FROM hotlunch_menu_items as hlmi, hotlunch_menu_products as hlmp " . "WHERE hlmi.school_num = $school_num " . "AND hlmi.menu_num IN ($menuNumbers) " . "AND hlmp.school_num = $school_num " . "AND hlmp.menu_item_num = hlmi.record_num " . "AND hlmp.supplier_product_num = $num"; $results = db_query($query); $mitems = array(); while ($row = db_fetch_assoc($results)) { $mitems[] = $row['record_num']; $options = trim($row['options']); } $menu_item_nums = implode(",",$mitems); if ($include_all_items == 'N' && strlen($options) == 0) continue; // Get set of ordered items $query = "SELECT options_ordered,options2_ordered,options3_ordered,sum(qty * hlmp.supplier_product_qty) as qty " . "FROM hotlunch_order_items AS hloi, hotlunch_order_header AS hloh, hotlunch_menu_products AS hlmp " . "WHERE hloi.school_num = $school_num " . "AND hloh.school_num = $school_num " . "AND hlmp.school_num = $school_num " . "AND hloh.record_num = hloi.order_num " . "AND hloh.status NOT IN ('Inactive','Deleted') " . "AND hloi.menu_num IN ($menuNumbers) " . "AND hloi.menu_item_num IN ($menu_item_nums) " . "AND hloi.active != 'N' " . "AND hlmp.menu_item_num = hloi.menu_item_num " . "AND hlmp.supplier_product_num = $num " . "GROUP BY 1,2,3 " . "ORDER BY 1,2,3"; $options_results = db_query($query); $numOptions = db_num_rows($options_results); if (($curr_row + $numOptions * $incr) > ($max_rows - 5)) $newPage = 'Y'; if ($newPage == 'Y') { $printTitle = true; $pdf->addPage(); $page++; if ($page > 50) break; $curr_row = 16; $pdf->SetFont($document_font,"B",$document_font_size + 1); $pdf->SetFillColor(hexdec("bb"),hexdec("bb"),hexdec("bb")); $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-PRODUCT-OPTIONS-DELIVERY-REPORT') . " :: $supplier_name",'0',1,'L',true,'',1); $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-DATE') . " :: $deliverydate",'0',1,'L',true,'',1); $pdf->SetFillColor(hexdec("dd"),hexdec("dd"),hexdec("dd")); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr; $curr_row += $incr + 2; $pdf->SetXY($start_col,$curr_row); $pdf->SetFont($document_font,"B",$document_font_size); $pdf->Cell($title_width,$incr + 1,getLanguageText('TEXT-SCHOOL-TOTALS'),'0',1,'L',true,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr + 3; $newPage = 'N'; } $qty = 0; while ($row = db_fetch_array($options_results)) { extract($row); $options_ordered = trim($options_ordered); $options2_ordered = trim($options2_ordered); $options3_ordered = trim($options3_ordered); $oordered = ""; if (strlen($options_ordered)) $oordered = trim($options_ordered); if (strlen($options2_ordered)) $oordered = trim($oordered . "\n" . $options2_ordered); if (strlen($options3_ordered)) $oordered = trim($oordered . "\n" . $options3_ordered); $options = str_replace("\n",", ",trim($oordered)); if (strlen(trim($options)) == 0) $options = ""; $text = $name; if (strlen(trim($options)) > 0) $text .= " + $options"; $width = 175; $pdf->SetXY($start_col,$curr_row); $pdf->SetFont($document_font,"",$document_font_size - 2); $pdf->Cell($width,$incr,$text,'1',1,'L',false,'',1); $pdf->SetXY($start_col + $width,$curr_row); $pdf->Cell(15,$incr,$qty,'1',1,'R',false,'',1); $curr_row += $incr; if ($curr_row >= 245) $pdf->addPage(); } if ($qty > 0) $curr_row += 2; } } } // Output the completed PDF $filename = "supplier-orders.pdf"; if (isset($mdate)) $filename = "supplier-orders.$mdate.pdf"; $filename = genFileName($filename); 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/pdf'); header("Content-Disposition: attachment; filename=$filename"); header('Content-Transfer-Encoding: binary'); $pdf->Output($filename,"D"); function printHeaderText($HeaderInfo) { global $pdf, $curr_row; extract($HeaderInfo); $pdf->SetFont($document_font,"B",$document_font_size); $pdf->SetXY($order_date_col,$order_date_row); $pdf->Cell($order_date_width,$incr + 2," $orderdate",'0',1,'L',false,'',1); $curr_row = $address_row; $pdf->SetXY($school_col,$curr_row); $pdf->Cell(170,$incr,$school_name,'0',1,'L',false,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr; $pdf->SetXY($school_col,$curr_row); $pdf->Cell(170,$incr,$school_address,'0',1,'L',false,'',1); $curr_row += $incr; $pdf->SetXY($school_col,$curr_row); $pdf->Cell(170,$incr,"$school_city, $province",'0',1,'L',false,'',1); $curr_row += $incr * 1.5; $pdf->SetXY($school_col,$curr_row); $pdf->Cell(170,$incr,getLanguageText('TEXT-PHONE') . ": $school_phone",'0',1,'L',false,'',1); $pdf->SetFont($document_font,"B",$document_font_size); $curr_row = $address_row; $pdf->SetXY($left_col,$curr_row); $pdf->Cell(170,$incr,$supplier_name,'0',1,'L',false,'',1); $pdf->SetFont($document_font,"",$document_font_size); $curr_row += $incr; $pdf->SetXY($left_col,$curr_row); $pdf->Cell(170,$incr,$address,'0',1,'L',false,'',1); $curr_row += $incr; $s_city = ""; if ($city) $s_city = $city; if ($province) { if ($s_city) $s_city .= ", "; $s_city .= $province; } $pdf->SetXY($left_col,$curr_row); $pdf->Cell(170,$incr,$s_city,'0',1,'L',false,'',1); $curr_row += $incr * 1.5; if ($work_phone) { $pdf->SetXY($left_col,$curr_row); $pdf->Cell(170,$incr,getLanguageText('TEXT-PHONE') . ": $work_phone",'0',1,'L',false,'',1); } $curr_row += $incr; if ($fax) { $pdf->SetXY($left_col,$curr_row); $pdf->Cell(170,$incr,getLanguageText('TEXT-FAX') . ": $fax",'0',1,'L',false,'',1); } writeLog("Header: $curr_row"); } ?>