diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php
index c975503..350a82f 100644
--- a/app/Http/Controllers/TransaksiController.php
+++ b/app/Http/Controllers/TransaksiController.php
@@ -25,15 +25,15 @@ class TransaksiController extends Controller
$transaksi->total_items = $transaksi->itemTransaksi->count();
$transaksi->tanggal = $transaksi->created_at->format('d/m/Y');
});
- return response()->json($transaksi);
-
+ return response()->json($transaksi);
+
}
// Detail transaksi by ID
public function show($id)
{
- $transaksi = Transaksi::with(['kasir', 'sales', 'items.produk.foto'])->findOrFail($id);
+ $transaksi = Transaksi::with(['kasir', 'sales', 'itemTransaksi.produk.foto'])->findOrFail($id);
return response()->json($transaksi);
}
@@ -64,7 +64,7 @@ class TransaksiController extends Controller
$transaksi = Transaksi::create([
'kode_transaksi' => 'belum pak',
- 'id_kasir' => $kasir->id,
+ 'id_kasir' => $kasir->id,
'id_sales' => $request->id_sales,
'nama_sales' => $sales->nama ?? 'N/A',
'nama_pembeli' => $request->nama_pembeli,
diff --git a/resources/js/components/KasirTransaksiList.vue b/resources/js/components/KasirTransaksiList.vue
index e5f76d4..6fc9638 100644
--- a/resources/js/components/KasirTransaksiList.vue
+++ b/resources/js/components/KasirTransaksiList.vue
@@ -16,8 +16,8 @@
{{ trx.kode_transaksi }} |
Rp{{ (trx.total_harga || 0).toLocaleString() }} |
-
@@ -25,10 +25,30 @@
+
+
+
+
+
+
+
+
+ Memuat detail transaksi...
+
+
diff --git a/resources/js/components/StrukOverlay.vue b/resources/js/components/StrukOverlay.vue
index 055ae13..03a3292 100644
--- a/resources/js/components/StrukOverlay.vue
+++ b/resources/js/components/StrukOverlay.vue
@@ -158,8 +158,8 @@
-
@@ -230,7 +230,7 @@ const toastClasses = computed(() => {
const baseClasses = 'text-white'
const typeClasses = {
error: 'bg-red-500',
- success: 'bg-green-500',
+ success: 'bg-green-500',
info: 'bg-blue-500'
}
return `${baseClasses} ${typeClasses[toastType.value]}`
@@ -264,7 +264,7 @@ const showSimpleToast = (type, message, duration = 3000) => {
toastType.value = type
toastMessage.value = message
showToast.value = true
-
+
setTimeout(() => {
showToast.value = false
}, duration)
@@ -317,7 +317,7 @@ const handleSimpan = () => {
nama_pembeli: namaPembeli.value,
no_hp: nomorTelepon.value,
alamat: alamat.value,
- ongkosBikin: ongkosBikin.value || 0,
+ ongkos_bikin: ongkosBikin.value || 0, // Pastikan nama field benar
total_harga: grandTotal.value,
items: props.pesanan
})
@@ -334,11 +334,10 @@ const simpanTransaksi = async (dataTransaksi) => {
});
showSimpleToast('success', 'Transaksi berhasil disimpan!', 2000)
-
+
// Delay untuk memberikan waktu user membaca notifikasi
setTimeout(() => {
- props.pesanan.value = [];
- props.isOpen = false;
+ emit('close');
window.location.reload();
}, 2200);
@@ -379,4 +378,4 @@ function formatInput(e) {
font-family: "PT Serif", serif;
font-weight: 400;
}
-
\ No newline at end of file
+
diff --git a/resources/js/components/StrukView.vue b/resources/js/components/StrukView.vue
new file mode 100644
index 0000000..66aa0ee
--- /dev/null
+++ b/resources/js/components/StrukView.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+ tokomas_Jakartacitayam
+
+
+ tokomas_Jakartacitayam
+
+
+ 08158851178
+
+ {{ transaksi.kode_transaksi || 'N/A' }}
+
+
+
+ ![Logo]()
+
+
+
+ Tanggal :
+ {{ formatDate(transaksi.created_at) }}
+
+ Nama :
+ {{ transaksi.nama_pembeli || '-' }}
+
+ Alamat :
+ {{ transaksi.alamat || '-' }}
+
+ No.Hp :
+ {{ transaksi.no_hp || '-' }}
+
+
+
+
+
+
+
+
+ | Jml |
+ Item |
+ Posisi |
+ Berat |
+ Kadar |
+ Harga |
+
+
+
+
+
+ |
+ 1
+ |
+
+
+
+
+
+
+ IMG
+
+
+
+
+
+ {{ item.produk?.nama || '' }}
+ |
+
+ {{ item.posisi_asal || 'Brankas' }}
+ |
+
+ {{ formatNumber(item.produk.berat) }}g
+ |
+
+ {{ item.produk.kadar }}k
+ |
+
+
+ Rp{{ formatNumber(item.harga_deal) }}
+
+ |
+
+
+
+
+
+
+
+
+ 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
+
+ {{ transaksi.nama_sales || '-' }}
+
+
+
+
+
+
+
+
+
+ Ongkos bikin
+ diluar harga jual
+
+
+ Rp
+
+ {{ (transaksi.ongkos_bikin || 0).toLocaleString() }},-
+
+
+
+
+
+
+ Total Harga
+
+ Rp
+
+ {{ (transaksi.total_harga || 0).toLocaleString() }},-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Terima kasih sudah berbelanja dengan kami
+
+
+
+
+
+
+
+
diff --git a/resources/js/pages/Kasir.vue b/resources/js/pages/Kasir.vue
index b04ee97..52bc489 100644
--- a/resources/js/pages/Kasir.vue
+++ b/resources/js/pages/Kasir.vue
@@ -10,9 +10,7 @@
class="bg-white rounded-xl shadow-lg border border-B overflow-hidden h-auto lg:h-full"
>
-
-
@@ -63,7 +61,6 @@
@@ -84,7 +81,7 @@ import KasirTransaksiList from "../components/KasirTransaksiList.vue";
const transaksi = ref([]);
const loading = ref(true);
-// ==== TAMBAHAN: Fungsi untuk fetch transaksi (dipindah ke fungsi terpisah) ====
+// Fungsi untuk fetch transaksi
const fetchTransaksi = async () => {
try {
loading.value = true;
@@ -95,31 +92,22 @@ const fetchTransaksi = async () => {
});
transaksi.value = res.data;
-
console.log("Fetched transaksi:", transaksi.value);
-
+
} catch (err) {
console.error("Gagal fetch transaksi:", err);
} finally {
loading.value = false;
}
};
-// ==== END TAMBAHAN ====
onMounted(async () => {
- // ==== MODIFIKASI: Panggil fungsi fetchTransaksi ====
await fetchTransaksi();
- // ==== END MODIFIKASI ====
});
-// ==== TAMBAHAN: Handle ketika transaksi baru disimpan ====
+// Handle ketika transaksi baru disimpan
const handleTransaksiSaved = async (newTransaksi) => {
// Refresh daftar transaksi
await fetchTransaksi();
};
-// ==== END TAMBAHAN ====
-
-const lihatDetail = (trx) => {
- alert(`Detail transaksi: ${trx.kode}`);
-};
|