Sadece SQL ile TOBB gs1'dan alınan Tescil numarası ile EAN13 barkodların oluşturularak ERP'ye yazılması için sorgular.
--Bize bu iş için iki tane tablo lazım. Tablolardan birisi Barkodlar olsun. içinde tek bir varchar kolon var ismi 'barkod'. --Tablolardan digeri BarkodSiraNo olsun, içinde tek bir int kolon var ismi 'sira' --Önce BarkodSiraNo Tablomuza barkodları oluşturmak için kullanmak üzere 9999999 tane sıra no ekleyelim. WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 9999999 ) INSERT INTO BarkodSiraNo (sira) SELECT * FROM q option (maxrecursion 0)
--Şimdi, sıra numaralarını ve barkod prefix'i kullanarak barkodlarımızı oluşturup Barkodlar tablomuza yazalım. INSERT INTO Barkodlar select TOP 9999 CONCAT(868132250000+sira, ( CASE WHEN CONVERT(int,(( Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),2,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),4,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),6,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),8,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),10,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),12,1)))*3)+ (Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),1,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),3,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),5,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),7,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),9,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),11,1))))%10 >0 THEN 10- CONVERT(int,(( Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),2,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),4,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),6,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),8,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),10,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),12,1)))*3)+ (Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),1,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),3,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),5,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),7,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),9,1))+ Convert(int,SUBSTRING(Convert(nvarchar,868132250000+sira),11,1))))%10 ELSE 0 END) ) FROM BarkodSiraNo order by sira
--sıra geldi ERP'de barkod tanımları tablosuna stok tablosunda olan stoklardan hiç barkodu olmayanlar için daha önce kullanılmamış bir barkodumuzu set etmeye. INSERT INTO BARKOD_TANIMLARI select NEWID(),0,0,0,15,0,0,0,0,1,GETDATE(),1,GETDATE(),'','','', BARKODLAR.barkod,sto_kod,'',0,'',0,0,1,1,0,0,0,'00000000-0000-0000-0000-000000000000','' FROM ( SELECT 10000+ROW_NUMBER() OVER(ORDER BY sto_kod)siraA,sto_kod from STOKLAR where 1=1 AND sto_kod = '102700' --Tüm Barkodsuz stoklar için bu satırı ramle AND (select COUNT(*) from BARKOD_TANIMLARI where bar_stokkodu=sto_kod)<1 )STOKX, (select 10000+ROW_NUMBER() OVER(ORDER BY barkod)siraB,barkod from Barkodlar where (select COUNT(*) from BARKOD_TANIMLARI where bar_kodu=barkod)<1)BARKODLAR where STOKX.siraA=BARKODLAR.siraB --IŞLEM TAMAM
--Kalan barkodları kontrol edelim. select barkod from Barkodlar where (select COUNT(*) from BARKOD_TANIMLARI where bar_kodu=barkod)<1 order by barkod












