[html4strict] Cetak Struk

Viewer

copydownloadembedprintName: Cetak Struk
  1. private function cetakStruk($nama_kasir, $tanggal_transaksi, $item=[], $subtotal, $discount, $ppn, $total) {
  2.         // me-load library escpos
  3.         $this->load->library('escpos');
  4.  
  5.         try {
  6.             // membuat connector printer ke shared printer bernama "injeo_sales_printer" (yang telah disetting sebelumnya)
  7.             $connector = new Escpos\PrintConnectors\WindowsPrintConnector("injeo_sales_printer");
  8.  
  9.             // membuat objek $printer agar dapat di lakukan fungsinya
  10.             $printer = new Escpos\Printer($connector);
  11.  
  12.             // membuat fungsi untuk membuat 1 baris tabel, agar dapat dipanggil berkali-kali dgn mudah
  13.             function buatBaris4Kolom($kolom1, $kolom2, $kolom3, $kolom4) {
  14.                 // Mengatur lebar setiap kolom (dalam satuan karakter)
  15.                 $lebar_kolom_1 = 12;
  16.                 $lebar_kolom_2 = 8;
  17.                 $lebar_kolom_3 = 8;
  18.                 $lebar_kolom_4 = 9;
  19.     
  20.                 // Melakukan wordwrap(), jadi jika karakter teks melebihi lebar kolom, ditambahkan \n 
  21.                 $kolom1 = wordwrap($kolom1, $lebar_kolom_1, "\n", true);
  22.                 $kolom2 = wordwrap($kolom2, $lebar_kolom_2, "\n", true);
  23.                 $kolom3 = wordwrap($kolom3, $lebar_kolom_3, "\n", true);
  24.                 $kolom4 = wordwrap($kolom4, $lebar_kolom_4, "\n", true);
  25.     
  26.                 // Merubah hasil wordwrap menjadi array, kolom yang memiliki 2 index array berarti memiliki 2 baris (kena wordwrap)
  27.                 $kolom1Array = explode("\n", $kolom1);
  28.                 $kolom2Array = explode("\n", $kolom2);
  29.                 $kolom3Array = explode("\n", $kolom3);
  30.                 $kolom4Array = explode("\n", $kolom4);
  31.     
  32.                 // Mengambil jumlah baris terbanyak dari kolom-kolom untuk dijadikan titik akhir perulangan
  33.                 $jmlBarisTerbanyak = max(count($kolom1Array), count($kolom2Array), count($kolom3Array), count($kolom4Array));
  34.     
  35.                 // Mendeklarasikan variabel untuk menampung kolom yang sudah di edit
  36.                 $hasilBaris = array();
  37.     
  38.                 // Melakukan perulangan setiap baris (yang dibentuk wordwrap), untuk menggabungkan setiap kolom menjadi 1 baris 
  39.                 for ($i = 0; $i < $jmlBarisTerbanyak; $i++) {
  40.     
  41.                     // memberikan spasi di setiap cell berdasarkan lebar kolom yang ditentukan, 
  42.                     $hasilKolom1 = str_pad((isset($kolom1Array[$i]) ? $kolom1Array[$i] : ""), $lebar_kolom_1, " ");
  43.                     $hasilKolom2 = str_pad((isset($kolom2Array[$i]) ? $kolom2Array[$i] : ""), $lebar_kolom_2, " ");
  44.     
  45.                     // memberikan rata kanan pada kolom 3 dan 4 karena akan kita gunakan untuk harga dan total harga
  46.                     $hasilKolom3 = str_pad((isset($kolom3Array[$i]) ? $kolom3Array[$i] : ""), $lebar_kolom_3, " ", STR_PAD_LEFT);
  47.                     $hasilKolom4 = str_pad((isset($kolom4Array[$i]) ? $kolom4Array[$i] : ""), $lebar_kolom_4, " ", STR_PAD_LEFT);
  48.     
  49.                     // Menggabungkan kolom tersebut menjadi 1 baris dan ditampung ke variabel hasil (ada 1 spasi disetiap kolom)
  50.                     $hasilBaris[] = $hasilKolom1 . " " . $hasilKolom2 . " " . $hasilKolom3 . " " . $hasilKolom4;
  51.                 }
  52.     
  53.                 // Hasil yang berupa array, disatukan kembali menjadi string dan tambahkan \n disetiap barisnya.
  54.                 return implode($hasilBaris, "\n") . "\n";
  55.             }
  56.  
  57.             // Membuat judul
  58.             $printer->initialize();
  59.             $printer->selectPrintMode(Escpos\Printer::MODE_DOUBLE_HEIGHT); // Setting teks menjadi lebih besar
  60.             $printer->setJustification(Escpos\Printer::JUSTIFY_CENTER); // Setting teks menjadi rata tengah
  61.             $printer->text("Injeo Sales\n");
  62.             $printer->text("\n");
  63.     
  64.             // Data transaksi
  65.             $printer->initialize();
  66.             $printer->text("Kasir : {$nama_kasir}\n");
  67.             $tanggal_transaksi = date("d-m-Y H:i:s" , strtotime($tanggal_transaksi));
  68.             $printer->text("Waktu : {$tanggal_transaksi}\n");
  69.     
  70.             // Membuat tabel
  71.             $printer->initialize(); // Reset bentuk/jenis teks
  72.             $printer->text("----------------------------------------\n");
  73.             $printer->text(buatBaris4Kolom("Item", "qty", "Harga", "Total"));
  74.             $printer->text("----------------------------------------\n");
  75.             if (sizeof($$item->item_name) > 0) {
  76.                 for ($i=0; $i < sizeof($item->item_name); $i++) { 
  77.                     $printer->text(buatBaris4Kolom($item->item_name[$i], $item->item_qty[$i].' '.$item->item_unit[$i], $item->item_price[$i], $item->item_total[$i]));
  78.                 }
  79.             }
  80.             /* $printer->text(buatBaris4Kolom("Makaroni 250gr", "2pcs", "15.000", "30.000"));
  81.             $printer->text(buatBaris4Kolom("Telur", "2pcs", "5.000", "10.000"));
  82.             $printer->text(buatBaris4Kolom("Tepung terigu", "1pcs", "8.200", "16.400")); */
  83.             $printer->text("----------------------------------------\n");
  84.             $printer->text(buatBaris4Kolom('', '', "Sub Total", $subtotal));
  85.             $printer->text(buatBaris4Kolom('', '', "Diskon(%)", $discount));
  86.             $printer->text(buatBaris4Kolom('', '', "PPN", $ppn));
  87.             $printer->text(buatBaris4Kolom('', '', "Total", $total));
  88.             $printer->text("\n");
  89.     
  90.             // Pesan penutup
  91.             $printer->initialize();
  92.             $printer->setJustification(Escpos\Printer::JUSTIFY_CENTER);
  93.             $printer->text("Terima kasih telah berbelanja\n");
  94.     
  95.             $printer->feed(5); // mencetak 5 baris kosong agar kertas terangkat
  96.             $printer->close();
  97.         } catch (\Exception $e) {
  98.             //exception $e;
  99.         }
  100.     }

Editor

You can edit this paste and save as new:


File Description
  • Cetak Struk
  • Paste Code
  • 09 Jun-2023
  • 5.73 Kb
You can Share it: