detailPesanan as $key => $value) { $theDiskon = $value->diskon_persen != '' || $value->diskon_persen != 0 || $value->diskon_persen != null ? $value->diskon_persen . '%' : ''; $items[] = $this->buatBaris1Kolom($value->nama_produk); // $items[] = new itemReceipt($value->jumlah_produk . ' Rp. ' . format_uang($value->harga_produk) . ' ' . $theDiskon, 'Rp. ' . format_uang($value->total_harga_produk)); $items[] = $this->buatBaris4Kolom($value->jumlah_produk, 'Rp. ' . format_uang($value->harga_produk), $theDiskon, 'Rp. ' . format_uang($value->total_harga_produk)); } $stk = "Sepiring Telur Keriting\n"; $address = "Jln. Jawa No. 28A, Jember\n"; $dashline = " \n"; $ordercode = $pesanan->kode_pesanan . "\n"; $line1 = $this->buatBaris2Kolom('Meja: ' . $pesanan->nomor_meja, ' Kasir:'); $line2 = $this->buatBaris2Kolom('Antrian: ' . $pesanan->nomor_antrian, $pesanan->user->name . 'ssssss'); $line3 = $this->buatBaris1Kolom('Pemesan: ' . $pesanan->nama_pemesan); $total = $this->buatBaris3Kolom($pesanan->total_pesanan, 'Total: ', 'Rp. ' . format_uang($pesanan->total_bayar)); $theDiskonAll = $pesanan->diskon_persen != '' || $pesanan->diskon_persen != 0 || $pesanan->diskon_persen != null ? $pesanan->diskon_persen . '%' : '0%'; $diskon = $this->buatBaris3Kolom('', 'Diskon: ', $theDiskonAll); $rpgrand_total = 'Rp. ' . format_uang($pesanan->grand_total); $grand_Total = $this->buatBaris3Kolom('', 'Grand Total: ', $rpgrand_total); $bayar = $this->buatBaris3Kolom('', 'Bayar: ', 'Rp. ' . format_uang($pesanan->nominal_bayar)); $kembali = $this->buatBaris3Kolom('', 'Kembali: ', 'Rp. ' . format_uang($pesanan->nominal_kembali)); $terimakasih = "Terima Kasih, Selamat Datang Kembali\n"; $stkfooter = "@sepiringtelurkeriting"; /* Date is kept the same for testing */ $date = tanggal_indonesia($pesanan->tanggal_pesanan) . date('H:i', strtotime($pesanan->tanggal_pesanan)); // end set data // begin print action /* Fill in your own connector here */ $connector = null; if ($printernya->printer_connection == 'wired') { $connector = new WindowsPrintConnector($printernya->nama_printer); $connector->finalize(); } else { $connector = new NetworkPrintConnector($printernya->ip_address, 9100); } /* Start the printer */ $printer = new Printer($connector); /* Print top logo */ $printer->setJustification(Printer::JUSTIFY_CENTER); /* Name of shop */ $printer->selectPrintMode(Printer::MODE_DOUBLE_WIDTH); $printer->text($stk); $printer->selectPrintMode(); $printer->text($address); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); /* Title of receipt */ $printer->setEmphasis(true); $printer->selectPrintMode(Printer::MODE_DOUBLE_WIDTH); $printer->text($ordercode); $printer->selectPrintMode(); $printer->text($date . "\n"); $printer->setEmphasis(false); $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->text($line1); $printer->text($line2); $printer->text($line3); /* Items */ $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->setEmphasis(true); $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->setEmphasis(false); foreach ($items as $item) { $printer->text($item); } $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); // $printer->text($totalItem); $printer->text($total); $printer->text($diskon); $printer->text($grand_Total); $printer->text($bayar); $printer->text($kembali); $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); /* Footer */ $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->text($terimakasih); $printer->text($stkfooter); $printer->feed(); /* Cut the receipt and open the cash drawer */ $printer->cut(); $printer->pulse(); $printer->close(); // end print action return true; } public function print88mmDapur($pesanan, $printernya) { // begin set data $items = []; /* Information for the receipt */ foreach ($pesanan->detailPesanan as $key => $value) { $status_pesanan = $value->status_pesanan == 0 ? '(TAKEAWAY)' : ($value->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)'); $items[] = $this->buatBaris1Kolom('(' . $value->jumlah_produk . ') ' . $value->nama_produk . ' ' . $status_pesanan); if ($value->keterangan_produk != '') { $items[] = $this->buatBaris1Kolom('Ket: ' . $value->keterangan_produk); } } $stk = "Sepiring Telur Keriting\n"; $address = "Jln. Jawa No. 28A, Jember\n"; $dashline = " \n"; $ordercode = $pesanan->kode_pesanan . "\n"; $line1 = $this->buatBaris2Kolom('Meja: ' . $pesanan->nomor_meja, ' Kasir:'); $line2 = $this->buatBaris2Kolom('Antrian: ' . $pesanan->nomor_antrian, $pesanan->user->name . 'ssssss'); $line3 = $this->buatBaris1Kolom('Pemesan: ' . $pesanan->nama_pemesan); $total_pesanan = $this->buatBaris1Kolom($pesanan->total_pesanan . ' Total item'); $keterangan_seluruh = $this->buatBaris1Kolom('Keterangan Pesan Keseluruhan:'); $keterangan_pesanannya = $this->buatBaris1Kolom($pesanan->keterangan_pesanan); /* Date is kept the same for testing */ $date = tanggal_indonesia($pesanan->tanggal_pesanan) . date('H:i', strtotime($pesanan->tanggal_pesanan)); // end set data // begin print action /* Fill in your own connector here */ $connector = null; if ($printernya->printer_connection == 'wired') { $connector = new WindowsPrintConnector($printernya->nama_printer); } else { $connector = new NetworkPrintConnector($printernya->ip_address, 9100); } /* Start the printer */ $printer = new Printer($connector); /* Print top logo */ $printer->setJustification(Printer::JUSTIFY_CENTER); /* Name of shop */ $printer->selectPrintMode(Printer::MODE_DOUBLE_WIDTH); $printer->text($stk); $printer->selectPrintMode(); $printer->text($address); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); /* Title of receipt */ $printer->setEmphasis(true); $printer->text($ordercode); $printer->text($date . "\n"); $printer->setEmphasis(false); $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->text($line1); $printer->text($line2); $printer->text($line3); /* Items */ $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->setEmphasis(true); $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->setEmphasis(false); foreach ($items as $item) { $printer->text($item); } $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); $printer->text($total_pesanan); $printer->text($keterangan_seluruh); $printer->text($keterangan_pesanannya); $printer->setJustification(Printer::JUSTIFY_CENTER); $printer->setUnderline(Printer::UNDERLINE_DOUBLE); $printer->text($dashline); $printer->selectPrintMode(); $printer->setJustification(Printer::JUSTIFY_LEFT); /* Footer */ $printer->feed(); /* Cut the receipt and open the cash drawer */ $printer->cut(); $printer->pulse(); $printer->close(); // end print action return true; } function buatBaris1Kolom($kolom1) { // Mengatur lebar setiap kolom (dalam satuan karakter) $lebar_kolom_1 = 46; // Melakukan wordwrap(), jadi jika karakter teks melebihi lebar kolom, ditambahkan \n $kolom1 = wordwrap($kolom1, $lebar_kolom_1, "\n", true); // Merubah hasil wordwrap menjadi array, kolom yang memiliki 2 index array berarti memiliki 2 baris (kena wordwrap) $kolom1Array = explode("\n", $kolom1); // Mengambil jumlah baris terbanyak dari kolom-kolom untuk dijadikan titik akhir perulangan $jmlBarisTerbanyak = count($kolom1Array); // Mendeklarasikan variabel untuk menampung kolom yang sudah di edit $hasilBaris = array(); // Melakukan perulangan setiap baris (yang dibentuk wordwrap), untuk menggabungkan setiap kolom menjadi 1 baris for ($i = 0; $i < $jmlBarisTerbanyak; $i++) { // memberikan spasi di setiap cell berdasarkan lebar kolom yang ditentukan, $hasilKolom1 = str_pad((isset($kolom1Array[$i]) ? $kolom1Array[$i] : ""), $lebar_kolom_1, " "); // Menggabungkan kolom tersebut menjadi 1 baris dan ditampung ke variabel hasil (ada 1 spasi disetiap kolom) $hasilBaris[] = $hasilKolom1; } // Hasil yang berupa array, disatukan kembali menjadi string dan tambahkan \n disetiap barisnya. return implode($hasilBaris) . "\n"; } function buatBaris2Kolom($kolom1, $kolom2) { // Mengatur lebar setiap kolom (dalam satuan karakter) $lebar_kolom_1 = 23; $lebar_kolom_2 = 23; // Melakukan wordwrap(), jadi jika karakter teks melebihi lebar kolom, ditambahkan \n $kolom1 = wordwrap($kolom1, $lebar_kolom_1, "\n", true); $kolom2 = wordwrap($kolom2, $lebar_kolom_2, "\n", true); // Merubah hasil wordwrap menjadi array, kolom yang memiliki 2 index array berarti memiliki 2 baris (kena wordwrap) $kolom1Array = explode("\n", $kolom1); $kolom2Array = explode("\n", $kolom2); // Mengambil jumlah baris terbanyak dari kolom-kolom untuk dijadikan titik akhir perulangan $jmlBarisTerbanyak = max(count($kolom1Array), count($kolom2Array)); // Mendeklarasikan variabel untuk menampung kolom yang sudah di edit $hasilBaris = array(); // Melakukan perulangan setiap baris (yang dibentuk wordwrap), untuk menggabungkan setiap kolom menjadi 1 baris for ($i = 0; $i < $jmlBarisTerbanyak; $i++) { // memberikan spasi di setiap cell berdasarkan lebar kolom yang ditentukan, $hasilKolom1 = str_pad((isset($kolom1Array[$i]) ? $kolom1Array[$i] : ""), $lebar_kolom_1, " "); // memberikan rata kanan pada kolom 3 dan 4 karena akan kita gunakan untuk harga dan total harga $hasilKolom2 = str_pad((isset($kolom2Array[$i]) ? $kolom2Array[$i] : ""), $lebar_kolom_2, " ", STR_PAD_LEFT); // Menggabungkan kolom tersebut menjadi 1 baris dan ditampung ke variabel hasil (ada 1 spasi disetiap kolom) $hasilBaris[] = $hasilKolom1 . " " . $hasilKolom2; } // Hasil yang berupa array, disatukan kembali menjadi string dan tambahkan \n disetiap barisnya. return implode($hasilBaris) . "\n"; } function buatBaris3Kolom($kolom1, $kolom2, $kolom3) { // Mengatur lebar setiap kolom (dalam satuan karakter) $lebar_kolom_1 = 4; $lebar_kolom_2 = 18; $lebar_kolom_3 = 24; // Melakukan wordwrap(), jadi jika karakter teks melebihi lebar kolom, ditambahkan \n $kolom1 = wordwrap($kolom1, $lebar_kolom_1, "\n", true); $kolom2 = wordwrap($kolom2, $lebar_kolom_2, "\n", true); $kolom3 = wordwrap($kolom3, $lebar_kolom_3, "\n", true); // Merubah hasil wordwrap menjadi array, kolom yang memiliki 2 index array berarti memiliki 2 baris (kena wordwrap) $kolom1Array = explode("\n", $kolom1); $kolom2Array = explode("\n", $kolom2); $kolom3Array = explode("\n", $kolom3); // Mengambil jumlah baris terbanyak dari kolom-kolom untuk dijadikan titik akhir perulangan $jmlBarisTerbanyak = max(count($kolom1Array), count($kolom2Array), count($kolom3Array)); // Mendeklarasikan variabel untuk menampung kolom yang sudah di edit $hasilBaris = array(); // Melakukan perulangan setiap baris (yang dibentuk wordwrap), untuk menggabungkan setiap kolom menjadi 1 baris for ($i = 0; $i < $jmlBarisTerbanyak; $i++) { // memberikan spasi di setiap cell berdasarkan lebar kolom yang ditentukan, $hasilKolom1 = str_pad((isset($kolom1Array[$i]) ? $kolom1Array[$i] : ""), $lebar_kolom_1, " "); // memberikan rata kanan pada kolom 3 dan 4 karena akan kita gunakan untuk harga dan total harga $hasilKolom2 = str_pad((isset($kolom2Array[$i]) ? $kolom2Array[$i] : ""), $lebar_kolom_2, " ", STR_PAD_LEFT); $hasilKolom3 = str_pad((isset($kolom3Array[$i]) ? $kolom3Array[$i] : ""), $lebar_kolom_3, " ", STR_PAD_LEFT); // Menggabungkan kolom tersebut menjadi 1 baris dan ditampung ke variabel hasil (ada 1 spasi disetiap kolom) $hasilBaris[] = $hasilKolom1 . " " . $hasilKolom2 . " " . $hasilKolom3; } // Hasil yang berupa array, disatukan kembali menjadi string dan tambahkan \n disetiap barisnya. return implode($hasilBaris) . "\n"; } function buatBaris4Kolom($kolom1, $kolom2, $kolom3, $kolom4) { // Mengatur lebar setiap kolom (dalam satuan karakter) $lebar_kolom_1 = 4; $lebar_kolom_2 = 12; $lebar_kolom_3 = 4; $lebar_kolom_4 = 25; // Melakukan wordwrap(), jadi jika karakter teks melebihi lebar kolom, ditambahkan \n $kolom1 = wordwrap($kolom1, $lebar_kolom_1, "\n", true); $kolom2 = wordwrap($kolom2, $lebar_kolom_2, "\n", true); $kolom3 = wordwrap($kolom3, $lebar_kolom_3, "\n", true); $kolom4 = wordwrap($kolom4, $lebar_kolom_4, "\n", true); // Merubah hasil wordwrap menjadi array, kolom yang memiliki 2 index array berarti memiliki 2 baris (kena wordwrap) $kolom1Array = explode("\n", $kolom1); $kolom2Array = explode("\n", $kolom2); $kolom3Array = explode("\n", $kolom3); $kolom4Array = explode("\n", $kolom4); // Mengambil jumlah baris terbanyak dari kolom-kolom untuk dijadikan titik akhir perulangan $jmlBarisTerbanyak = max(count($kolom1Array), count($kolom2Array), count($kolom3Array), count($kolom4Array)); // Mendeklarasikan variabel untuk menampung kolom yang sudah di edit $hasilBaris = array(); // Melakukan perulangan setiap baris (yang dibentuk wordwrap), untuk menggabungkan setiap kolom menjadi 1 baris for ($i = 0; $i < $jmlBarisTerbanyak; $i++) { // memberikan spasi di setiap cell berdasarkan lebar kolom yang ditentukan, $hasilKolom1 = str_pad((isset($kolom1Array[$i]) ? $kolom1Array[$i] : ""), $lebar_kolom_1, " "); // memberikan rata kanan pada kolom 3 dan 4 karena akan kita gunakan untuk harga dan total harga $hasilKolom2 = str_pad((isset($kolom2Array[$i]) ? $kolom2Array[$i] : ""), $lebar_kolom_2, " ", STR_PAD_LEFT); $hasilKolom3 = str_pad((isset($kolom3Array[$i]) ? $kolom3Array[$i] : ""), $lebar_kolom_3, " ", STR_PAD_LEFT); $hasilKolom4 = str_pad((isset($kolom4Array[$i]) ? $kolom4Array[$i] : ""), $lebar_kolom_4, " ", STR_PAD_LEFT); // Menggabungkan kolom tersebut menjadi 1 baris dan ditampung ke variabel hasil (ada 1 spasi disetiap kolom) $hasilBaris[] = $hasilKolom1 . " " . $hasilKolom2 . " " . $hasilKolom3 . " " . $hasilKolom4; } // Hasil yang berupa array, disatukan kembali menjadi string dan tambahkan \n disetiap barisnya. return implode($hasilBaris) . "\n"; } }