MercatorPenguin : picking voor gevorderden

0000003170     -      05-01-2024

MercatorPenguin bood al functionaliteit voor orderpicking (Picking - Vergelijkingen). MercatorPenguin 2.10.22 biedt nu een meer geavanceerd pickingbeheer.

  • Een meer visueel aspect: de gebruiker kan direct de lijst met te scannen items zien en, dankzij een kleurcode, de verschillende statussen van de gescande items.
  • Gelijktijdig verzamelen van meerdere documenten van dezelfde klant/leverancier.

Algemene herinnering aan pickfunctionaliteit: Pickingbeheer (vergelijkingen)


Hiervoor is een specifieke licentie nodig per mobiel apparaat dat deze functionaliteit gebruikt (PENGUINBILLING=...) en Mercator versie 11.0 of hoger.

Licentiebeheer omvat een systeem voor het activeren en deactiveren van mobiele apparaten die deze functionaliteit kunnen gebruiken. Deze deactivering kan worden uitgevoerd via de onderhoudspagina van de MercatorPenguinServer, of via de onderhoudsbundel. In alle gevallen moet MercatorPenguinServer verbinding kunnen maken met een webservice die wordt gehost door Mercator (host = restapi.mercator.eu) op de https-poort (TCP 443). De functionaliteit beschreven op deze pagina is niet beschikbaar als MercatorPenguinServer niet kan communiceren met deze server.

Opmerking over de RGPD in dit verband :  als onderdeel van dit beheer van licenties per mobiel apparaat wordt alleen deze informatie verzonden:

  • de unieke identificatiecode van het apparaat, willekeurig gegenereerd: bijvoorbeeld 3f2504e0-4f89-11d3-9a0c-0305e82c3301
  • de naam van de host die MercatorPenguinServer host: bijvoorbeeld penguin.mercator.eu
  • de configuratienaam (naam van het MercatorPenguinServer ini bestand).

Er worden geen persoonlijke gegevens van de gebruiker meegedeeld, noch gegevens die in Mercator of MercatorPenguin zijn opgenomen.


Visuele aspect

Nieuwigheden:

  • De lijst met items die moeten worden gekozen, staat direct op het coderingstabblad voor een betere zichtbaarheid.
  • De gepickte hoeveelheden worden opgenomen in de lijst met items en worden dynamisch aangepast aan de huidige picking.
  • Er kan een kleurcode worden gebruikt om de verschillende pickstatussen te symboliseren (zie hieronder).
  • Er kan een knop worden toegevoegd waarmee de gebruiker specifiek een item kan selecteren om te verzamelen (bijvoorbeeld een item zonder barcode).

Met het tabblad 'Lijnen' kan de gebruiker de gekozen regels één voor één doorlopen en indien nodig verwijderen.

  • Op iOS: door de lijn naar links te slepen en vervolgens de knop "Verwijderen" te gebruiken.
  • Op Android: door de regel ingedrukt te houden en dan de "Delete" knop te gebruiken.

Het is niet mogelijk om een regel in de lijst opnieuw te bewerken om deze te wijzigen. In dit geval moet de regel worden verwijderd en opnieuw worden aangemaakt.

Picking wordt altijd benaderd vanuit een bundel van het type "Lijst", via een knop PickingEditButton, waarvan de volgende eigenschappen moeten worden opgegeven:

  • BillingTypeVA : V voor een verkoop, A voor een aankoop
  • BillingId : document id in de PIEDS_V/A tabel
  • BillingJournal : het journaal van het document
  • BillingPiece : het documentnummer
  • BillingType : de TYPE-waarde in PIEDS_V/A
  • BillingTargetSequence (optioneel): bestemmingsjournaal voor het uitvoeren van een transformatie naar deze reeks (verplicht in het geval van een selectie van meerdere documenten)
  • ColorAllPick (optioneel): kleur die aangeeft dat de lijn volledig is gescand
  • ColorNoPick (optioneel): kleur die aangeeft dat de regel nog niet is gescand
  • ColorPartialPick (optioneel) : kleur die aangeeft dat de lijn gedeeltelijk gescand is
  • ColorTooMuchPick (optioneel) : kleur die aangeeft dat de gescande regel te veel materiaal bevat
  • IgnoreLot (optioneel) : om batches te negeren bij het vergelijken
  • IgnoreMplace (optioneel) : om locaties te negeren bij het vergelijken
  • AutoCompare (optioneel) : om op te slaan zonder het vergelijkingsscherm weer te geven.
