Mercator reconnait le customizer BarcodeTerm. Il réagit aux interfaces de MercatorUi.ICustomizers suivantes :
- IBarcodeTermCreated : lors de la création d’une classe concrète descendante de BarcodeTerm
- IBarcodeTermClosed : lors du dispose de cette classe. (Par exemple, parce qu’on remplace la classe BarcodeTermPTFILE par la classe BarcodeTermPT600 – on en reparlera plus tard)
- IStringUpdater : pour agir sur la requête SQL de recherche d’article au départ d’un barcode scanné.
Cette dernière interface permet donc de modifier la façon dont Mercator indentifie les articles au départ des clés scannées par le terminal portable.
BarcodeTerm répond aussi à ces évènements qui seront idéalement inscrits via IBarcodeTermCreated et désinscrit via IBarcodeTermClosed :
- BeforeSelectFile : remplace notamment ptfile.prg. Cet évènement est levé avant la sélection du fichier. Son eventArgs contient une propriété FileToSelect. Si on la complète avec un nom de fichier existant, alors Mercator ne demandera pas de le nom de fichier dans la boîte de dialogue et utilisera directement ce fichier. Ceci rend donc totalement automatisable tout développement sur base de n’importe quel terminal produisant juste des fichiers compatibles avec le PtFile. (Cet évènement n'est pas levé pour le terminal PT600)
- BeforeInsert : évènement exécuté pour chaque ligne importée juste avant insertion dans le document. L’eventArgs contient notamment ces propriétés :
- CurrentBarCode : DataRow correspondant au barcode que l’on importe. On peut changer son contenu. (exemple : "nettoyer" un barcode)
- CancelInsert : à mettre à true si on souhaite ne pas importer cette ligne.
- AfterInsert : évènement exécuté pour chaque ligne importée juste après insertion dans le document. L’eventArgscontient notamment ces propriétés :
- CurrentBarCode : DataRow correspondant au barcode que l’on a importé.
- DataRowWhereInserted : la lignes dans laquelle l’article a été placé. Si on a importé un lot de lignes correspondant à un SSCC, on reçoit la dernière ligne.
L'instance de l'objet "terminal portable" est contenue dans MercatorUi.Globals.BarcodeTerm.
Exemple : voir cette page