diff --git a/app/Http/Controllers/StrukController.php b/app/Http/Controllers/StrukController.php
new file mode 100644
index 0000000..e1173a2
--- /dev/null
+++ b/app/Http/Controllers/StrukController.php
@@ -0,0 +1,51 @@
+find($id);
+
+ if (!$data) {
+ return response()->json(['error'=>'Transaksi tidak ditemukan'], 404);
+ }
+
+ // Debug: Let's see what data structure we have
+ // dd([
+ // 'transaksi' => $data->toArray(),
+ // 'item_count' => $data->itemTransaksi->count(),
+ // 'has_sales' => $data->sales ? true : false,
+ // ]);
+
+ // After debugging, uncomment this:
+
+ $pdf = Pdf::loadView('exports.struk', $data->toArray())
+ ->setPaper([0, 0, 1224 * 0.75, 528 * 0.75], 'landscape')
+ ->setOptions([
+ 'isHtml5ParserEnabled' => true,
+ 'isRemoteEnabled' => true,
+ 'defaultFont' => 'DejaVu Sans'
+ ]);
+
+ $filename = 'Struk_' . $data->kode_transaksi . '.pdf';
+ return $pdf->download($filename);
+
+
+ } catch (\Exception $e) {
+ return response()->json([
+ 'error' => 'Debug Error',
+ 'message' => $e->getMessage(),
+ 'line' => $e->getLine(),
+ 'file' => $e->getFile()
+ ], 500);
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/views/exports/struk.blade.php b/resources/views/exports/struk.blade.php
new file mode 100644
index 0000000..37053ee
--- /dev/null
+++ b/resources/views/exports/struk.blade.php
@@ -0,0 +1,542 @@
+
+
+
+
+
+ Struk Transaksi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tanggal :
+
+ @if(isset($created_at))
+ @php
+ $date = \Carbon\Carbon::parse($created_at);
+ $days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
+ $dayName = $days[$date->dayOfWeek];
+ $formattedDate = $dayName . '/' . $date->format('d-m-Y');
+ @endphp
+ {{ $formattedDate }}
+ @else
+ N/A
+ @endif
+
+
+
Nama :
+
{{ $nama_pembeli ?? 'N/A' }}
+
+
Alamat :
+
{{ $alamat ?? 'N/A' }}
+
+
No.Hp :
+
{{ $no_hp ?? 'N/A' }}
+
+
+
+
+
+
+
+
+ | Jml |
+ Item |
+ Posisi |
+ Berat |
+ Kadar |
+ Harga |
+
+
+
+ @if(isset($item_transaksi) && count($item_transaksi) > 0)
+ @foreach($item_transaksi as $item)
+
+ |
+ @if(isset($item['harga_deal']) && $item['harga_deal'])
+ 1
+ @endif
+ |
+
+
+ @if(isset($item['produk']['foto'][0]['url']))
+ 
+ @else
+
+ @endif
+ {{ $item['produk']['nama'] ?? '' }}
+
+ |
+
+ @if(isset($item['produk']['nama']) && $item['produk']['nama'])
+ {{ $item['nampan']['nama'] ?? 'Brankas' }}
+ @endif
+ |
+
+ @if(isset($item['produk']['berat']) && $item['produk']['berat'])
+ {{ $item['produk']['berat'] }}g
+ @endif
+ |
+
+ @if(isset($item['produk']['kadar']) && $item['produk']['kadar'])
+ {{ $item['produk']['kadar'] }}k
+ @endif
+ |
+
+ @if(isset($item['harga_deal']) && $item['harga_deal'])
+ Rp{{ number_format($item['harga_deal'], 0, ',', '.') }}
+ @endif
+ |
+
+ @endforeach
+ @endif
+
+ {{-- Add empty rows to ensure minimum 2 rows --}}
+ @for($i = (isset($item_transaksi) ? count($item_transaksi) : 0); $i < 2; $i++)
+
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+ @endfor
+
+
+
+
+
+
+
+
PERHATIAN
+
+ - Berat barang telah ditimbang dan disaksikan oleh pembeli.
+ - Barang yang dikembalikan menurut harga pasaran dan dipotong ongkos bikin, barang rusak lain harga.
+ - Barang yang sudah dibeli berarti sudah diperiksa dan disetujui.
+ - Surat ini harap dibawa pada saat menjual kembali.
+
+
+
+
+
+
Hormat Kami
+
{{ $sales['nama'] ?? 'N/A' }}
+
+
+
+
+
+
+
+
+
Ongkos bikin
+
diluar harga jual
+
+
+
Rp
+
{{ number_format($ongkos_bikin ?? 0, 0, ',', '.') }}
+
+
+
+
+
+
Total Harga
+
+
Rp
+
+ {{ number_format($total_harga ?? 0, 0, ',', '.') }},-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 1dcd6ea..3f09d4e 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -10,6 +10,7 @@ use App\Http\Controllers\SalesController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\TransaksiController;
use App\Http\Controllers\LaporanController;
+use App\Http\Controllers\StrukController;
use Illuminate\Support\Facades\Route;
@@ -63,6 +64,8 @@ Route::prefix('api')->group(function () {
Route::get('kategori', [KategoriController::class, 'index']);
Route::get('kategori/{id}', [KategoriController::class, 'show']);
Route::get('brankas', [ItemController::class, 'brankasItem']);
+
+ Route::get('/cetak-struk/{id}', [StrukController::class, 'cetak']);
});
});