diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 44d431e..7b51944 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -44,7 +44,7 @@ class ItemController extends Controller */ public function show(int $id) { - $item = Item::with('produk.foto','nampan','itemTransaksi.transaksi')->findOrFail($id); + $item = Item::with('produk.foto','nampan')->findOrFail($id); return response()->json($item); } @@ -83,7 +83,7 @@ class ItemController extends Controller // custom methods public function brankasItem(){ - $items = Item::with('produk.foto','nampan')->whereNull('id_nampan')->belumTerjual()->get(); + $items = Item::with('produk.foto','nampan')->whereNull('id_nampan')->get(); return response()->json($items); } diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php index 11e47e2..0b58655 100644 --- a/app/Http/Controllers/TransaksiController.php +++ b/app/Http/Controllers/TransaksiController.php @@ -80,19 +80,16 @@ class TransaksiController extends Controller // if (!$item) { // throw new \Exception("Item dengan kode_item {$it['kode_item']} tidak ditemukan."); // } - $item = Item::find($it['kode_item']); + $item = Item::find($it['kode_item'])->with('produk')->first(); ItemTransaksi::create([ 'id_transaksi' => $transaksi->id, - 'id_item' => $item->id, + 'id_produk' => $item->produk->id, 'harga_deal' => $it['harga_deal'], 'posisi_asal' => $item->nampan ? 'Nampan ' . $item->nampan->nama : 'Brankas', ]); - $item->update([ - 'is_sold' => true, - 'id_nampan' => null, - ]); + $item->delete(); } DB::commit(); diff --git a/app/Models/Item.php b/app/Models/Item.php index ab88fe7..7fcec9e 100644 --- a/app/Models/Item.php +++ b/app/Models/Item.php @@ -13,8 +13,7 @@ class Item extends Model protected $fillable = [ 'id_produk', 'id_nampan', - 'is_sold', - 'kode_item', // ✅ ditambahkan agar bisa diisi otomatis + 'kode_item', ]; protected $hidden = ['created_at', 'updated_at', 'deleted_at']; @@ -50,18 +49,8 @@ class Item extends Model return $this->belongsTo(Produk::class, 'id_produk'); } - public function scopeBelumTerjual($query) - { - return $query->where('is_sold', false); - } - public function nampan() { return $this->belongsTo(Nampan::class, 'id_nampan'); } - - public function itemTransaksi() - { - return $this->hasOne(ItemTransaksi::class, 'id_item'); - } } diff --git a/app/Models/ItemTransaksi.php b/app/Models/ItemTransaksi.php index b596de9..cf438ec 100644 --- a/app/Models/ItemTransaksi.php +++ b/app/Models/ItemTransaksi.php @@ -12,7 +12,7 @@ class ItemTransaksi extends Model protected $fillable = [ 'id_transaksi', - 'id_item', + 'id_produk', 'harga_deal', 'posisi_asal' ]; @@ -24,8 +24,8 @@ class ItemTransaksi extends Model return $this->belongsTo(Transaksi::class, 'id_transaksi'); } - public function item() + public function produk() { - return $this->belongsTo(Item::class, 'id_item'); + return $this->belongsTo(Produk::class, 'id_produk'); } } diff --git a/database/factories/ItemFactory.php b/database/factories/ItemFactory.php index e260ab3..07b76b4 100644 --- a/database/factories/ItemFactory.php +++ b/database/factories/ItemFactory.php @@ -19,7 +19,6 @@ class ItemFactory extends Factory return [ 'id_produk' => \App\Models\Produk::factory(), 'id_nampan' => null, - 'is_sold' => false, ]; } } diff --git a/database/factories/ItemTransaksiFactory.php b/database/factories/ItemTransaksiFactory.php index 282ef86..2b2143e 100644 --- a/database/factories/ItemTransaksiFactory.php +++ b/database/factories/ItemTransaksiFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use App\Models\Item; +use App\Models\Produk; use App\Models\Transaksi; use Illuminate\Database\Eloquent\Factories\Factory; @@ -20,7 +21,7 @@ class ItemTransaksiFactory extends Factory { return [ 'id_transaksi' => Transaksi::factory(), - 'id_item' => Item::factory(), + 'id_produk' => Produk::factory(), 'harga_deal' => $this->faker->randomFloat(2, 100000, 5000000), 'created_at' => now(), ]; diff --git a/database/migrations/2025_08_25_071541_create_items_table.php b/database/migrations/2025_08_25_071541_create_items_table.php index 3cb4ced..53e017d 100644 --- a/database/migrations/2025_08_25_071541_create_items_table.php +++ b/database/migrations/2025_08_25_071541_create_items_table.php @@ -15,7 +15,6 @@ return new class extends Migration $table->id(); $table->foreignId('id_produk')->constrained('produks')->cascadeOnDelete(); $table->foreignId('id_nampan')->nullable()->constrained('nampans'); - $table->boolean('is_sold')->default(false); $table->timestamps(); }); } diff --git a/database/migrations/2025_08_26_031033_create_item_transaksis_table.php b/database/migrations/2025_08_26_031033_create_item_transaksis_table.php index 929e80b..47d3748 100644 --- a/database/migrations/2025_08_26_031033_create_item_transaksis_table.php +++ b/database/migrations/2025_08_26_031033_create_item_transaksis_table.php @@ -14,7 +14,7 @@ return new class extends Migration Schema::create('item_transaksis', function (Blueprint $table) { $table->id(); $table->foreignId('id_transaksi')->constrained('transaksis')->onDelete('cascade'); - $table->foreignId('id_item')->constrained('items'); + $table->foreignId('id_produk')->constrained('produks'); $table->double('harga_deal'); $table->string('posisi_asal', 100); $table->timestamps(); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index b61ac74..4a8163f 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -64,7 +64,6 @@ class DatabaseSeeder extends Seeder $jumlah_item = rand(1, 20); Item::factory($jumlah_item)->create([ 'id_produk' => $produk->id, - 'is_sold' => false, ]); }); @@ -84,19 +83,16 @@ class DatabaseSeeder extends Seeder Transaksi::factory(40)->create()->each(function ($transaksi) { $jumlah_item = rand(1, 2); - $items = Item::where('is_sold', false)->inRandomOrder()->limit($jumlah_item)->get(); + $items = Item::with('produk')->inRandomOrder()->limit($jumlah_item)->get(); if ($items->isEmpty()) return; $total_harga = $transaksi->total_harga; foreach ($items as $item) { $transaksi->itemTransaksi()->create([ - 'id_item' => $item->id, + 'id_produk' => $item->produk->id, 'harga_deal' => $item->produk->harga_jual, 'posisi_asal' => $item->id_nampan ? 'Nampan ' . $item->nampan->nama : 'Brankas', ]); - $item->update([ - 'id_nampan' => null, - 'is_sold' => true, - ]); + $item->delete(); $total_harga += $item->produk->harga_jual; } $transaksi->update(['total_harga' => $total_harga]); diff --git a/resources/js/components/KasirForm.vue b/resources/js/components/KasirForm.vue index f29cc6a..aa97730 100644 --- a/resources/js/components/KasirForm.vue +++ b/resources/js/components/KasirForm.vue @@ -3,7 +3,7 @@ message="Yakin ingin menghapus item ini?" @confirm="hapusPesanan" @cancel="closeDeleteModal" /> - +
@@ -90,7 +90,7 @@ {{ item.produk.nama }} - {{ item.posisi ? item.posisi : "Brankas" }} + {{ item.nampan ? item.nampan.nama : "Brankas" }} Rp{{ item.harga_deal.toLocaleString() }} @@ -150,14 +150,15 @@ const inputItem = async () => { item.value = response.data; hargaJual.value = item.value.produk.harga_jual; + console.log(item.value); + if (item.value.is_sold) { throw new Error("Item sudah terjual"); } if (pesanan.value.some((p) => p.id === item.value.id)) { throw new Error("Item sedang dipesan"); } - info.value = `Item dipilih: ${item.value.produk.nama} dari ${item.value.posisi ? item.value.posisi : "Brankas" - }`; + info.value = `Item dipilih: ${item.value.produk.nama} dari ${item.value.nampan ? 'Nampan ' + item.value.nampan.nama : "Brankas"}`; infoTimeout = setTimeout(() => { info.value = "";