U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

MercatorPenguin als handheld barcodescanner

0000003065     -      09-03-2022

MercatorPenguin 2.10 of later kan worden gebruikt als een handheld barcodescanner voor Mercator (min. versie 10.10). Dit maakt het dus mogelijk om MercatorPenguin te gebruiken bij alle functies die het laden van gegevens via een handheld scanner aanbieden.

ptpenguin_nl

Dit maakt het, net zoals bij andere scanners, mogelijk om ofwel een lijst met artikels, ofwel een lijst met serienummers in te voeren.

Om deze functie te activeren, moet u Penguin ingeven in een van de "Barcode terminal" opties. (X_GUN, X_GUN2 of X_GUN3) via "Tools > Opties". Het is mogelijk om meerdere keren naar dit type terminal te verwijzen als u verschillende configuraties wilt gebruiken.

Vervolgens is het noodzakelijk om deze functionaliteit te configureren via "Tools > Terminal MercatorPenguin > Setup". In dit scherm kunt u voor beide situaties (artikellijst / serienummerlijst) de twee MercatorPenguin-tabbladen configureren: ingave en reeds ingegeven lijnen.

Opmerking: il faut entrer au moins une fois dans ce paramétrage et cliquer sur "OK" pour installer le paramétrage par défaut.

Le paramétrage par défaut se présente comme ceci :

     ptpenguin_serie

Il est aussi nécessaire de créer un ou plusieurs bundles de type "Liste" afin de mettre en place un point d'entrée vers les écrans illustrés ci-dessus. Ce bundle doit implémenter un PtEditButton dont les propriétés sont :

<m:PtEditButton Text="@CAPTION" Font="Small" PtId="@ID" PtType="Items" PtNum="2" />
  • PtId : id du jeu de données scannées (voir table PENGUIN_PT, colonne ID). Null ou vide, si on souhaite créer un nouveau jeu de scanning.
  • PtType :
    • Items : pour une liste d'articles
    • Serials : pour une liste de numéros de série
  • PtNum : n° du terminal dans les options. Paramètre optionnel. Valeur par défaut : 1

Le fichier zip ci-dessous contient deux bundles prêts à l'emploi.

 

Concernant les listes d'articles

Si le paramétrage "XAML Tab1 Articles" contient un EditEntry dont la source est ID_ART (paramétrage par défaut)

La validation article est toujours effectuée dans MercatorPenguin, grâce à sa connexion permanente à la base de données via MercatorPenguinServer. En conséquence, lors de l'import d'une liste d'articles, la recherche au travers des différentes clés de recherche n'est plus effectuée dans Mercator Desktop, l'article ayant été définitivement identifié dans MercatorPenguin.

Si la gestion des numéros de série est de niveau 3 et que la recherche articles sur base du n° de série est activée (SEARCH_SER), alors le numéro de série peut être inséré automatiquement dans un document de la gestion commerciale (uniquement). Toutefois, le contrôle quant à la cohérence du dépôt/emplacement par rapport à ce numéro de série ne sera effectué que lors de la sauvegarde dans Mercator.

Si la gestion des lots est active et que la recherche articles sur base du libellé du lot est activée (SEARCH_LOT), alors le numéro de lot peut être inséré automatiquement dans un document de la gestion commerciale (uniquement). Toutefois, le contrôle quant à la cohérence du dépôt/emplacement par rapport à ce lot ne sera effectué que lors de la sauvegarde dans Mercator.

Si on souhaite scanner des codes-barres non validés dans MercatorPenguin (par ex. des SSCC)

Dans ce cas, il faut modifier le paramétrage "XAML Tab1 Articles" afin qu'aucun EditEntry n'ait la source ID_ART. Le contenu de la grid peut être remplacé par ce paramétrage :

<m:EditEntry Source="CLE" HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" />

<Label Text="Q" FontSize="12" VerticalOptions="Center" HorizontalOptions="End" Margin="0,0,5,0" Grid.Column="0" Grid.Row="1" />
<m:EditEntry Source="Q" WidthRequest="120" Decimals="2" Grid.Column="2" Grid.Row="1" DefaultLineValue="1"/>

Dans le "XAML ListViewCell Articles", les labels connectés à @ID_ART et @DESIGNATIO seront remplacés par un label lié à @CLE.

