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
Indien de instelling "XAML Tab 1 Artikels" een EditEntry bevat waarvan de bron ID_ART is (standaardinstelling)
De artikelvalidatie wordt altijd uitgevoerd in MercatorPenguin dankzij zijn permanente verbinding met de databank via MercatorPenguinServer. Bijgevolg wordt bij het importeren van een lijst met artikelen het zoeken aan de hand van de verschillende zoeksleutels niet meer uitgevoerd in Mercator Desktop omdat het artikel definitief geïdentificeerd is in MercatorPenguin.
Als het beheer van de serienummers op niveau 3 staat en het zoeken van artikelen op basis van serienummer is geactiveerd (SEARCH_SER), dan kan het serienummer automatisch worden ingevoegd in een document in commercieel beheer (alleen). De samenhang van het depot/locatie met dit serienummer wordt echter pas gecontroleerd bij het opslaan van het document in Mercator.
Indien het lotbeheer actief is en het zoeken naar artikelen op basis van de naam van het lot is geactiveerd (SEARCH_LOT), dan kan het lotnummer automatisch worden ingevoegd in een document in commercieel beheer (alleen). De samenhang van het depot/de locatie met dit lot wordt echter pas gecontroleerd bij het opslaan in Mercator.
Indien u barcodes wenst te scannen die niet gevalideerd zijn in MercatorPenguin (bv. SSCC's)
In dit geval moet u de instelling "XAML Tab1 Artikels" wijzigen zodat geen enkel EditEntry de bron ID_ART heeft. De inhoud van het rooster kan worden vervangen door deze instelling:
<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"/>
In de "XAML ListViewCell Articles" worden labels die verbonden zijn met @ID_ART en @DESIGNATIO vervangen door een label dat verbonden is met @CLE.
In dit geval wordt het artikel uitsluitend in Mercator geïdentificeerd, met gebruikmaking van de artikelsleutels en andere zoekcriteria die gewoonlijk voor mobiele terminals worden gebruikt.
Programmeringsopties
Het hier gebruikte mechanisme bestaat erin een enkele DataTable te verplaatsen tussen MercatorPenguin, MercatorPenguinServer en Mercator Desktop.
Standaard is de structuur van deze DataTable :
- Voor een lijst van artikels:
- CLE : barcode niet gevalideerd gescand
- ID_ART : id van gescand item
- DESIGNATIO : artikelomschrijving
- Q : gecodeerde hoeveelheid
- NUM_SERIE : serienummer: alleen indien serienummerbeheer op niveau 3 en zoeken op serienummer is geactiveerd (SEARCH_SER)
- ID_LOT : lotnummer: alleen als lotbeheer actief is en zoeken op lotnaam is ingeschakeld (SEARCH_LOT)
- LIB_LOT : Lotnaam: alleen als lotbeheer actief is en zoeken op lotnaam is ingeschakeld (SEARCH_LOT).
- Voor een lijst van serienummers :
Deze DataTable kan gewijzigd worden met behulp van de gebeurtenis DataTableCreated in de klasse MercatorUi.BarcodeTerm.BarcodeTermPTPENGUIN. Met deze structuuraanpassing kunnen extra waarden worden getransporteerd, die kunnen worden opgehaald in een BeforeInsert of AfterInsert event voor deze BarcodeTerm..
Het is ook mogelijk het interactiemechanisme van de Penguin-gebruiker te implementeren.
De onderstaande voorbeeldcode laat zien hoe
- Een MYCOL string-kolom toevoegen aan de basis DataTable
- Stel de gebruiker een bevestigingsvraag.
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 = "Bevestigen in customizer ?",
Type = MercatorPenguin.Question.QuestionTypeEnum.YesNo,
AbortIfCancel = true
};
return;
}
...
}
}
}
Opdat de kolom MYCOL automatisch gegevens ontvangt van het gescande artikel, moet naar deze extra kolom worden verwezen in de eigenschap ReqSql2ExtraColumns van de EditEntry waarvan de bron ID_ART is. (zie deze pagina)
ReqSql2ExtraColumns="stock.s_cle2+stock.s_cle3 as mycol"
Te laden :
0000003065.zip (29 Kb - 25-01-2022)