Sabtu, 20 Desember 2014

Tutorial Membuat Nomor Faktur Otomatis dengan PHP dan MySQL

Tutorial Membuat Nomor Faktur Otomatis dengan PHP dan MySQL
Diposting oleh : Administrator
Kategori:
PHP MySQL - Dibaca: 134933 kali


Ketemu lagi ya, dalam suasana hati yg stabil alias tidak galau Smile. 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;
        }
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

Tidak ada komentar:

Posting Komentar