Membuat EAN 13 Barcode Dengan PHP

Membuat EAN 13 Barcode Dengan PHP

Banyak developer yang mencari cara untuk membuat barcode yang valid atau benar sesuai struktur, tetapi sulit mendapatkan referensi. Disini betta akan menjelaskan bagaimana membuat barcode yang valid dan benar sesuai struktur. Jenis barcode yang akan betta bahas adalah EAN-13 (EAN 13).

Apa itu kode EAN?

Kode EAN / EAN Code (European Articles Numbering). EAN-13 diciptakan oleh European Articles Numbering (EAN). Sehingga jenis barcode ini banyak digunakan di negara Eropa.

EAN-13 terdiri dari 13 digit (12 data dan 1 check digit) yang merupakan modifikasi dari sistem Universal Product Code (UPC). Maka dari itu, banyak reader yang bisa membaca EAN-13 sekaligus dapat membaca tipe UPC-A.

Loading...
Contoh Barcode EAN 13
(Sumber Gambar dan Pengertian EAN-13 : blog.kenasecure.com)

13 digit dari EAN-13 terdiri dari:

  • 2 atau 3 digits nomor sistem atau kode negara
  • 5 atau 4 digits untuk pabrikan atau perusahaan
  • 5 digits untuk kode produk
  • 1 digit untuk cek

Dimana digunakan?

EAN-13 banyak digunakan pada POS dan retail.

Setelah kita tahu pengertian dan struktur EAN 13 Barcode sekarang kita lanjut ke topik utamanya! Let’s Code!

1. Membuat Library EAN13

<?php

class EAN13 {
    private $code = null;
    private $prefix = false;
    
    public function __construct ($prefix = false) {
        $this->prefix = $prefix === false ? false : (string) $prefix;
    }
    
    public static function create($prefix = false) {
        $barcode = new static($prefix);
        
        return $barcode->generate();
    }

    public function generate()
    {
        // Generate random
        $this->code = (string) mt_rand(100000000000, 999999999999); // 12 chars long
        
        if ($this->prefix) {
            $this->code = $this->prefix . $this->code;
            $this->code = substr($this->code, 0, -strlen($this->prefix));
        }

        // Get latest digit
        $this->code .= $this->getCheckDigit();

        return $this->code;
    }

    private function getCheckDigit()
    {
        $codePartials = str_split($this->code);
        $checkdigit = null;
        $evenNumbers = 0;
        $oddNumbers = 0;

        foreach ($codePartials as $key => $value) {
            if (($key + 1) % 2 == 0) { // Keys start from 0, We want the start to be 1
                $evenNumbers += $value;
            } else {
                $oddNumbers += $value;
            }
        }

        $evenNumbers = $evenNumbers * 3;
        $total = $evenNumbers + $oddNumbers;

        if ($total % 10 == 0) {
            $checkdigit = 0;
        } else {
            $next_multiple = $total + (10 - $total % 10);

            $checkdigit = $next_multiple - $total;
        }

        return $checkdigit;
    }
}

Library tersebut berguna untuk membuat kode EAN 13. Silahkan copy dan paste kode di atas atau download dari link berikut Gist EAN 13.

2. Membuat Kode Manufaktur / Kode Pabrik

Sesuai dengan penjelasan dari pengertian di atas, betta perlu untuk membuat kode manufaktur secara unik yaitu 5 digit angka yang dibuat sesuai berdasarkan nama pabrik berdasarkan apa yang masukkan pengguna. Yang betta implementasikan disini adalah sebagai berikut:

<?php

if ( !function_exists('create_mfg_code') ) {
    function create_mfg_code($mfg_name)
    {
        $rand = mt_rand(00000, 99999);
        $code = initials( $mfg_name );
        $gen = $code . $rand;
        return substr( $gen, 0, -strlen($code) );
    }
}

