
Eğer ürünlerinizin küresel çapta satılmasını planlıyorsanız, EAN-13 barkod sistemine ihtiyacınız olacaktır.
Küresel çapta satış yapmak, yalnızca yurt dışına satış yapmak anlamına gelmez.
Örneğin, Migros, Şok, Boyner, Trendyol, Amazon gibi platformlarda başka ürünler ile birlikte sizin ürünlerinizde yan-yana satılacak ise diğer ürünlerle çakışmayacak bir barkod numarası satıcı tarafından talep edilir.
Satıcı bana öyle bir barkod numarası verki diğer ürünlerde bu barkod numarası ile çakışmasın der. Yani kasaya gelince barkodu okuttuğunda sizin ürün yerine hacı şakir sabunu çıkmaz ksada en fazla barkod tanımsız hatası alınır.
EAN-13’e Ne Zaman Gerek Yok?
Eğer kendi ürünlerinizi kendiniz satıyor, ürün takibi yapıyorsanız, EAN-13 barkoduna ihtiyacınız yoktur. Alternatif olarak, Code128 veya rastgele bir barkod (örneğin “8690000”) numarası vererek barkod sistemi kullanabilirsiniz. Bu durumda herhangi bir tescile/kayda veya ödeme yapmanıza gerek yoktur.
EAN-13 ‘ü kim verir, neden verir, pazarlık payı varmıdır?
Yukarıda örneklediğim gibi aslında kısaca EAN-13, ürünlerinizin diğer ürünlerle karışmaması için yinelenmeyen bir kimlik numarasıdır. Yinelenmeyen bir numara için ortak bir veritabanı havuzuna ihtiyaç vardır.
Barkodun ilk 3 hanesi ülke kodunu temsil eder (Türkiye için 868 ve 869). Telefon kodu gibi (+90) Ülke numaraları GS1 adlı vakıf tarafından verilir. (Adamlar numara satıyorlar yahu…)

