[php] Nama
Viewer
- private function cetakStruk($nama_kasir, $tanggal_transaksi, $item=[], $subtotal, $discount, $ppn, $total) {
- // me-load library escpos
- $this->load->library('escpos');
- try {
- // membuat connector printer ke shared printer bernama "injeo_sales_printer" (yang telah disetting sebelumnya)
- $connector = new Escpos\PrintConnectors\WindowsPrintConnector("injeo_sales_printer");
- // membuat objek $printer agar dapat di lakukan fungsinya
- $printer = new Escpos\Printer($connector);
- // membuat fungsi untuk membuat 1 baris tabel, agar dapat dipanggil berkali-kali dgn mudah
- function buatBaris4Kolom($kolom1, $kolom2, $kolom3, $kolom4) {
- // Mengatur lebar setiap kolom (dalam satuan karakter)
- $lebar_kolom_1 = 12;
- $lebar_kolom_2 = 8;
- $lebar_kolom_3 = 8;
- $lebar_kolom_4 = 9;
- // 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, " ");
- $hasilKolom2 = str_pad((isset($kolom2Array[$i]) ? $kolom2Array[$i] : ""), $lebar_kolom_2, " ");
- // memberikan rata kanan pada kolom 3 dan 4 karena akan kita gunakan untuk harga dan total harga
- $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") . "\n";
- }
- // Membuat judul
- $printer->initialize();
- $printer->selectPrintMode(Escpos\Printer::MODE_DOUBLE_HEIGHT); // Setting teks menjadi lebih besar
- $printer->setJustification(Escpos\Printer::JUSTIFY_CENTER); // Setting teks menjadi rata tengah
- $printer->text("Injeo Sales\n");
- $printer->text("\n");
- // Data transaksi
- $printer->initialize();
- $printer->text("Kasir : {$nama_kasir}\n");
- $tanggal_transaksi = date("d-m-Y H:i:s" , strtotime($tanggal_transaksi));
- $printer->text("Waktu : {$tanggal_transaksi}\n");
- // Membuat tabel
- $printer->initialize(); // Reset bentuk/jenis teks
- $printer->text("----------------------------------------\n");
- $printer->text(buatBaris4Kolom("Item", "qty", "Harga", "Total"));
- $printer->text("----------------------------------------\n");
- if (sizeof($$item->item_name) > 0) {
- for ($i=0; $i < sizeof($item->item_name); $i++) {
- $printer->text(buatBaris4Kolom($item->item_name[$i], $item->item_qty[$i].' '.$item->item_unit[$i], $item->item_price[$i], $item->item_total[$i]));
- }
- }
- /* $printer->text(buatBaris4Kolom("Makaroni 250gr", "2pcs", "15.000", "30.000"));
- $printer->text(buatBaris4Kolom("Telur", "2pcs", "5.000", "10.000"));
- $printer->text(buatBaris4Kolom("Tepung terigu", "1pcs", "8.200", "16.400")); */
- $printer->text("----------------------------------------\n");
- $printer->text(buatBaris4Kolom('', '', "Sub Total", $subtotal));
- $printer->text(buatBaris4Kolom('', '', "Diskon(%)", $discount));
- $printer->text(buatBaris4Kolom('', '', "PPN", $ppn));
- $printer->text(buatBaris4Kolom('', '', "Total", $total));
- $printer->text("\n");
- // Pesan penutup
- $printer->initialize();
- $printer->setJustification(Escpos\Printer::JUSTIFY_CENTER);
- $printer->text("Terima kasih telah berbelanja\n");
- $printer->feed(5); // mencetak 5 baris kosong agar kertas terangkat
- $printer->close();
- } catch (\Exception $e) {
- //exception $e;
- }
- }
Editor
You can edit this paste and save as new: