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.

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 moet men deze functionaliteit configureren via "Tools > Terminal > MercatorPenguin > Setup". In dit scherm kan u voor beide situaties (artikels / serienummers) de twee MercatorPenguin-tabbladen configureren: ingave en reeds ingegeven lijnen.
Opmerking: u moet deze instelling minstens één keer openen en op "OK" klikken om de standaardschermen te installeren.
De standaardinstelling ziet er als volgt uit:
Het is ook nodig om één of meer bundellijsten te maken alstoegangspunt tot het scherm hierboven. Deze bundel moet een PtEditButton implementeren waarvan de eigenschappen zijn:
<m:PtEditButton Text="@CAPTION" Font="Small" PtId="@ID" PtType="Items" PtNum="2" />
- PtId : id van de gescande dataset (zie tabel PENGUIN_PT, ID kolom). Null of leeg als u een nieuwe scanset maakt.
- PtType :
- Items : voor een artikellijst
- Serials : voor een serienummerlijst
- PtNum : terminalnummer in de opties. Optionele parameter. Standaardwaarde: 1
Onderstaand zip-bestand bevat twee kant-en-klare bundels.
Betreft artikellijsten
Si le paramétrage "XAML Tab 1 Artikels" 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 :
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
- Ajouter une colonne MYCOL de type chaîne de caractères dans la DataTable de base
- Poser une question de confirmation à l'utilisateur.
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)