HELLO,....Para master CI,...Gue lg bingung ne mau buat program delivery order,.....bagaimana cara membuat no.nota otomatis bertambah ketika akan menambah transaksi baru,. mohon pencerahannya ya para master sekalian. maksih banyak...........trims CI
January 18, 2011
by syabac,
23 weeks 23 hours ago Comment: 7545
sebaiknya, Log nomor nota disimpan di tabel tersendiri.
penomoran bisa dilakukan dengan cara agan harisbag di atas dengan syarat:
1. nomor nota hanya berupa angka
2. nomor nota selalu bertambah,
3. tidak boleh ada penghapusan data transaksi dari tabel, akan berpengaruh bila data yg dihapus adalah data terakhir/terbaru --> nomor nota terakhir
bila nomor 1-2 oke, berarti tinggal nomor 3. hal tersebut bisa diantisipasi dengan menambahkan satu field yg menyimpan state apakah row tersebut sudah dihapus atau belum. bila sudah dihapus, tidak perlu ditampilkan ke user.
bila format yang diinginkan seperti
KODE-TAHUNBULAN-NOMOR, misal
SALE-201001-005
SALE-201002-001
ORDER-201001-001
BUY-201001-006
maka perlu tabel baru yang menyimpan keadaan terakhir tersebut.
tabel autonum_code
+ ID int
+ code VARCHAR(10)
tabel autonum_log
+ ID int
+ code_id
+ year int
+ month int
+ transaction_no
bila ada penjualan baru pada tanggal 18 Januari 2010.
untuk mendapatkan nomor terakhir:
select transaction_no
from autonum_log
where year = 2010
and month = 1
and code = 2
order by transaction_no desc
limit 1
kalo ternyata hasilnya kosong, maka nomor transaksi = 1,
kalo ada data yang dikembalikan, maka nomor transaksi = nomor transaksi yg lama + 1
bila telah diperoleh nomor transaksi baru, jangan lupa data tersebut dimasukan ke autonum_log supaya tidak terpakai lagi.
note:
baik cara pertama (@harisbag) ataupun cara kedua (yg saya berikan) jangan lupa untuk nge-lock table supaya bila terjadi concurrent process, maka tidak terjadi duplicate data.
untuk mysql perlu diperhatikan, locking table tidak bisa dilakukan di table yang menggunakan engine MyISAM. locking table hanya bisa di transaction-based table engine seperti InnoDB, BerkeleyDB.
January 15, 2011
by harisbag,
23 weeks 3 days ago Comment: 7530
Mungkin ini bisa bantu. No otomatis dari sebuah data (misal tabel penjualan kolom No Nota), bisa diambil dengan cara query pada model. Query yang dipakai adalah SELECT MAX(no_nota) noakhir From Penjualan. Fungsi Max adalah mengambil data terbesar.
Apabila hasilnya : kolom noakhir adalah kosong maka set saja return 1. Tetapi kalau ada datanya, maka hasilnya
return noakhir + 1. Contoh berikut pada Model:
function getNoMatic(){$sql="SELECT MAX(no_nota) no_akhir FROM penjualan";$hasil=$this->db->query($sql);$baris=$hasil->row();if($baris->no_akhir==''){return1;}else{return$baris->no_akhir+1;}}
Comments
BLS:
January 18, 2011 by syabac, 23 weeks 23 hours ago
Comment: 7545
sebaiknya, Log nomor nota disimpan di tabel tersendiri.
penomoran bisa dilakukan dengan cara agan harisbag di atas dengan syarat:
1. nomor nota hanya berupa angka
2. nomor nota selalu bertambah,
3. tidak boleh ada penghapusan data transaksi dari tabel, akan berpengaruh bila data yg dihapus adalah data terakhir/terbaru --> nomor nota terakhir
bila nomor 1-2 oke, berarti tinggal nomor 3. hal tersebut bisa diantisipasi dengan menambahkan satu field yg menyimpan state apakah row tersebut sudah dihapus atau belum. bila sudah dihapus, tidak perlu ditampilkan ke user.
bila format yang diinginkan seperti
KODE-TAHUNBULAN-NOMOR, misal
SALE-201001-005
SALE-201002-001
ORDER-201001-001
BUY-201001-006
maka perlu tabel baru yang menyimpan keadaan terakhir tersebut.
tabel autonum_code
+ ID int
+ code VARCHAR(10)
tabel autonum_log
+ ID int
+ code_id
+ year int
+ month int
+ transaction_no
misal data:
autonum_code
ID code
1 BUY
2 SALE
autonum_log
ID code year month transaction_no
1 1 2010 1 1
2 1 2010 1 2
3 2 2010 1 1
4 1 2010 1 3
bila ada penjualan baru pada tanggal 18 Januari 2010.
untuk mendapatkan nomor terakhir:
select transaction_no
from autonum_log
where year = 2010
and month = 1
and code = 2
order by transaction_no desc
limit 1
kalo ternyata hasilnya kosong, maka nomor transaksi = 1,
kalo ada data yang dikembalikan, maka nomor transaksi = nomor transaksi yg lama + 1
bila telah diperoleh nomor transaksi baru, jangan lupa data tersebut dimasukan ke autonum_log supaya tidak terpakai lagi.
note:
baik cara pertama (@harisbag) ataupun cara kedua (yg saya berikan) jangan lupa untuk nge-lock table supaya bila terjadi concurrent process, maka tidak terjadi duplicate data.
untuk mysql perlu diperhatikan, locking table tidak bisa dilakukan di table yang menggunakan engine MyISAM. locking table hanya bisa di transaction-based table engine seperti InnoDB, BerkeleyDB.
semoga ga bingung.. :D
No Otomatis
January 15, 2011 by harisbag, 23 weeks 3 days ago
Comment: 7530
Mungkin ini bisa bantu. No otomatis dari sebuah data (misal tabel penjualan kolom No Nota), bisa diambil dengan cara query pada model. Query yang dipakai adalah SELECT MAX(no_nota) noakhir From Penjualan. Fungsi Max adalah mengambil data terbesar.
Apabila hasilnya : kolom noakhir adalah kosong maka set saja return 1. Tetapi kalau ada datanya, maka hasilnya
return noakhir + 1. Contoh berikut pada Model: