2012-09-16

tutorial persediaan barang (teori) part 1

Mari asumsikan kita akan membahas persediaan Susu. Minuman pelengkap dalam 4 sehat, 5 sempurna. Kenapa susu yang jadi bahasan? ada 2 alasan yaitu karena gambar dibawah berhubungan dengan susu (NSFW) dan kedua, susu memiliki apa yang dinamakan kadaluarsa. Kalau sudah lewat beberapa waktu, saya pakai 2 hari. Maka susu akan di anggap kadaluarsa dan kemungkinan akan berubah jadi Yoghurt!! atau malah dibuang.
Ngomong-ngomong ini judulnya emang teori, tetapi jangan di hapalin bener-bener. Mungkin pelajaran di kampus tidak ada pernyataan bahwa teori yang kutulis ini benar namanya. Asalkan pengertiannya kamu sudah faham. Terakhir ini kubuat bukan untuk PHP tetapi bisa buat bahasa lain
Kita akan fokus pada metode menghitungnya. ada 2 metode yang kuketahui dalam menghitung persediaan yang kunamakan:

  1. Metode Hitung langsung. Metode ini memakai cara, apapun proses yang terjadi maka akan data akan di update di table/field yang sesuai. Karena ini fieldnya cuma 1 maka field yang di proses adalah field susu saja. Proses pencatatan tetap harus dilakukan didalam sistem tetapi kadang malah di anggap optional karena orang biasanya lebih penting hasil akhir bukan cara dapetnya. Proses ini keuntungannya saat di tarik kamu tahu berapa jumlahnya dengan CEPAT.
  2. Metode Batch. Metode ini memakai data yang di input, semua data di input dengan id barang misal 1.. akan di hitung berapa total masuk dan juga total keluar. Proses update berapa nilai aslinya tidak dibuat (optional). Keuntungannya, programer tidak perlu takut akan kerusakan data apabila data yang di input error. Dan data yang dimasukkan lebih kepada penambahan dibandingkan update, sehingga prosesnya tidak banyak.

Kedua metode punya kelemahan.. 

HITUNG LANGSUNG 

dapat saja tidak valid datanya karena adanya kemungkinan double input atau ada input yang salah urutannya, sebagai contoh kita punya barang 10.
  • orang 1 nambah barang 12
  • orang 2 ambil barang 10
  • sisa 12
Sebenarnya dalam proses programing yang terjadi seharusnya
  • orang 1 periksa berapa jumlah barang = 10
  • orang 1 update barang sebanyak 12 =22
  • orang 2 periksa jumlah barang = 22
  • orang 2 ambil barang 10 = 12
tapi karena data sangat semrawut, bisa saja terjadi
  • orang 1 periksa berapa jumlah barang = 10
  • orang 2 periksa jumlah barang = 10!!
  • orang 1 update barang sebanyak 12 =22
  • orang 2 ambil barang 10 = 0!!
Hal ini bisa saja terjadi, walau jarang. Saya sendiri lebih menghindari cara ini sebenarnya karena proses update terlalu sering ditakutkan akan merusak table bersangkutan. sekedar saran bila memakai ini, jangan letakkan jumlah yang terupdate di table yang sama dengan table barang!! letakkan di barang_jumlah

Metode Batch

Metode yang saya rekomendasi. Kita menghitung dari data yang masuk, tetapi kekurangannya adalah

  • ada kemungkinan data double. Hal ini jarang terjadi tetapi sangat mungkin. Ini biasa terjadi karena mysql tiba-tiba menginput data yang sama walau kita deklarasikan hanya 1! cara menanggulangin versi saya adalah membuat table yang di input memiliki tanggal dan waktu input, sekedar tambahan kejadian ini biasa terjadi saat awal query, jadi saya sarankan agar input itemnya jangan sebagai query pertama (insert) tetapi sebagai query kedua (insert) atau lebih.
  • Ada data yang tidak valid, maksudnya data yang masuk tidak sesuai format yang kita tentukan.
  • menghitung untuk laporan sangat berat bila yang dihitung bukan 100 data tapi 1000 bahkan lebih.

TABLE YANG DIBUTUHKAN

minimal table yang dibutuhkan adalah:
  • table barang. isinya cuma susu dan yughurt (termasuk keju) dan itu nantinya bs dibuat sub dengan asumsi susu tidak hanya 1 barang tetapi susu terbagi dari bentuk 1 liter, kotak dan gelas. untuk keterangan dari barang jangan dimasukkan di table barang tetapi di table barang_desc yang berarti keterangan barang. Barang_desc diharapkan lebih pada barang yang tidak dapat dihitung hanya sebagai keterangan, untuk sesuatu yang bisa di hitung harus di table berbeda seperti barang_price dan barang_jumlah.
  • table barang_jumlah. Untuk menunjukkan barang yang terupdate. isinya sesuai jumlah table barang, lebih tepatnya ini adalah table jumlah akhir dari barang 
  • table barang_update. Untuk menginput barang yang di masukkan atau keluar. Jangan lupa ada statusnya yang menunjukkan barang di input/keluar.
Ada table lain seperti user, log dan lain-lain. Tetapi disini tidak digunakan dahulu.

FORM YANG DIBUTUHKAN

beberapa fom yang dibutuhkan, tetapi saya tidak akan kasi koding hanya usulan saja. Sebenarnya barang memiliki banyak field tambahan, tetapi saya tidak masukkan untuk mempercepat.
  1. form input barang. untuk menginput nama barang SAJA. Keterangan hanya optional karena disini cuma input. Sebenarnya kamu butuh form untuk edit, tetapi bisa dilewatkan. Bentuk form ini hanya  input text dan input submit. setelah di submit maka akan masuk datanya ke table barang dan juga table barang_jumlah sejumlah 0. Untuk versi yang lebih tinggi, kamu bisa menambahkan text untuk jumlah awal.
  2. form edit barang. seperti tertulis di atas, bisa dilewati. Cukup dengan list nama barang (select box), lalu input text => buat nulis nama penggantinya dan submit.
  3. form input-output barang. Hanya berisi nama barang yang dapat dipilih, karena cuma sedikit jadi pakai saja select box, lalu ada jumlah (text) , mode (select box yang berisi barang masuk dan keluar), keterangan dan submit. Hasil dari ini akan masuk ke barang update, setelahnya akan di update di barang_jumlah sesuai dengan barang yang masuk (+) atau keluar (-). Khusus belajar pertama, masukkan input text tanggal dengan format Tahun-Bulan-Hari (YYYY-MM-DD)
  4. form laporan. Cukup dengan memasukkan tanggal berapa sampai berapa. Akan lebih bagus bila pake datepicker (manfaatkan jquery ui atau kendoui untuk mudahnya). Lalu nanti dibawah akan mucul hasilnya (atau di halaman baru)
Bila ada pertanyaan seputar bentuk form atau cara kerjanya (PHP), silakan bertanya dibawah!! jangan lupa subscribe topik ini dan bagi2 link ini ke orang-orang.

Tidak ada komentar: