Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function printDirect()
- {
- $faktur = $this->input->post('faktur');
- $cekfaktur = $this->db->get_where('penjualan', ['jualfaktur' => $faktur]);
- $row_penjualan = $cekfaktur->row_array();
- $query_toko = $this->db->get_where('nn_namatoko', ['idtoko' => 1]);
- $row_toko = $query_toko->row_array();
- $ambil_datamember = $this->db->get_where('member', ['memberkode' => $row_penjualan['jualmemberkode']]);
- if ($ambil_datamember->num_rows() > 0) {
- $row_member = $ambil_datamember->row_array();
- $kodemember = $row_member['memberkode'];
- $namamember = $row_member['membernama'];
- $tglsekarang = date('Y-m-d');
- $ambil_datasettingdiskon = $this->db->get('member_setting_diskon')->row_array();
- $diskonsetting = $ambil_datasettingdiskon['diskon'];
- // Hitung sisa tabungan diskon member
- $query_tabungandiskon = $this->db->query("SELECT IFNULL(ROUND(SUM(jualtotalbersih * ($diskonsetting / 100)),0),0) AS totaldiskon FROM penjualan WHERE jualmemberkode='$kodemember' AND DATE_FORMAT(jualtgl,'%Y-%m-%d')<='$tglsekarang' AND (jualstatusbayar='T' OR jualstatusbayar='K')")->row_array();
- $query_diskondigunakan = $this->db->query("SELECT IFNULL(SUM(jualtotalbersih),0) AS totaldigunakan FROM penjualan WHERE jualmemberkode='$kodemember' AND DATE_FORMAT(jualtgl,'%Y-%m-%d')<='$tglsekarang' AND jualstatusbayar='M'")->row_array();
- $query_diskondiambil = $this->db->query("SELECT IFNULL(SUM(detambiljumlah),0) AS totaldiambil FROM pengambilan_diskon_detail JOIN pengambilan_diskon ON detambilkode=ambilkode WHERE detambilmemberkode = '$kodemember' AND ambiltgl <= '$tglsekarang'")->row_array();
- $totaldiskon = $query_tabungandiskon['totaldiskon'];
- $totaldigunakan = $query_diskondigunakan['totaldigunakan'];
- $totaldiambil = $query_diskondiambil['totaldiambil'];
- // end sisa tabungan diskon member
- $totaldiskonmember = $totaldiskon - ($totaldigunakan + $totaldiambil);
- } else {
- $kodemember = "";
- $namamember = "";
- $totaldiskonmember = 0;
- }
- // me-load library escpos
- $this->load->library('escpos');
- // membuat connector printer ke shared printer bernama "printer_a" (yang telah disetting sebelumnya)
- $connector = new Escpos\PrintConnectors\WindowsPrintConnector("printer_novinaldi");
- // membuat objek $printer agar dapat di lakukan fungsinya
- $printer = new Escpos\Printer($connector);
- function buatBaris1Kolom($kolom1)
- {
- // Mengatur lebar setiap kolom (dalam satuan karakter)
- $lebar_kolom_1 = 35;
- // 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") . "\n";
- }
- function buatBaris3Kolom($kolom1, $kolom2, $kolom3)
- {
- // Mengatur lebar setiap kolom (dalam satuan karakter)
- $lebar_kolom_1 = 11;
- $lebar_kolom_2 = 11;
- $lebar_kolom_3 = 11;
- // 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") . "\n";
- }
- /* ---------------------------------------------------------
- * Teks biasa | text()
- */
- $tglfaktur = $row_penjualan['jualtgl'];
- $namauser = $this->session->userdata('namalengkapuser');
- $jualdispersen = $row_penjualan['jualdispersen'];
- $jualdiskon = $row_penjualan['jualdiskon'];
- $jmluangbayar = number_format($row_penjualan['jualjmluangbayar'], 0, ",", ".");
- $jmluangsisa = number_format($row_penjualan['jualjmluangsisa'], 0, ",", ".");
- $printer->initialize();
- $printer->selectPrintMode(Escpos\Printer::MODE_FONT_A);
- $printer->text("$row_toko[nmtoko]\n");
- $printer->text("$row_toko[alamat]\n");
- $printer->text("Telp: $row_toko[telp]\n");
- $printer->text("Hp: $row_toko[hp]\n");
- $printer->text("No : $faktur, " . date('d/m/Y', strtotime($tglfaktur)));
- $printer->text("\n");
- $printer->text("Opr : $namauser, " . date('H:i:s', strtotime($tglfaktur)));
- $printer->text("\n");
- $printer->text("\n");
- // Jika Ini Member
- if (strlen($kodemember) > 0) :
- $printer->text(buatBaris1Kolom("Member: $kodemember/$namamember"));
- $printer->text(buatBaris1Kolom("Total Tabungan: " . number_format($totaldiskonmember, 0, ",", ".")));
- endif;
- // End
- $printer->text("-----------------------------------\n");
- $query_detail = $this->db->query("SELECT penjualan_detail.*, satuan.`satnama`,produk.`namaproduk` FROM penjualan_detail JOIN satuan ON detjualsatid=satid JOIN produk ON produk.`kodebarcode`=detjualkodebarcode WHERE detjualfaktur='$faktur'");
- $totaljualkotor = 0;
- $totaljualbersih = 0;
- $totalitem = 0;
- foreach ($query_detail->result_array() as $d) :
- $jmlitem = $query_detail->num_rows();
- $totalitem = $totalitem + $d['detjualjml'];
- $totaljualkotor = $totaljualkotor + $d['detjualsubtotalkotor'];
- $totaljualbersih = $totaljualbersih + $d['detjualsubtotal'];
- $printer->text(buatBaris1Kolom("$d[namaproduk]"));
- $printer->text(buatBaris3Kolom(number_format($d['detjualjml'], 0, ',', '.') . " $d[satnama]", number_format($d['detjualharga'], 0, ',', '.'), number_format($d['detjualsubtotal'], 0, ',', '.')));
- endforeach;
- $printer->text("-----------------------------------\n");
- $printer->text(buatBaris1Kolom("Item: $jmlitem ($totalitem)"));
- $printer->text(buatBaris3Kolom("", "Total:", number_format($totaljualbersih, 0, ",", ".")));
- // Jika ada diskon
- if ($jualdispersen != 0 || $jualdispersen != '0.00') :
- $printer->text(buatBaris3Kolom("", "#Dis:", number_format($jualdiskon, 0, ",", ".")));
- endif;
- // end
- $printer->text(buatBaris3Kolom("", "Bayar:", $jmluangbayar));
- $printer->text(buatBaris3Kolom("", "Kembali:", $jmluangsisa));
- $printer->text("-----------------------------------\n");
- $printer->text(buatBaris1Kolom("Barang yang sudah dibeli tidak bisa ditukar/dikembalikan"));
- $printer->text(buatBaris1Kolom("Terima kasih telah menjadi pelanggan kami :)"));
- $printer->feed(2); // mencetak 2 baris kosong, agar kertas terangkat ke atas
- $printer->cut();
- echo "Faktur berhasil dicetak";
- $printer->close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement