diff --git a/.env.example b/.env.example index 6999aad..bcc56d1 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ APP_NAME=Abbauf-Kasir -APP_ENV=production +APP_ENV=local APP_KEY= -APP_DEBUG=false +APP_DEBUG=true APP_URL=http://localhost APP_LOCALE=en diff --git a/README.md b/README.md index 73e469f..f37dcc0 100644 --- a/README.md +++ b/README.md @@ -144,14 +144,17 @@ docker exec -it abbauf_kasir_app php artisan migrate --seed # Siapkan penyimpanan file docker exec -it abbauf_kasir_app php artisan storage:link +# Atau import database secara manual +docker exec -i abbauf_kasir_db mysql -u kasir_user -pkasir_password kasir_db < ./toko_emas.sql + # Periksa database (opsional) docker exec -it abbauf_kasir_db bash -mysql -u kasir_user -pkasir_password +mysql -u kasir_user -pkasir_password kasir_db ``` ### 8. Print Label -- Install driver, ada pada folder `./driver/` untuk windows 64bit. +- Install driver, ada pada folder `./driver/NiimbotPrinterDriverInstall_3.0.0.5.exe` untuk windows 64bit. - Pilih `NIIMBOT B3S_P` pada saat install driver. - Sambungkan printer ke komputer via USB. - Nyalakan printer. @@ -160,6 +163,16 @@ mysql -u kasir_user -pkasir_password - Pilih printer `NIIMBOT B3S_P` dan atur kertas ke ukuran kertas `40mm x 30mm`, margin `Default`, scale `Default` - Klik print +### 9. Print Nota + +- Pastikan printer terhubung dengan komputer via USB. +- Nyalakan printer. +- Install driver, ada pada folder `./driver/L120_x64_213UsHomeExportAsiaML.exe`. +- Lakukan transaksi penjualan pada aplikasi, atau pilih nota yang akan diprint di `Laporan > Riwayat transaksi`. +- Klik tombol print pada halaman tersebut + - Pilih ukuran kertas A4, margin `Minimum`, scale `95` + - Klik print + --- ## ๐ŸŒ Akses Aplikasi diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php index 22d3afe..57e311f 100644 --- a/app/Http/Controllers/TransaksiController.php +++ b/app/Http/Controllers/TransaksiController.php @@ -104,7 +104,7 @@ class TransaksiController extends Controller 'ongkos_bikin' => 'nullable|numeric|min:0', 'total_harga' => 'required|numeric', 'items' => 'required|array', - 'items.*.kode_item' => 'required|exists:items,id|numeric', + 'items.*.kode_item' => 'required', 'items.*.harga_deal' => 'required|numeric', ]); diff --git a/app/Models/Item.php b/app/Models/Item.php index 1fdd3b6..5e94b2a 100644 --- a/app/Models/Item.php +++ b/app/Models/Item.php @@ -23,24 +23,15 @@ class Item extends Model { parent::boot(); - static::creating(function ($item) { - $prefix = 'TMJC'; - $date = now()->format('Ymd'); + static::created(function ($item) { + if (!$item->kode_item || $item->kode_item === 'belum pak') { + $prefix = "TMJC"; + $date = $item->created_at->format('Ymd'); + $number = str_pad($item->id, 4, '0', STR_PAD_LEFT); - // Cari item terakhir yg dibuat hari ini - $lastItem = self::whereDate('created_at', now()->toDateString()) - ->orderBy('id', 'desc') - ->first(); - - $number = 1; - if ($lastItem && $lastItem->kode_item) { - // Ambil 4 digit terakhir dari kode_item - $lastNumber = intval(substr($lastItem->kode_item, -4)); - $number = $lastNumber + 1; + $item->kode_item = $prefix . $date . $number; + $item->save(); } - - // Format: ITM202509090001 - $item->kode_item = $prefix . $date . str_pad($number, 4, '0', STR_PAD_LEFT); }); } diff --git a/database/migrations/2025_09_09_145624_add_kode_item_to_items_table.php b/database/migrations/2025_09_09_145624_add_kode_item_to_items_table.php index 049b76b..f129bb7 100644 --- a/database/migrations/2025_09_09_145624_add_kode_item_to_items_table.php +++ b/database/migrations/2025_09_09_145624_add_kode_item_to_items_table.php @@ -12,10 +12,10 @@ return new class extends Migration public function up() { Schema::table('items', function (Blueprint $table) { - $table->string('kode_item')->unique()->after('id'); + $table->string('kode_item')->unique()->default('belum pak')->after('id'); }); } - + public function down() { Schema::table('items', function (Blueprint $table) { diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 8270695..2027d8d 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -37,17 +37,9 @@ class DatabaseSeeder extends Seeder 'updated_at' => now(), ]); - // Create sales record - Sales::create([ - 'nama' => 'Kasir', - 'no_hp' => '-', - 'alamat' => '-', - 'created_at' => now(), - 'updated_at' => now(), - ]); - + // Call other seeders $this->call(DataSeeder::class); - // $this->call(DummySeeder::class); + $this->call(DummySeeder::class); } -} \ No newline at end of file +} diff --git a/resources/js/components/KasirForm.vue b/resources/js/components/KasirForm.vue index 150a2cc..3377f9c 100644 --- a/resources/js/components/KasirForm.vue +++ b/resources/js/components/KasirForm.vue @@ -249,12 +249,14 @@ const tambahItem = () => { return; } - item.value.kode_item = Number(kodeItem.value); + item.value.kode_item = kodeItem.value; item.value.harga_deal = Number(hargaJual.value); item.value.posisi = item.value.nampan ? item.value.nampan.nama : "Brankas"; pesanan.value.push(item.value); + console.log("Pesanan +:", item.value); + kodeItem.value = ""; hargaJual.value = null; hargaJualFormatted.value = ""; diff --git a/resources/js/components/KasirTransaksiList.vue b/resources/js/components/KasirTransaksiList.vue index cb7f1fd..6085c25 100644 --- a/resources/js/components/KasirTransaksiList.vue +++ b/resources/js/components/KasirTransaksiList.vue @@ -1,6 +1,6 @@