Mercator 10.1 contient une fonctionnalité de suivi des modifications dans les signalétiques, en ce compris certaines grilles qui en dépendent. Cela a imposé une modification importante dans la manière dont Mercator sauvegarde les données de ces grilles :
- ARTFOU = SigGrids.ArtFou
- TARCLI = SigGrids.TarCli
- TARPREST = SigGrids.TarPrest
- ARTLIENS = SigGrids.ArtLiens
- ANALIENS = SigGrids.AnaLiens
- IMMDATA = SigGrids.ImmData
Précédemment, lors de la sauvegarde d’une fiche, Mercator supprimait tous les enregistrements de ces grilles et ensuite les recréait. Maintenant, Mercator procède via la séquence « delete / update / insert », plus proche de la réalité, après un bulk du contenu de la grille vers une table SQL temporaire.
Par exemple, pour l'onglet "Fournisseurs" de la fiche "Articles" :
delete ARTFOU where (id_art=@id) and not exists(select * from #artfou_tmp where (artfou.id_art=#artfou_tmp.id_art) and (artfou.id_artfou=#artfou_tmp.id_artfou))
update ARTFOU set ID_FOU=#artfou_tmp.ID_FOU,REF_FOU=#artfou_tmp.REF_FOU,PRIX=#artfou_tmp.PRIX,REMISE=#artfou_tmp.REMISE,ID_DEV=#artfou_tmp.ID_DEV,N_DEC=#artfou_tmp.N_DEC,PRINCIPAL=#artfou_tmp.PRINCIPAL,condit_v=#artfou_tmp.condit_v,condit_a=#artfou_tmp.condit_a,COL_TARI=#artfou_tmp.COL_TARI,Q_EGAL=#artfou_tmp.Q_EGAL,Q1=#artfou_tmp.Q1,Q2=#artfou_tmp.Q2,PRIX1=#artfou_tmp.PRIX1,PRIX2=#artfou_tmp.PRIX2,REM1=#artfou_tmp.REM1,REM2=#artfou_tmp.REM2 from #artfou_tmp where (artfou.id_art=#artfou_tmp.id_art) and (artfou.id_artfou=#artfou_tmp.id_artfou)
insert into ARTFOU (ID_ART,ID_FOU,REF_FOU,PRIX,REMISE,ID_DEV,N_DEC,ID_ARTFOU,PRINCIPAL,condit_v,condit_a,COL_TARI,Q_EGAL,Q1,Q2,PRIX1,PRIX2,REM1,REM2)
select ID_ART,ID_FOU,REF_FOU,PRIX,REMISE,ID_DEV,N_DEC,ID_ARTFOU,PRINCIPAL,condit_v,condit_a,COL_TARI,Q_EGAL,Q1,Q2,PRIX1,PRIX2,REM1,REM2 from #artfou_tmp where not exists(select * from ARTFOU where (artfou.id_art=#artfou_tmp.id_art) and (artfou.id_artfou=#artfou_tmp.id_artfou))
En conséquence : si des triggers ON INSERT et ON DELETE ont été installés sur ces tables, il est peut-être nécessaire de prévoir à présent le cas ON UPDATE.
Nous rappelons ici qu’un bon trigger ON UPDATE ne se déclenche pas à tout-va, mais après un ou plusieurs tests de ce type :
if update(macolonne)
Il est peut-être nécessaire de revoir certains paramétrages à la lumière de ceci.
Ceci concerne toutes les versions 10.1 des assemblies Mercator (Majuro), même si le voucher ne contient pas la version 10.1.