<m:PickingEditButton Text="Picking" BillingTypeVA="V" BillingType="3" BillingId="@ID" BillingJournal="@JOURNAL" 
BillingPiece="@PIECE" BillingTargetSequence="1Bliv"
ColorAllPick="#9ACD32" ColorPartialPick="#F4A460" ColorTooMuchPick="#FF6347" Font="Small"
AutoCompare="True" IgnoreMplace="True" IgnoreLot="True"/>

Voorbeeld van een bundellijst : Picking.pngb

De lay-out van een venster voor het wijzigen van de picking in MercatorPenguin moet worden aangemaakt in XAML, vanuit het overeenkomstige Mercator "Tools > Sequenties > Verkoop of Aankoop" sequentiebestand, met behulp van dit keuzeknopelement:

param_penguin_picking

Een keuzescherm vereist twee XAML-instellingen:

  1. Gegevensinvoer: lijninformatie verzamelen
  2. Het formaat van elke cel in de ListView die de rijen weergeeft.

Voorbeeld van invoerinstellingen

<Grid RowSpacing="10" ColumnSpacing="0">
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75*" />
    <ColumnDefinition Width="25*" />
</Grid.ColumnDefinitions>
   
<Grid.RowDefinitions>
        <RowDefinition Height="50" />
</Grid.RowDefinitions>

    <m:EditEntry Placeholder="Article" Source="LINE|ID_ARTICLE" HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="0" Margin="-20,0,-20,0"/>
<m:EditScanButton TargetSource="LINE|ID_ARTICLE" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="1" HorizontalOptions="End" Margin="-20,0,-20,0" />

</Grid>

<m:TargetSigLabel Origin="LINE|ID_ARTICLE" Font="Medium" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Margin="0,0,0,0" />

<Grid RowSpacing="10" ColumnSpacing="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120" />
<ColumnDefinition Width="25" />
<ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="50" />
    </Grid.RowDefinitions>

    <m:EditEntry Placeholder="Emplac." Source="LINE|ID_MPLACE" HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="0" />
<m:EditScanButton TargetSource="LINE|ID_MPLACE" Grid.Column="1" Grid.Row="0" />
<m:TargetSigLabel Origin="LINE|ID_MPLACE" Font="Medium" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Margin="10,0,0,0" Grid.Column="2" Grid.Row="0" />

</Grid>

<Grid RowSpacing="10" ColumnSpacing="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="84*" />
<ColumnDefinition Width="16*" />
</Grid.ColumnDefinitions>  
 
<Grid.RowDefinitions>
<RowDefinition Height="50" />
</Grid.RowDefinitions>

<Label Text="Quantité à prélever" FontSize="15" VerticalOptions="Center" HorizontalOptions="Start" Margin="-20,0,-20,0" TextColor="#FFFFFF" Grid.Column="0" Grid.Row="0" />
<m:EditEntry Source="LINE|Q" Decimals="2" Grid.Column="1" Grid.Row="0" VerticalOptions="Center" Margin="-19,0,-20,0" HorizontalTextAlignment="Center"/>

</Grid>

<m:EditAddLineButton CheckDispo="true" HorizontalOptions="Fill" Margin="-20,0,-20,10"/>
<BoxView HorizontalOptions="Fill" HeightRequest="2" Margin="-20,0,-20,-30" Color="%ThemeColor%"/>

 

Voorbeeld van ListViewCell XAML-configuratie

<StackLayout BackgroundColor="@PICKCOLOR">
<Grid RowSpacing="0" ColumnSpacing="0">

<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
   
<Grid.RowDefinitions>
<RowDefinition Height="25" />
</Grid.RowDefinitions>  

<StackLayout Orientation="Horizontal" Grid.Column="0"  Grid.Row="0" HorizontalOptions="StartAndExpand"  >   
<Label Text="@ID_ARTICLE" FontSize="15"  TextColor="#FFFFFF" Margin="0,0,10,0"/>
<Label Text="@DESIGNATIO" FontSize="15" TextColor="#FFFFFF" Grid.Column="1" Grid.Row="0" LineBreakMode="WordWrap"  />
</StackLayout>

