Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Génération automatique de code-barres EAN13

0000000480     -      21/06/2017

Mercator peut générer de façon automatique un code-barres EAN13 lors de la création d'un nouvel article. Ce code-barres est stocké dans une des 3 clés de la fiche "Articles". Le n° de cette clé est déterminé dans "Outils / Options / Signalétiques / N° clé EAN 13".

L'option "Dernier N° EAN 13" permet de fixer la racine qui sera utilisée pour la génération de ce code. Elle reprend les 12 premiers caractères du code EAN 13. Mercator y ajoute le caractère de contrôle. Les codes sont calculés par incrémentation (+1) des 12 premiers caractères.

Attention : cette première option ne doit pas être confondue avec "Outils / Options / Signalétiques / Clé EAN 13", qui reprend le n° de la clé de la fiche article, qui est destinée à recevoir un code-barres de type EAN13 encodé manuellement. Si, lors de l'encodage, le code-barres n'est pas conforme à la structure EAN13, un avertissement sera affiché.

S'il est souhaité de générer en bloc des codes EAN13 pour des articles existant déjà, il suffit d'appliquer le script suivant via "Outils / Editeur de code" : (exemple donné ici pour la clé 2)


Il faut exécuter sous transaction ce script dans un onglet SQL de l'éditeur de code. Dans ce script, il faut adapter "s_cle2" par la clé que l'on souhaite compléter avec le code EAN13. (Voir valeur de l'option X1AUTO_EAN) Ce nom de colonne est à modifier à 2 endroits du script. Enfin, après exécution, il faut redémarrer Mercator pour que l'option X2AUTO_EAN qui est mise à jour par le script dans la table OPTIONS soit bien prise en compte dans le dictionnaire MercatorUi.Globals.Params.

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_cle2=''
create index s_id on #stock_ean_tmp (s_id)

if exists(select * from #stock_ean_tmp)
begin 
    update stock set s_cle2=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