TOBB (Türkiye Odalar ve Borsalar Birliği) GS1’den ülke kodu alır (868, 869 vb.) almış olduğu 3 haneli ülke kodundan sonra 4-9 hane daha ekleyip firmalara 7 – 12 hane olarak TOBB bu EAN-13 barkod ön eklerini satar.
Ürün sayınıza bağlı olarak, 7 haneli bir kod almak, 12 haneli bir koda kıyasla daha maliyetlidir.
Tobb’dan kaç hane barkod alacağıma nasıl karar vereceğim?
Fiyatı değişken kaç tane ürününüz varsa ona göre karar verebilirsiniz.
- Fiyatı değişen 1 tane ürününüz varsa 12 hane alacaksınız
- 10 tane fiyatı değişen ürününüz varsa 11 hane
- 100 tane fiyatı değişen ürününüz varsa 10 hane
- 1,000 tane fiyatı değişen ürününüz varsa 9 hane
- 10,000 tane fiyatı değişen ürününüz varsa 8 hane
- 100,000 tane fiyatı değişen ürününüz varsa 7 hane almanız lazım.
7 hane alırsanız 3,000 tl, 12 hane alırsanız 300 tl gibi bir para ödeyeceksiniz. (Fiyatları salladım en son 5-6 sene önce aldım buna benzerdi fiyatlar)
7 hane alırsanız TOBB size şunu verecek;
Ömer sana verdiğim kod : 869 1234
Bu ne demek
– 869 (Türkiye firması demek.)
– 1234 (omerosmanoglu şirketinin ürünü demek oluyor.)
EAN-13 firma kodumu tescil ettim. Ürünlerime barkod nasıl oluşturacağım?
TOBB’un verdiği EAN-13 firma kodunuzu (869 1234) ürün barkodlarınızın başına ekleyerek, her fiyatı değişen ürün için 12 hanelik barkod kodu oluşturacaksınız.
Örneğin, 869 1234 00000‘den / 869 1234 99999‘a kadar. 100.000 adet ürününüz için barkod numarası vereceksiniz.
Küçük bir ayrıntıya değinelim: Örneğin, “100. Yıl T-Shirt” adında bir ürününüz var. Bu ürünün sarı ve lacivert renkleri, ayrıca S, M ve L bedeni bulunuyor.
Bu ürün için 1 tane EAN-13 barkodu verebilirsiniz 869 1234 00001 gibi fakat ürününüzde fiyat barkod (EAN-13) haricinde bir ürün barkodu yoksa stok takibinde hangi renk, hangi bedenden satış yapıldığını, ne kadar kaldığını raporlama konusunda sıkıntı yaşarsınız.
Bu durumda renk ve beden çeşitlerine barkod vermek durumundasınız. Yani renk/beden bazında takip edecekseniz, her bir renk ve beden kombinasyonu için ayrı bir EAN-13 kodu kullanmanız gerekecek.
Örneğin:
- 100. Yıl T-Shirt sarı renk, S beden: 869 1234 00000
- 100. Yıl T-Shirt sarı renk, M beden: 869 1234 00001
- 100. Yıl T-Shirt sarı renk, L beden: 869 1234 00002
- 100. Yıl T-Shirt lacivert renk, S beden: 869 1234 00003
- 100. Yıl T-Shirt lacivert renk, M beden: 869 1234 00004
- 100. Yıl T-Shirt lacivert renk, L beden: 869 1234 00005
gibi…
Parayı bayıldık aldık. Ürünlerime barkod nasıl vereceğim?
Kullandığınız PLM, PDM, POS (Satış Noktası Sistemi/Ödeme Noktası Değil…), ERP, Muhasebe programları zaten bunu yapacaktır.
Eğer yazılımcıysanız veya biraz ilginiz varsa SQL’den kendinizde oluşturabilirsiniz.
create FUNCTION [dbo].ean13Uret ( @firmaKodu VARCHAR(7), @baslangicNo INT, @uretilecekAdet INT ) RETURNS @BarkodListesi TABLE ( SiraNo INT, Barkod VARCHAR(13) ) AS BEGIN DECLARE @i INT = 0; DECLARE @barkod VARCHAR(12); DECLARE @tamBarkod VARCHAR(13); DECLARE @baslangic INT = @baslangicNo; WHILE @i < @uretilecekAdet BEGIN -- Barkodun ilk 12 hanesi (firma kodu + seri numarası) SET @barkod = CONCAT(@firmaKodu, RIGHT(CONCAT('00000', CAST(@baslangic AS VARCHAR(5))), 5)) -- Kontrol hanesi hesapla DECLARE @toplam INTEGER = 1 * CAST(SUBSTRING(@barkod, 1, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 2, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 3, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 4, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 5, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 6, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 7, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 8, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 9, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod,10, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod,11, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod,12, 1) AS INTEGER); DECLARE @kontrolHanesi INTEGER = (10 - (@toplam % 10)) % 10 -- Tam barkod (12 hane + kontrol hanesi) SET @tamBarkod = CONCAT(@barkod, CAST(@kontrolHanesi AS VARCHAR(1))) -- Barkodu geçic tabloya ekle INSERT INTO @BarkodListesi (SiraNo, Barkod) VALUES (@i + 1, @tamBarkod) -- Sonraki barkoda geç SET @baslangic = @baslangic + 1 SET @i = @i + 1 END -- tabloyu döndür RETURN END
Kodun çalışan haline buradan bakabilirsiniz. DBFiddle
Kod’un parametrelerinin açıklaması
-- @firmaKodu= TOBB tarafından firmanıza verilen EAN13 kodu -- @baslangicNo = Kaçıncı sıradan itibaren oluşturmaya başlayacaksınız -- @uretilecekAdet = Kaç adet barkod oluşturacaksınız. -- Örnek Kullanım: --869 0000 firma tescil kodu ile 58.sıradan başlayarak 20 tane barkod üretir. SELECT * FROM dbo.ean13Uret('8690000', 58, 20);
EAN-13 Kontrol hanesi kontrol kodu (12 hane barkod verip 13.haneyi oluşturmak)
create FUNCTION [dbo].[ean13Kontrol] (@kod VARCHAR(12)) RETURNS VARCHAR(13) AS BEGIN DECLARE @toplam INTEGER = 0 DECLARE @kontrolNo INTEGER DECLARE @barkod VARCHAR(13) = @kod -- Barkod değeri SET @toplam = 1 * CAST(SUBSTRING(@barkod, 1, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 2, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 3, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 4, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 5, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 6, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 7, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod, 8, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod, 9, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod,10, 1) AS INTEGER) + 1 * CAST(SUBSTRING(@barkod,11, 1) AS INTEGER) + 3 * CAST(SUBSTRING(@barkod,12, 1) AS INTEGER) -- Kontrol hanesi hesapla SET @kontrolNo = (10 - (@toplam % 10)) % 10 -- Kontrol hanesi eklenmiş barkod no RETURN @barkod + CAST(@kontrolNo AS CHAR) END GO select dbo.ean13Kontrol('869000000000')
Kodun çalışan hali: https://dbfiddle.uk/sbu8kr2V
Ekşi sözlük’de yazdım makaleyi ama şekilsiz olduğundan, senelerdir sorulması bitmediğinden,
bir de buraya yazayım dedim. Benzer bir şekilde IMEI oluşturma içinde bir yazı eklenecektir.