Skip to main content

hai,...para master2 CI ...bagaimana membuat no.nota otomatis di codeigniter.....???

January 13, 2011 by reventus

reventus's picture

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

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

BLS:

January 18, 2011 by syabac, 23 weeks 23 hours ago
Comment: 7545

syabac's picture

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

harisbag's picture

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 =='')
  {
     return 1;
  }
  else
  {
     return $baris->no_akhir + 1;
  }
}

Premium Drupal Themes by Adaptivethemes