Automatisch genereren van de EAN13 Barcode

0000000480     -      21-06-2017

Mercator kan zelf automatisch een EAN13 barcode generen bij de aanmaak van een nieuw artikel. Deze barcode wordt opgeslagen in één van de drie sleutels van de artikelfiche. De nummer van deze sleutel wordt bepaald in "Tools/Opties/Bestanden/Sleutelnr auto EAN13"

De optie "Laatste nr EAN13" laat u toe om de stam te bepalen die zal worden gebruikt voor de aanmaak van deze code. Deze omvat de 12 eerste caracters van de EAN13 code. Mercator voegt er het controle caracter aan toe. De codes worden berekend via het verhogen +1 van de 12 eerste caracters.

Opgepast : Deze optie moet niet verward worden met "Tools/opties/bestanden/Sleutel EAN13", die de sleutelnummer van de artikelfiche omvat, waarin de barcode manueel wordt ingelezen. Vb: Barcode van de leverancier. Indien bij de ingave van deze barcode de structuur niet overeenstemt met en EAN13 code, zal er een bericht worden afgebeeld. Indien de vraag zou bestaan om een grote groep EAN13 codes aan te maken voor de bestaand artikelen, volstaat om de volgende script toe te passen via "Tools/Prompt Fox" (voorbeelde gegeven voor sleutel 2.

Het script moet in transactie moet in een SQL-tabblad van de code-editor worden uitgevoerd. In dit script moet ' s_cle3' worden aangepast met de sleutel die men wil vervolledigen met de EAN13-code. (Zie de waarde van de optie X1AUTO_EAN) Deze kolomnaam moet op twee plaatsen in het script worden gewijzigd. Nadat u dit gedaan hebt moet Mercator tenslotte opnieuw worden opgestart zodat de software in het woordenboek MercatorUi.Globals.Params rekening houdt met de optie X2AUTO_EAN die bijgewerkt wordt met het script in de OPTIES-tabel.

declare @X2AUTO_EAN varchar(20)
select @X2AUTO_EAN=rtrim(valeur) from OPTIONS (NOLOCK) where (type='X2AUTO_EAN') and (stem='PARAMS')
if (@X2AUTO_EAN is null) or (len(@X2AUTO_EAN)<>12) or (isNumeric(@X2AUTO_EAN)=0)
    return
 
select ROW_NUMBER() over (ORDER BY s_id) as recno,s_id
    into #stock_ean_tmp
    from stock where s_cle3=''
create index s_id on #stock_ean_tmp (s_id)

if exists(select * from #stock_ean_tmp)
begin 
    update stock set s_cle3=dbo.XEANCHECK(right(replicate('0',12) + rtrim(cast(cast(@X2AUTO_EAN as bigint)+recno as char(12))),12))
        from #stock_ean_tmp where (#stock_ean_tmp.s_id=stock.s_id)
    declare @max_recno int
    select @max_recno=max(recno) from #stock_ean_tmp
    update OPTIONS set valeur=right(replicate('0',12)+rtrim(cast(cast(@X2AUTO_EAN as bigint)+@max_recno as char(12))),12) where (type='X2AUTO_EAN') and (stem='PARAMS')
end
drop table #stock_ean_tmp