'Penjualan']; if (!$request->ajax()) { return view('page.dashboard.penjualan.index', compact('data')); } if ($request->isMethod('get')) { $barang = Barang::all(); return response()->json(['message' => $barang], 200); } $noTransaksi = $this->generateNoTransaksi(); $items = $request->items; $penjualan = Penjualan::create([ 'kasir' => Auth::user()->id, 'no_transaksi' => $noTransaksi, 'diskon' => 0, 'pembayaran' => $request->pembayaran, 'total'=> $request->total, 'bayar'=> $request->bayar, 'sisa'=> $request->sisa ]); foreach ($items as $item) { $barang = Barang::where('kode', $item['kode'])->first(); if ($barang) { ListItemPenjualan::create([ 'penjualan_id' => $penjualan->id, 'barang_id' => $barang->id, 'qty' => $item['qty'], 'harga_beli' => $barang->harga_beli, 'harga_jual' => $barang->harga_jual, 'nama_barang' => $barang->nama, 'ukuran_barang' => $barang->ukuran ]); } else { return response()->json(['message' => 'Opps! theres been an error.'], 404); } } $this->print_now($noTransaksi); return response()->json(['message' => 'Ok'], 200); } public function print(Request $request){ $this->print_now('TRN1716466056'); } public function print_now($noTransaksi){ $settingprinter = SettingPrinter::where("idprinter","=",1)->first(); $storeName = $settingprinter->nama_toko; $storeAddress = $settingprinter->alamat_toko; $buyerName = 'UMUM'; $transactionDate = Carbon::now()->format('d-m-Y H:i:s'); // $items = $request->input('items', [ // ['name' => 'Barang A', 'quantity' => 2, 'price' => 50000], // ['name' => 'Barang B', 'quantity' => 1, 'price' => 75000], // ]); // die(var_dump($request)); $penjualan = Penjualan::with("listItem","listItem.barang") ->where("no_transaksi","=",$noTransaksi)->first(); $items = $penjualan->listItem; $total = $penjualan->total; $totalPaid = $penjualan->bayar; $change = $penjualan->sisa; // echo "
";
// print_r($printer);
// echo "";
// die();
$printerName = $settingprinter->nama_printer;
try {
$connector = new WindowsPrintConnector($printerName);
$printer = new Printer($connector);
// Header
$printer->setJustification(Printer::JUSTIFY_CENTER);
$printer->text("$storeName\n");
$printer->text("$storeAddress\n");
$printer->feed();
// Info Pembeli dan Tanggal
$printer->setJustification(Printer::JUSTIFY_LEFT);
$printer->text("Pembeli: $buyerName\n");
$printer->text("Tanggal: $transactionDate\n");
$printer->feed();
// Detail Barang
$printer->text(str_pad("Barang", 15) . str_pad("Qty", 4, ' ', STR_PAD_LEFT) . str_pad("Harga", 9, ' ', STR_PAD_LEFT) . str_pad("Total", 9, ' ', STR_PAD_LEFT) . "\n");
$printer->text("--------------------------------\n");
foreach ($items as $key=>$item) {
$name = str_pad(substr($item->barang->nama, 0, 15), 15);
$quantity = str_pad($item->qty, 4, ' ', STR_PAD_LEFT);
$price = str_pad(number_format($item->harga_jual, 0, ',', '.'), 9, ' ', STR_PAD_LEFT);
$totalItem = str_pad(number_format($item->qty * $item->harga_jual, 0, ',', '.'), 9, ' ', STR_PAD_LEFT);
$printer->text("$name $quantity $price $totalItem\n");
}
$printer->feed();
// Total, Total Bayar, dan Sisa
$printer->text("--------------------------------\n");
$printer->text(str_pad("Total", 15) . str_pad(number_format($total, 0, ',', '.'), 9, ' ', STR_PAD_LEFT) . "\n");
$printer->text(str_pad("Total Bayar", 15) . str_pad(number_format($totalPaid, 0, ',', '.'), 9, ' ', STR_PAD_LEFT) . "\n");
$printer->text(str_pad("Sisa", 15) . str_pad(number_format($change, 0, ',', '.'), 9, ' ', STR_PAD_LEFT) . "\n");
$printer->feed(4);
// Potong struk
$printer->cut();
// Tutup printer
$printer->close();
// return response()->json(['status' => 'success', 'message' => 'Printed successfully.']);
} catch (Exception $e) {
// return response()->json(['status' => 'error', 'message' => $e->getMessage()]);
}
}
}