</Grid>

<Grid RowSpacing="0" ColumnSpacing="0">

<Grid.ColumnDefinitions>
<ColumnDefinition Width="60*" />
<ColumnDefinition Width="40*" />
</Grid.ColumnDefinitions>
   
<Grid.RowDefinitions>
<RowDefinition Height="25" />
</Grid.RowDefinitions>

<Label Text="Quantité :" FontSize="12" TextColor="#FFFFFF" HorizontalOptions="StartAndExpand" Grid.Column="0" Grid.Row="0" />

<StackLayout Orientation="Horizontal" Grid.Column="1" Grid.Row="0" HorizontalOptions="End" >   
<Label Text="@Q_PICKING:### ##0.00" FontSize="12" TextColor="#FFFFFF" />
<Label Text="/" FontSize="12" TextColor="#FFFFFF"  />
<Label Text="@Q_ORI:### ##0.00" FontSize="12" TextColor="#FFFFFF" />
</StackLayout>

</Grid>

<m:PickedLineButton Text="Picker" WithQ="true" HorizontalOptions="Fill"/>

</StackLayout>

Deze XAML-code produceert deze schermen:

penguin_picking1    penguin_picking2

Configuratieprincipes :

In de eerste XAML-code, moeten elementen van type Edit worden gebruikt om de voettekstvelden en de rijvelden die op dat moment worden gepicked te wijzigen. Deze regelvelden hebben een bron die bestaat uit LINE| gevolgd door de naam van de kolom in de LIGNES_V/A. Totalen en andere niet-wijzigbare informatie worden weergegeven in de vorm van Labels.

Het online item wordt altijd ingevoerd in een EditEntry, waarvan de bron LINE|ID_ARTICLE is. Deze bron wordt herkend als een link naar de beschrijving van het item, wat het mogelijk maakt om de beschrijving weer te geven in een TargetSigLabel. (Zie de SQL-functie LIBTARGETSIG_STOCK die kan worden aangepast).

De XAML-code moet een EditAddLineButton bevatten die de huidige regel toevoegt aan de lijst met regels die op dat moment worden gekozen.

In de tweede XAML-code (ListViewCell), moeten de weer te geven variabelen voorafgegaan worden door een @ en in hoofdletters. Het is mogelijk om een weergavemasker in te stellen in de vorm @COLONNE:masque. Dit masker werkt op dezelfde manier als het masker string.Format() in het .net Framework.
Er is een extra kolom @PICKCOLOR met de kleur van de rijstatus en een kolom @Q_PICKING met de gescande hoeveelheid. In het onderstaande voorbeeld gebruiken we @PICKCOLOR als volgt om de regel te kleuren : 

<StackLayout BackgroundColor="@PICKCOLOR">
Het beeld verandert vervolgens in :

penguin_picking5

In de tweede XAML-code is het ook mogelijk om een PickedLineButton toe te voegen, die het item en de hoeveelheid initialiseert met de regelwaarden.


Gelijktijdig verzamelen van meerdere documenten van dezelfde klant/leverancier

Onder bepaalde voorwaarden is het mogelijk om meerdere documenten te selecteren om te picken. Deze voorwaarden worden gespecificeerd op deze pagina:  Manuele omzetting van meerdere documenten.
Nog steeds uitgaande van een bundel van het type "Lijst", via een PickingSwitch, moeten de volgende eigenschappen worden opgegeven:

  • BillingId = document id in de PIEDS_V/A tabel
  • BillingJournal = het journaal van het document
  • BillingPiece = het documentnummer

Het gebruik van picking

Als de map locatiebeheer bevat, kan de gebruiker de locatie invoeren. Merk op dat de waarde van de ingevoerde locatie nooit opnieuw wordt ingesteld, waardoor het mogelijk is om de locatie één keer in te voeren en vervolgens meerdere items op die locatie te coderen.

De gebruiker kan dan :

  • Scan een item dat moet worden gekozen (kan worden gedaan met de EditScanButton).
  • Voer een item in uit de lijst met items in de bundel.
  • Zoek een artikel op basis van zijn code of andere criteria. Indien nodig presenteert MercatorPenguin een lijst van artikels voor selectie.

Vervolgens kunnen ze andere informatie invoeren, zoals de hoeveelheid.

