Suivi de l'utilisation des codes-barres

0000003186     -      17/10/2023

Mercator 11.0 permet une gestion du suivi des codes-barres effectivement utilisés. Cela permet, par exemple, de retirer de la table ARTFOU les codes-barres obsolètes. Pour installer cette fonctionnalité, il suffit d'ajouter une colonne SEARCH_KEY dans les tables de lignes souhaitées. Cet ajout peut se faire, par exemple, dans LIGNES_V, pour suivre l'utilisation des codes-barres dans les ventes, mais pas dans LIGNES_A. L'ajout dans une table, ne requiert donc pas l'ajout dans toutes les tables. La longueur de la colonne doit aussi être adaptée selon la longueur des codes-barres utilisés.

alter table LIGNES_V add SEARCH_KEY char(30) not null default ''
alter table LIGNES_A add SEARCH_KEY char(30) not null default ''
alter table LIGNES_D add SEARCH_KEY char(30) not null default ''

Lorsque cette colonne est présente, Mercator la complète avec la clé de recherche qui a été utilisée pour trouver l'article inséré dans cette ligne. Mercator ne distingue pas le fait que ce soit effectivement un code-barres ou une clé de recherche saisie manuellement.

Cette colonne a un usage purement informatif. Mercator la complète si elle est présente mais ne l'utilise jamais. 


Exemple de requête permettant de supprimer de la table ARTFOU les codes-barres qui ne sont plus utilisés depuis plus de 6 mois :

 

declare @date date
set @date = dateadd(month, -6, getdate())

delete from ARTFOU where (id_fou is null) and (ref_fou<>'')
and not exists(select * from LIGNES_V inner join PIEDS_V
on (pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece)

where (pieds_v.date>=@date) and (artfou.ref_fou=lignes_v.search_key) and (artfou.id_art=lignes_v.id_article))

and not exists(select * from LIGNES_A inner join PIEDS_A
on (pieds_a.id=lignes_a.id) and (pieds_a.journal=lignes_a.journal) and (pieds_a.piece=lignes_a.piece)

where (pieds_a.date>=@date) and (artfou.ref_fou=lignes_a.search_key) and (artfou.id_art=lignes_a.id_article))

and not exists(select * from LIGNES_D
where (lignes_d.date>=@date) and (artfou.ref_fou=lignes_d.search_key) and (artfou.id_art=lignes_d.id_art))