Dans ce cas, l'identification de l'article est exclusivement effectuée dans Mercator, sur base des clés articles et autres critères de recherche habituels pour les terminaux portables.


Possibilités de programmation

La mécanique qui prévaut ici consiste au déplacement d'une DataTable unique entre MercatorPenguin, MercatorPenguinServer et Mercator Desktop.

Par défaut, la structure de cette DataTable est :

  • Pour une liste de articles :
    • CLE : code-barres non validé scanné
    • ID_ART : id de l'article scanné
    • DESIGNATIO : désignation de l'article
    • Q : quantité encodée
    • NUM_SERIE : n° de série : uniquement si gestion des n° de série de niveau 3 et recherche article par n° de série activée (SEARCH_SER)
    • ID_LOT : n° de lot : uniquement si la gestion des lots est active et la recherche articles par libellé du lot activée (SEARCH_LOT)
    • LIB_LOT : libellé du lot : uniquement si la gestion des lots est active et la recherche articles par libellé du lot activée (SEARCH_LOT)
  • Pour une liste de numéros de série :
    • NUM_SERIE : n° de série.

    Cette DataTable peut être modifiée via l'évènement DataTableCreated de la classe MercatorUi.BarcodeTerm.BarcodeTermPTPENGUIN. Cette adaptation de structure permet de transporter des valeurs supplémentaires qui peuvent être récupérées dans un évènement BeforeInsert ou AfterInsert de ce BarcodeTerm.

    Il est aussi possible de mettre en place le mécanisme d'interaction avec l'utilisateur Penguin.

    L'exemple de code ci-dessous montre comment

    1. Ajouter une colonne MYCOL de type chaîne de caractères dans la DataTable de base
    2. Poser une question de confirmation à l'utilisateur.
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorUi.BarcodeTerm;

// <CompileWithRoslyn />

namespace BarcodeTerm
{
    public class Customizer : MercatorUi.ICustomizers.IBarcodeTermCreated, MercatorUi.ICustomizers.IBarcodeTermClosed
    {
        public void BarcodeTermCreated(MercatorUi.BarcodeTerm.BarcodeTerm barcodeTerm)
        {
            if (barcodeTerm is BarcodeTermPTPENGUIN ptPenguin)
            {
                ptPenguin.DataTableCreated += DataTableCreated;
                ptPenguin.BeforeSave += BeforeSave;
            }
        }

        public void BarcodeTermClosed(MercatorUi.BarcodeTerm.BarcodeTerm barcodeTerm)
        {
            if (barcodeTerm is BarcodeTermPTPENGUIN ptPenguin)
            {
                ptPenguin.DataTableCreated -= DataTableCreated;
                ptPenguin.BeforeSave -= BeforeSave;
            }
        }

        void DataTableCreated(object sender, BarcodeTermPTPENGUIN.DataTableCreatedEventArgs e)
        {
            if (!e.DataTable.Columns.Contains("mycol"))
            {
                e.DataTable.Columns.Add("mycol", typeof(string));
                foreach (DataRow dr in e.DataTable.Rows)
                    dr["mycol"] = "";
            }
        }

        void BeforeSave(object sender, BarcodeTermPTPENGUIN.BeforeSaveEventArgs e)
        {
            BarcodeTermPTPENGUIN ptPenguin = (BarcodeTermPTPENGUIN) sender;
            if (!ptPenguin.PenguinBeforeSaveAnswers.ContainsKey(1))
            {
                e.PenguinQuestion = new MercatorPenguin.Question
                {
                    Id = 1,
                    Text = "Confirmer dans customizer ?",
                    Type = MercatorPenguin.Question.QuestionTypeEnum.YesNo,
                    AbortIfCancel = true
                };
                return;
            }
            ...
        }
    }
}

 

Pour que la colonne MYCOL reçoivent automatiquement des données provenant de l'article scanné, il faut référencer cette colonne supplémentaire dans la propriété ReqSql2ExtraColumns de l'EditEntry dont la source est ID_ART. (voir cette page)

ReqSql2ExtraColumns="stock.s_cle2+stock.s_cle3 as mycol"


Te laden : 0000003065.zip (29 Kb - 25-01-2022)