Tema aplikasi yang akan dibuat adalah inventory, berfokus pada perhitungan barang masuk dan barang keluar serta perubahan stock nya. Aplikasi ini berfokus pada implementasi mobile app khusunya pada android. Dibangun menggunakan Flutter versi baru yaitu versi 3.0. Meskipun khusus pada mobile, namun bisa dijalankan juga untuk platform lain seperti Windows. Pemaparan pada course ini menggunakan Bahasa Indonesia dengan style code Bahasa Inggris. Sebelum mengambil course ini alangkah baiknya mempelajari pemrograman dart, php, flutter dasar, dan SQL dasar agar tidak terlalu kesulitan mengikuti course yang ada disini. Tools yang digunakan pada course ini diantaranya, Visual Studio Code, Postman, XAMPP, Emulator, Framework Flutter, dan browser. Inti jenis pembahasan dibagi menjadi 3, yaitu Database, API, UI Flutter. Untuk menangani perubahan data pada aplikasi, menggunakan State Management GetX. Selain package GetX ada beberapa package tambahan dalam pengembangan aplikasinya. Pembuatan aplikasi disertai penerapan clean architecture, namun di dalam course ini tidak diterapkan secara lengkap untuk clean architecture dimana interaksi ada 2 arah yaitu “data” dan “presentation” yang ke-2 nya memiliki turunan masing-masing. Untuk kelola user dibagi menjadi 2 level yaitu “Admin” dan “Employee” dimana ada hak akses yang berbeda. Untuk fiturnya terdapat 5 menu yaitu “Product”, “History”, “IN” atau barang masuk, “OUT” atau barang keluar, dan “Employee”. Analysis history diterapkan dan dipercantik mengunakan chart dimana terdapat beberapa keunggulan untuk memberi kesan informatif bagi user. Hasil dari aplikasi ini dapat dikembangkan kembali sehingga dapat digunakan di perusahaan besar yang membutuhkan management gudang ataupun warehouse. Trigger bagaikan pisau bermata dua. Salah penggunaan bisa berakibat fatal, dan tidak sedikit developer software antipati dengan trigger karena sering terjadi hal-hal yang tidak disangka-sangka dan bahkan di luar nalar, berhari-hari melakukan debugging, pada akhirnya problem ditemukan karena adanya sebuat trigger yang tidak terdokumentasi dengan baik. Walaupun sebuah pisau bisa membunuh kita, bukan berarti kita harus membuangnya jauh-jauh dan tidak mau menggunakannya lagi, karena penggunaan yang benar tentunya akan sangat membantu mempermudah dan meningkatkan kualitas hidup kita :) Dalam artikel ini, akan kita mempelajari cara penggunaan trigger yang benar, dalam rangka membantu mempermudah kita membuat sebuah Aplikasi Inventory Sederhana ini. Trigger akan kita gunakan untuk melakukan update status kuantitas stok barang setiap kali terjadi transaksi penambahan dan pengurangan barang, atau transaksi barang masuk atau barang keluar. Jika kita sederhanakan sampai level database, maka akan ada perintah SQL INSERT, UPDATE, dan DELETE di table transaksi yang secara otomatis, mengubah status stok barang bersangkutan. Desain database sudah kita buat pada langkah analisa dan desain database pada artikel sebelumnya. Maka langkah selanjutnya adalah membuat trigger untuk setiap jenis SQL DML. Trigger akan kita tempelkan ke table transaction_details, karena di table itulah informasi ID dan jumlah kuantitas barang tersedia. Untuk detail sintaks CREATE TRIGGER dapat mengacu ke dokumentasi MySQL CREATE TRIGGER di sini. Referensi Data Untuk tutorial ini, diasumsikan sudah tersedia data untuk transaction_types dan items seperti berikut ini,
INSERT Data TransaksiUntuk proses INSERT ini akan kita set berjalan setiap kali ada sebuah row dimasukkan ke dalam database, diindikasikan dengan keywork FOR EACH ROW, dan setiap row yang baru masuk bisa kita ketahui di variable NEW. Logikanya adalah seperti ini,
maka trigger INSERT akan seperti ini.
UPDATE (Edit) Data TransaksiUntuk proses UPDATE, sama seperti proses INSERT dan DELETE, trigger akan berjalan FOR EACH ROW, namun sedikit lebih rumit, row ebelum proses update, atau data original tersimpan di variable OLD, dan row yang baru tersimpan di variable NEW. Logikanya adalah seperti ini,
maka trigger UPDATE akan seperti ini,
DELETE Data TransaksiUntuk proses DELETE, sama seperti proses INSERT, trigger akan berjalan FOR EACH ROW, namun row yang sedang kita hapus ada di variable OLD. Logikanya adalah seperti ini,
maka trigger DELETE akan seperti ini,
SimpulanSetelah kita perhatikan hasil test di atas, maka proses pengerjaan coding di aplikasi akan jauh lebih mudah karena tidak perlu lagi memikirkan code untuk mengubah status stok barang, karena perubahan status stok barang seluruhnya sudah ditangani oleh trigger yang kita buat ini. |