Membuat Kode unik berdasarkan tanggal dengan Codeigniter

Membuat Kode unik berdasarkan tanggal dengan Codeigniter

Hi, sahabat programmer, kembali lagi nich. Pada kesempatan kali ini penulis ingin sharing tentang sesuatu yang cukup menarik.

Yaitu “Membuat No Invoice berdasarkan tanggal dengan codeigniter”.

Hmm..,Invoice berdasarkan tanggal sangat bermanfaat untuk membuat kode unik yang lebih mudah dibaca.

Selain itu kode unik berdasarkan tanggal juga dapat menghandle jumlah transaksi yang padat perharinya.

Hmm.., menarik bukan?

Bisanya, banyak programmer membuat kode unik tidak bersarkan tanggal. Sehingga jumlah digit yang mampu ditampung pun terbatas.

Contoh: 

FK0001, kode unik dengan FK0001 memiliki jumlah digit yang terbatas. FK melambang Faktur dan 0001 merupakan jumlah digit yang mampu ditampungnya. Pada kasus diatas, jumlah maksimal record yang mampu ditampung adalah 9999 record. Jika jumlah transaksi telah melebihi 9999 record, maka faktur tersebut tidak dapat lagi menampung data.

Lalu bagaimana caranya agar jumlah transaksi bisa ditampung lebih banyak. Bahkan tidak terbatas?

Jawabannya adalah dengan membuat kode unik berdasarkan tanggal. 

Contoh:

1905170001, kode unik tersebut berarti 19 (day), 05 (month),17(year), dan 0001 (jumlah digit yang mampu ditampung).

Hah 0001, berarti jumlah digit yang mampu ditampung juga 9999 donk?

Benar, jumlah digit yang mampu ditampung memang 9999. Tetapi, yang mampu ditampung adalah 9999 per-hari. Jika tanggalnya berubah, misalkan tanggal 20/05/2017 maka jumlah digit akan kembali ke 0001. Sehingga kode uniknya menjadi 2005170001. Dalam arti kata kode unik berdasarkan tanggal ini mampu menampung 9999 transaksi perhari.

Keren bukan?

Langsung saja kita praktekkan:



1. Buat database dengan mengeksekusi query berikut:

CREATE DATABASE db_invoice;
USE db_invoice;

CREATE TABLE tbl_invoice(
no_invoice VARCHAR(15) PRIMARY KEY,
tanggal TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)ENGINE INNODB;

 

2. Instalasi codeigniter

Extract codeigniter ke C:wampwww (jika menggunakan wampserver) atau C:xampphtdocs (jika menggunakan XAMPP). Kemudian rename project codeigniter anda sesuai dengan project Anda. Disini penulis memberi nama ci_invoice.

 

3. Konfigusi beberapa file berikut:

Buka application/config/autoload.php atur menjadi seperti berikut:

$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');

Buka application/config/config.php dan atur menjadi seperti berikut:

$config['base_url'] = 'http://localhost/ci_invoice/';

Terakhir buka application/config/database.php

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'db_invoice',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);

 

4. Buat controller dengan nama Invoice.php dengan kode sebagai berikut:

<?php
class Invoice extends CI_Controller{
        function __construct(){
                parent::__construct();
                $this->load->model('m_invoice');
        }

        function index(){
                $x['invoice']=$this->m_invoice->get_no_invoice();
                $this->load->view('v_invoice',$x);
        }
        function simpan_invoice(){
                $no_invoice=$this->input->post('no_invoice');
                $this->m_invoice->simpan_invoice($no_invoice);
                redirect('invoice');
        }

}

 

5. Buat model dengan nama M_invoice.php dengan kode sebagai berikut:

<?php
class M_invoice extends CI_Model{

        function get_no_invoice(){
                $q = $this->db->query("SELECT MAX(RIGHT(no_invoice,4)) AS kd_max FROM tbl_invoice WHERE DATE(tanggal)=CURDATE()");
        $kd = "";
        if($q->num_rows()>0){
            foreach($q->result() as $k){
                $tmp = ((int)$k->kd_max)+1;
                $kd = sprintf("%04s", $tmp);
            }
        }else{
            $kd = "0001";
        }
        date_default_timezone_set('Asia/Jakarta');
        return date('dmy').$kd;
        }

        function simpan_invoice($no_invoice){
                $hasil=$this->db->query("INSERT INTO tbl_invoice (no_invoice) VALUES ('$no_invoice')");
                return $hasil;
        }

}

 

6. Buat view dengan nama v_invoice.php dengan kode sebagai berikut:

<!DOCTYPE html>
<html>
<head>
        <title>Invoice</title>
</head>
<body>
        <form action="<?php echo base_url().'index.php/invoice/simpan_invoice'?>" method="post">
                <input type="text" name="no_invoice" value="<?php echo $invoice;?>">
                <button type="submit">Simpan</button>
        </form>
</body>
</html>

7. Jalankan projectnya dengan mengunjungi URL berikut:

http://localhost/ci_invoice/index.php/invoice/

klik tombol simpan dan dan lihat hasilnya!, silahkan ganti tanggal pada komputer anda untuk melihat perbedaannya.

Sekian tutorial tentang membuat kode unik berdasarkan tanggal dengan codeigniter. Jangan lupa share siapa tahu tutorial ini bermanfaat untuk teman Anda!

Download Source

Share:




LAINNYA UNTUK ANDA


Komentar (17)

d.setiatno, 10 January 2018 11:51 - Reply

Terima kasih mas fikri ilmu yang bermanfaat. UNLIMITED KODE AUTO

M Fikri, 10 January 2018 17:31 - Reply

Sama-sama Dina,
Thanks atas responnya!

Prasetiyan, 19 March 2018 10:40 - Reply

Mas mau tanya kalo mau buat kode otomatis tapi ID nya ambil dari tabel lain apa bisa?

M Fikri, 08 March 2019 09:10 - Reply

Bisa aja mas, asalkan kodenya bisa dikondisikan unik.

alfip, 25 March 2018 11:52 - Reply

terimakasih banget, simpel dan sangat membantu

M Fikri, 08 March 2019 09:08 - Reply

Sama-sama mas.

Fauzie Diawan, 28 August 2018 01:37 - Reply

Permisi gan, ini kan ngebuat kode otomatis yah. kalau misalnya saya tambahin aturan kodenya jadi $kodetampil = "SUPP" . "-" . $tgl . "-" . $kd; itu stripnya ngaruh ga ama urutan dari kode otomatisnya?

M Fikri, 28 August 2018 07:13 - Reply

Aturannya tarok di return value di model gan seperti ini:
return "SUPP" . "-".date('dmy')."-".$kd;

darus, 10 October 2018 10:04 - Reply

gan mai tanya kalau bikin code detail nyampe ke second nya bisa.?

M Fikri, 08 March 2019 09:08 - Reply

Bisa aja mas, silahkan coba!

Rizki Puji Lestari, 04 March 2019 02:03 - Reply

Nice post! Terima kasih kang :)

M Fikri, 08 March 2019 09:07 - Reply

Sama-sama Rizki

Naldi, 18 April 2019 08:14 - Reply

Terimakasih postingannya gan, sangat bermanfaat sekali... :)

M Fikri, 19 April 2019 08:25 - Reply

Sama-sama mas Naldi

Leave a Comment