if ( !function_exists('initials') ) {
    function initials($str) {
        $ret = null;
        foreach (explode(' ', $str) as $word) {
            $num = to_num(strtolower($word[0]));
            $ret .= $num;
        }
        return $ret;
    }
}

if ( !function_exists('to_num') ) {
    function to_num($data) {
        $alphabet = array( 'a', 'b', 'c', 'd', 'e',
                           'f', 'g', 'h', 'i', 'j',
                           'k', 'l', 'm', 'n', 'o',
                           'p', 'q', 'r', 's', 't',
                           'u', 'v', 'w', 'x', 'y',
                           'z'
                           );
        $alpha_flip = array_flip($alphabet);
        $return_value = -1;
        $length = strlen($data);
        for ($i = 0; $i < $length; $i++) {
            $return_value +=
                ($alpha_flip[$data[$i]] + 1) * pow(26, ($length - $i - 1));
        }
        return $return_value;
    }
}

Kode di atas akan membuat 5 digit kode manufaktur / pabrik secara otomatis, Contoh penggunaan fungsi craete_mfg_code( $mfg_name ) fungsi tersebut membutuhkan parameter “Nama Pabrik / Gudang / Nama Manufaktur” pada contoh ini saya menggunakan nama Gudang:

<?php

echo create_mfg_code( 'Gudang Timur' );
// Hasil : 61999

3. Membuat Kode Produk

Untuk dapat membuat kode batang / barcode yang sesuai maka kita membutuhkan kode produk yang sesuai ketentuan dari penjelasan di atas, yaitu 5 digit kode produk. Contoh membuat 5 digit kode produk unik:

<?php

// Craete Product Code
$product_code        = substr(round(microtime(true)),0,5);	
// Hasil : 15949

4. Menentukan Nomor Sistem / Number System

Pada kasus ini betta menentukan bahwa nomor sistem yang betta gunakan adalah 2 digit angka yaitu 17. Kalian bisa menggunakan alternatif lain seperti contoh dan pengetian pada gambar di atas yaitu dengan menggunakan kode negara.

5. Menggabungkan Nomor Sistem, Kode Manufaktur dan Kode Produk

Setelah membuat Kode Manufaktur, Kode Produk, dan Nomor Sistem. Setelah itu betta hendak menggabungkannya sehingga akan menjadi sebagai berikut:

<?php

// Combine
$item_code          = $number_system . $mfg_code . $product_code;
// Hasil : 1761999159498 (Panjang 12 digit)

kode yang digabungkan terdiri dari Nomor Sistem + Kode Manufaktur + Kode Produk = 12 digit angka. Setelah digabungkan maka tugas terakhir kita adalah membuat kode batangnya menggunakan library EAN-13 supaya digit tersebut valid.

6. Menggunakan Library EAN-13

Untuk menggunakan library EAN-13nya kalian hanya membutuhkan 1 baris kode sebagai berikut:

<?php

$barcode 		= EAN13::create($item_code);
echo "Barcode: ". $barcode . PHP_EOL;
// Hasil : Barcode: 1761999159498 (Panjang 13 Digit angka)

Berikut Contoh Barcode EAN-13

Contoh Barcode EAN-13
Contoh Barcode EAN-13

Selesai! Mudah sekali bukan? Oh iya, kalau kita bisa membuat kombinasi angka menjadi kode batang / barcode dengan jenis EAN-13 maka seharusnya kita bisa meng-ekstrak struktur barcode yang kita buat, karena barcode tersebut mengandung sebuah informasi tetang produk yang akan dilabeli.

Bagaiamana cara meng-ekstrak barcode jenis EAN-13?

Untuk artikel cara ekstrak barcode jenis EAN-13 akan betta bahas di blog berikutnya ya! Jangan lupa share jika menurut kalian blog ini bermanfaat.

Berikut kode lengkapnya: EAN-13_example.php

Leave a Reply

Your email address will not be published. Required fields are marked *

#TanyaDulu

Boleh loh kalau mau tanya-tanya dulu sebelum menentukan proyek yang kamu mau.