protected static function printOrderOrWaiterReceipt_(Order $order, Printer $printer, $waiterReceipt) { // Drucker holen und konfigurieren $config = Configuration::instance(); $printer->setPort($config->printerPort()); if ($config->bigPrintFont() == true && $waiterReceipt == false) { $printer->setFontSize(Printer::BIG_FONT); } else { $printer->setFontSize(Printer::NORMAL_FONT); } /* * Bestellung ausdrucken */ if ($waiterReceipt == false) { $printer->printHeadLine($config->kassaName()); } // Höchste Artikel-Sortierungsnummer suchen $maxArtGrpNr = 0; foreach ($order as $orderItem) { if ($orderItem->article()->artGrpNr() > $maxArtGrpNr) { $maxArtGrpNr = $orderItem->article()->artGrpNr(); } } // Über alle Sortierungsnummern iterieren $found = false; $grpSum = 0.0; $pageCount = 0; for ($artGrpNr = 0; $artGrpNr <= $maxArtGrpNr; $artGrpNr++) { if ($found == true) { // Bestellungspositionen mit der vorigen SortNr gefunden --> perforieren if ($waiterReceipt == false) { $printer->newPage(); $printer->printHeadLine($config->kassaName()); } } $found = false; $grpSum = 0.0; // Über alle Bestellungen mit der aktuellen SortNr iterieren foreach ($order as $orderItem) { if ($orderItem->article()->artGrpNr() == $artGrpNr) { $found = true; if ($waiterReceipt == false) { $printer->printOrderLine($orderItem->amount(), $orderItem->article()->artName()); } else { $printer->printOrderLineWithSum($orderItem->amount(), $orderItem->article()->artName(), $orderItem->sumPrice()); } $grpSum += $orderItem->sumPrice(); } } if ($found == true) { $printer->printGrpSum($grpSum); $pageCount++; } } // Nur wenn mehr als 1 Seite, Gesamtsumme auf eigene Seite drucken if ($pageCount > 1) { if ($waiterReceipt == false) { $printer->newPage(); } $printer->printSum($order->sumPrice()); } $printer->cut(); }