Tutorial Membuat Nomor Faktur Otomatis dengan PHP dan MySQL
Diposting oleh : Administrator
Kategori: PHP MySQL - Dibaca: 134933 kali
Diposting oleh : Administrator
Kategori: PHP MySQL - Dibaca: 134933 kali
Ketemu lagi ya, dalam suasana hati
yg stabil alias tidak galau . Beberapa
hari yang lalu saya medapat email dari Pak Rudi Pamungkas, salah satu
pengunjung web yang bertanya bagaimana caranya membuat No Faktur Pajak secara
otomatis dengan php, artinya tidak diinput manual tetapi mengambil berurutan
sesuai dengan no faktur pajak terakhir.
Kasus ini sama dengan No invoice, no
pendaftaran dan sebagainya. Contoh jika pada suatu sistem pembelian no invoice
terakhir adalah inv-myshop-0025, maka pada saat ada yg order akan mendapat no
invoice inv-myshop-0026.
Untuk kasus seperti ini, kita bisa
gunakan Autonumber. Autonumber disini yang saya maksud bukan Auto Increment
pada mysql, melainkan Autonumber untuk cetak no faktur. Mengapa perlu? kerena
no faktur bersifat tetap pada setiap record yang di input maka kita menggunakan
CHAR pada type field Database. Contoh Nomor faktur misal formatnya
010.000.13.00000001, (Tergantung selera si pembuat program atau yang Order) .
Kali ini akan kita bahas bagaimana
cara membuat autonumber untuk no faktur tersebut, bagaimana bisa? bukannya
karakter pada format no faktur pada contoh diatas bukan nomor semua tetapi ada
karakter titik (.)! memang benar tidak semua karakter pada contoh no faktur
diatas adalah nomor melainkan bila kita perhatikan 8 karakter terakhir pada
nomor faktur tersebut adalah angka kita bisa sedikit bermain - main dengan
script agar dapat generate autonumber.
Buat tabel sederhana seperti dibawah ini
CREATE TABLE IF NOT EXISTS `master_transaksi` (
`NO_FAKTUR` char(19) NOT NULL,
`TGL` datetime NOT NULL,
`GRAND_TOTAL` double NOT NULL,
PRIMARY KEY (`NO_FAKTUR`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Kemudian isi tabel diatas sesuai
dengan keinginan dengan catatanno.faktur isi seperti format berikut
010.000.13.00000001 buat beberapa record tapi ingat sebisa mungkin untuk no.
invoice itu unik misal pada record kedua isi dengan no. faktur
010.000.13.00000002 dan seterusnya.
saatnya kita bermain - main dengan sql
mysql>SELECT NO_FAKTUR FROM master_transaksi;
taukan code diatas untuk apa? benar
kode sql tersebut untukmenampilkan isi dari field NO_FAKTUR lalu bagaimana cara
mengambil angka dari no.faktur tersebut, kita lihat code berikutnya.
mysql>SELECT SUBSTR(MAX(NO_FAKTUR),-5) FROM master_transaksi;
kode diatas akan menampilkan nilai
maksimal pada record NO_FAKTURcukup mudah, kemudian kita akan menggabungnya
dengan PHP.
pada kode php ini saya buat sebuah
fungsi agar kita bisamenggunakannya secara efisien tanpa melakukan penulisan
ulang setiap akan membuat kode invoice.
function transaksi_id($param='inv-str') {
$dataMax = mysql_fetch_assoc(mysql_query(
"SELECT
SUBSTR(MAX(`NO_FAKTUR`),-5) AS ID FROM master_transaksi")); // ambil data maximal dari
id transaksi
if($dataMax['ID']=='') { // bila data kosong
$ID = $param."00001";
}else {
$MaksID = $dataMax['ID'];
$MaksID++;
if($MaksID < 10) $ID = $param."0000".$MaksID; // nilai kurang dari 10
else if($MaksID < 100) $ID = $param."000".$MaksID; // nilai kurang dari 100
else if($MaksID < 1000) $ID = $param."00".$MaksID; // nilai kurang dari 1000
else if($MaksID < 10000) $ID = $param."0".$MaksID; // nilai kurang dari 10000
else $ID = $MaksID; // lebih dari 10000
}
return $ID;
}
if($dataMax['ID']=='') { // bila data kosong
$ID = $param."00001";
}else {
$MaksID = $dataMax['ID'];
$MaksID++;
if($MaksID < 10) $ID = $param."0000".$MaksID; // nilai kurang dari 10
else if($MaksID < 100) $ID = $param."000".$MaksID; // nilai kurang dari 100
else if($MaksID < 1000) $ID = $param."00".$MaksID; // nilai kurang dari 1000
else if($MaksID < 10000) $ID = $param."0".$MaksID; // nilai kurang dari 10000
else $ID = $MaksID; // lebih dari 10000
}
return $ID;
}
cukup mudah bukan, fungsi diatas
akan melakukan generate number secara otomatis.Cara penggunaannya juga sangat
mudah.
mysql_query("INSERT INTO master_transaksi (NO_FAKTUR,TG,GRAND_TOTAL) VALUES (".transaksi_id().",NOW(),'515000')");
sebenarnya Bapak dapat memodifikasi
dengan menggunakan FUNCTION atauPROCEDURE dari mysql, akan tetapi fungsi PHP
diatas sudah cukup
mewakili.
Tutorial ini saya buat berdasarkan beberapa referensi dari web lain. Semoga bermanfaat
M. Multazam, S.Kom
Tutorial ini saya buat berdasarkan beberapa referensi dari web lain. Semoga bermanfaat
M. Multazam, S.Kom
Tidak ada komentar:
Posting Komentar