Tussen elke invoer moet de gebruiker de regel toevoegen aan de lijst op het tweede tabblad door op de knop "Toevoegen" te klikken. Hierdoor worden de itemgegevens en de focus in het "Artikel" gebied gereset, zodat het volgende item kan worden ingevoerd. Wanneer de regel is toegevoegd, wordt de kolom @Q_PICKING verhoogd en gebruikt om @PICKCOLOR te wijzigen om de status van de regel weer te geven.

Je kunt een document afwerken met de knoppen bovenaan het scherm, die de volgende functies hebben:

penguin_picking4

  • Annuleer lopende wijzigingen en sluit het documentscherm
  • Sla de lopende wijzigingen op, voltooi de vergelijking en sluit het documentenscherm.

Bij het opslaan wordt standaard het vergelijkingsscherm weergegeven om de verschillen te (in)valideren. Je kunt verschillen automatisch valideren door de eigenschap AutoCompare van de knop PickingEditButton in te stellen.


BillingEngine levensduur

In tegenstelling tot voorraden die worden beheerd vanuit MercatorPenguin, wordt een BillingEngine die wordt geopend door MercatorPenguinServer om het bijbehorende document in MercatorPenguin te bewerken, niet onmiddellijk afgesloten. MercatorPenguinServer heeft deze BillingEngine nodig, met name om de prijs te bepalen van elk artikel dat zal worden opgeroepen in de mobiele toepassing. Enkel het opslaan van "Bewaar lopende wijzigingen en sluit documentscherm" sluit de BillingEngine.
Merk op dat een BillingEngine geopend in MercatorPenguinServer betekent dat het overeenkomstige document niet kan worden gewijzigd, noch in Mercator Desktop, noch op een ander mobiel apparaat. Als webtoepassing kan MercatorPenguinServer op elk moment opnieuw worden opgestart (geforceerde handmatige herstart of herstart gepland door IIS). In dergelijke gevallen gebruikt MercatorPenguinServer zijn mogelijkheid om een gesloten BillingEngine die opnieuw moet worden geopend, opnieuw te openen.

Om te voorkomen dat BillingEngines voor onbepaalde tijd open blijven staan, heeft MercatorPenguinServer een timer waardoor een BillingEngine die langer dan 15 minuten inactief is automatisch wordt gesloten. U kunt deze waarde wijzigen door deze regel in het ini-bestand toe te voegen of te wijzigen:

AutoCloseBillingEngine = 15
 
Beperkingen

Het is belangrijk om te begrijpen dat MercatorPenguinServer stateloos is en dat back-ups uitsluitend worden gemaakt door MercatorPenguinServer. Dit betekent dat tijdens de duur van een document in MercatorPenguin, het niet noodzakelijk open gehouden wordt door MercatorPenguinServer. Het is dus mogelijk dat een andere gebruiker tegelijkertijd het document wijzigt. Deze werkwijze moet vermeden worden. Bij het opslaan van wijzigingen zijn de volgende regels van toepassing:

  • Lijnen die verwijderd zijn in MercatorPenguin worden verwijderd door MercatorPenguinServer als ze nog bestaan. Anders wordt er geen foutmelding gegenereerd.
  • Lijnen toegevoegd in MercatorPenguin worden altijd toegevoegd door MercatorPenguinServer.
 
Gegevenscirculatie

Zie deze pagina.

 
Programmering

Customizers die BillingEngine-events gebruiken, worden gebruikt door MercatorPenguinServer. Om te weten of het document wordt beheerd door MercatorPenguin, moet u deze eigenschap gebruiken: MercatorUi.Globals.IsMercatorPenguinServer.

Ter herinnering, het is onmogelijk om aangepaste code uit te voeren in het mobiele apparaat. Er is dus geen customizer die 'draait' in de MercatorPenguin applicatie als zodanig. De Android en iOS platformen laten dit niet toe. Dit punt zal daarom nooit worden gewijzigd.

 
Tips

Lees: De parametrering van documenten voor commercieel beheer met lijnen, transfers tussen depots of inventarissen verfijnen

 
Overwegingen voor gekoppelde en verenigde artikelen

Picking is niet compatibel met gekoppelde, gelinkte en verenigde artikels. Je moet de verschillende items in het document scannen om ze te valideren. Dit kan echter worden beheerd door te programmeren.