Example #1
0
 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();
 }