Membuat Function EAN Code Generator Di MySQL Database

Standar kode batang retail di Eropa dan seluruh dunia kecuali Amerika dan Kanada adalah EAN (European Article Number) – 13.

Dimana EAN-13 standar terdiri dari:

  • Kode negara atau kode sistem: 3 digit pertama kode batang menunjukkan negara di mana manufacturer terdaftar.
  • Manufacturer Code: Ini adalah 5 digit kode yang diberikan pada manufacturer dari wewenang penomoran EAN.
  • Product Code: 5 digit setelah manufacturer code. Nomor ini diberikan manufacturer untuk merepresentasikan suatu produk yang spesifik.
  • Check Digit atau Checksum: Digit terakhir dari kode batang, digunakan untuk verifikasi bahwa kode batang telah dipindai dengan benar.

Berdasarkan itu kita akan membuat sebuah function di MySQL yang akan mengenerate secara otomatis kode EAN-13 sbb:

[code language=”sql”]

DELIMITER $$

CREATE DEFINER=root@localhost FUNCTION EAN13(source VARCHAR(12)) RETURNS VARCHAR(13) CHARSET latin1

DETERMINISTIC
BEGIN
DECLARE _char1 INT;
DECLARE _char2 INT;
DECLARE _char3 INT;
DECLARE _char4 INT;
DECLARE _char5 INT;
DECLARE _char6 INT;
DECLARE _char7 INT;
DECLARE _char8 INT;
DECLARE _char9 INT;
DECLARE _char10 INT;
DECLARE _char11 INT;
DECLARE _char12 INT;
DECLARE _sum INT;
DECLARE _modulusValue INT;
DECLARE _checkDigit INT;

SET _char1 := CAST(SUBSTR(source,1,1) AS UNSIGNED);
SET _char2 := CAST(SUBSTR(source,2,1) AS UNSIGNED) * 3;
SET _char3 := CAST(SUBSTR(source,3,1) AS UNSIGNED);
SET _char4 := CAST(SUBSTR(source,4,1) AS UNSIGNED) * 3;
SET _char5 := CAST(SUBSTR(source,5,1) AS UNSIGNED);
SET _char6 := CAST(SUBSTR(source,6,1) AS UNSIGNED) * 3;
SET _char7 := CAST(SUBSTR(source,7,1) AS UNSIGNED);
SET _char8 := CAST(SUBSTR(source,8,1) AS UNSIGNED) * 3;
SET _char9 := CAST(SUBSTR(source,9,1) AS UNSIGNED);
SET _char10 := CAST(SUBSTR(source,10,1) AS UNSIGNED) * 3;
SET _char11 := CAST(SUBSTR(source,11,1) AS UNSIGNED);
SET _char12 := CAST(SUBSTR(source,12,1) AS UNSIGNED) * 3;

SET _sum := _char1+_char2+_char3+_char4+_char5+_char6+_char7+_char8+_char9+_char10+_char11+_char12;
SET _modulusValue := _sum%10;
SET _checkDigit := 10 – _modulusValue;

IF (_checkDigit = 10 ) THEN
SET _checkDigit := 0;
END IF;

RETURN CONCAT(source,_checkDigit);

END$$

DELIMITER ;

[/code]

Untuk mengujinya, silahkan select fungsi tersebut sbb:

[code language=”sql”]

SELECT EAN13(‘123456789012’);

[/code]

Maka akan menghasilkan:

[code language=”sql”]

EAN13(‘123456789012’)
1234567890128

[/code]

Dimana angka 8 terakhir adalah Check Digit.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Silahkan berkomentar

This site uses Akismet to reduce spam. Learn how your comment data is processed.