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 schrijfmodus: inventarissen

0000002945     -      14-11-2019

MercatorPenguin 2.6 maakt het mogelijk om inventarissen op te stellen en te wijzigen. De toegang tot een inventaris is altijd vanuit een "List" bundel, via een InventoryEditButton, waarvan de volgende eigenschappen moeten worden gespecificeerd :

  • InventoryId = pieds_d.id_doc of leeg voor een nieuwe inventarisatie
  • InventoryPiece = pieds_d.piece of 0 voor een nieuwe inventarisatie
  • InventoryType = het type inventaris (0 = definitief, 1 = voorbereid)
<m:InventoryEditButton Text="Wijzigen" Font="Small" 
InventoryId="@ID_DOC" InventoryPiece="@PIECE" InventoryType="@TYPE" />

Voorbeeld van een lijstbundel : Inventaris.pngb

Een inventarisatiescherm vereist twee XAML-instellingen :

  1. de eigenlijke vermelding: de informatie van de hoofding en de regel die wordt bewerkt.
  2. het formaat van elke ListView-cel die de lijnen van de huidige inventaris weergeeft.

Deze instelling is beschikbaar via dit knopelement in de sequenties Inventarissen:

Voorbeeld van XAML-configuratie Tab 1

<StackLayout Margin="10, 10, 10, 10">
<m:EditDatePicker Source="date" HorizontalOptions="FillAndExpand" />
<m:EditPicker Source="id_depot" HorizontalOptions="FillAndExpand" />
<m:EditEntry Placeholder="Reference" Source="reference" HorizontalOptions="FillAndExpand" />

<BoxView HorizontalOptions="FillAndExpand" HeightRequest="2" Margin="0,25,0,25" Color="%ThemeColor%"/>

<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="Locatie" Source="LINE|ID_MPLACE" TargetSigComplWhere="m_id_depot={ID_DEPOT}" 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" />

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

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

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

<Label Text="Laatste aankoopprijs" FontSize="12" VerticalOptions="Center" HorizontalOptions="End" Margin="0,0,5,0" Grid.Column="0" Grid.Row="4" />
<m:EditEntry Source="LINE|DPA" WidthRequest="120" Decimals="2" Grid.Column="2" Grid.Row="4" />

</Grid>

<m:EditAddLineButton Margin="25,25,25,0" HorizontalOptions="FillAndExpand" />

</StackLayout>

Voorbeeld van XAML ListViewCell configuratie

<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand">  
<Label Text="Dispo=" FontSize="12" Margin="0,0,10,0" />
<Label Text="@DISPO:### ##0.00" FontSize="12" Margin="0,0,25,0" />
<Label Text="Q=" FontSize="12" Margin="0,0,10,0" />
<Label Text="@Q:### ##0.00" FontSize="12" Margin="0,0,25,0" HorizontalOptions="FillAndExpand" />
</StackLayout>
<StackLayout Orientation="Horizontal">   
<Label Text="@ID_ART" FontSize="12" Margin="0,0,10,0" />
<Label Text="@DESIGNATIO" FontSize="12" />
</StackLayout>
<StackLayout Orientation="Horizontal">   
<Label Text="Locatie" FontSize="12" Margin="0,0,10,0" />
<Label Text="@ID_MPLACE" FontSize="12" />
</StackLayout>

Deze XAML code produceert deze schermen:

     

 

Principes voor het instellen van parameters 

In de eerste XAML code is het noodzakelijk om de Edit controls te gebruiken die het mogelijk maken om de voetvelden (boven de oranje lijn) en de regel die bewerkt wordt (onder de oranje lijn) te wijzigen. Deze rijvelden hebben een bron die bestaat uit LINE| gevolgd door de kolomnaam in de LIGNES_D tabel.

De online invoer van het artikel gebeurt altijd in een EditEntry, waarvan de bron LINE|ID_ART is, die zal worden herkend als een link naar het informatiebestand van het artikel, waardoor het mogelijk is om de benaming in een TargetSigLabel weer te geven. (Zie SQL-functie LIBTARGETSIG_STOCK, die bewerkbaar is).

De XAML-code moet een EditAddLineButton bevatten die het mogelijk maakt om de huidige regel toe te voegen aan de lijst met reeds gecodeerde regels.

In de tweede XAML-code (LixtViewCell) moeten de weer te geven variabelen worden voorafgegaan door een @ en in hoofdletters. Het is mogelijk om een weergavemasker in te stellen in het formulier @COLONNE:mask. Dit masker werkt op dezelfde manier als het string.format() masker in het.net Framework.

Gebruik van het systeem

Alvorens het eerste artikel in te voeren, moet de gebruiker de datum en het depot selecteren. Deze controles zullen worden uitgeschakeld zodra er een lijn wordt toegevoegd. Ze zijn optioneel. Als de EditPicker die de invoer van het depot toestaat niet aanwezig is, dan zal de inventarisatie worden uitgevoerd op het standaard depot dat op de sequentie is gedefinieerd. Indien de bij de datum behorende EditDatePicker ontbreekt, wordt rekening gehouden met de huidige datum (voor een nieuwe inventaris) of de datum waarop de inventaris is opgesteld.

Als het dossier locatiebeheer bevat, kan de gebruiker de locatie invoeren. Merk op dat de waarde van de ingevoerde locatie nooit wordt gereset, zodat u de locatie slechts eenmaal moet invoeren en vervolgens meerdere items op die locatie kunt inventariseren.

De gebruiker voert dan een artikelcode in. Indien nodig presenteert MercatorPenguin een lijst met artikelen die u kunt selecteren. De theorie die beschikbaar is in Mercator is op dit moment vastgelegd. (Net als in Mercator houdt het rekening met de datum van de inventarisatie). Het is deze beschikbare waarde die gecorrigeerd wordt door een hoeveelheid in te voeren in veld "Q". Het is ook mogelijk om andere waarden aan te passen, zoals de DPA in ons voorbeeld.

Tot slot moet de gebruiker de regel die wordt ingevoerd in de lijst op het tweede tabblad toevoegen met behulp van de knop "Toevoegen". Dit zal de artikelgegevens vrijmaken en in het "artikel"-veld plaatsen, zodat het volgende artikel kan worden ingevoerd.

Artikel- en locatie-items kunnen worden ingevoerd via de EditScanButton om een barcode te scannen.

Het tweede tabblad geeft u de mogelijkheid om de lijst met gecodeerde lijnen te bekijken. U kunt er ook een eerder gecodeerde lijn mee verwijderen :

  • onder iOS: door de lijn naar links te slepen en vervolgens de "Delete"-knop te gebruiken.
  • onder Android: door de lijn ingedrukt te houden en vervolgens de "Delete"-knop te gebruiken. 

Het is niet mogelijk om een regel in de lijst opnieuw te bewerken om deze te wijzigen. Indien nodig moet het daarom worden geschrapt en opnieuw worden samengesteld.

De inventarisatie wordt afgerond met deze knoppen bovenaan het scherm, die respectievelijk deze functies bieden:

 

 

 - Hangende wijzigingen annuleren en het inventarisatiescherm sluiten
 - Hangende wijzigingen opslaan en het inventarisatiescherm sluiten
 - Hangende wijzigingen opslaan en tegelijkertijd het huidige inventarisatiescherm openhouden

Beperkingen

Het is noodzakelijk om te begrijpen dat back-ups uitsluitend door MercatorPenguinServer worden uitgevoerd en dat het een stateless back-up is. Dit betekent dat deze inventaris gedurende de gehele levensduur van de inventaris in MercatorPenguin niet door MercatorPenguinServer wordt bijgehouden. Het is dus mogelijk dat een andere gebruiker deze inventaris parallel wijzigt. Deze praktijk moet worden vermeden.  Bij het opslaan van wijzigingen gelden de volgende regels:

  • regels die in MercatorPenguin worden verwijderd, worden door MercatorPenguinServer verwijderd als ze nog steeds bestaan. Anders worden er geen foutmeldingen gegenereerd.
  • de regels die in MercatorPenguin worden toegevoegd, worden altijd toegevoegd door MercatorPenguinServer

In dit stadium van ontwikkeling kan MercatorPenguin geen inventarisatie maken van partij- of serienummers.

Gegevensverspreiding

Wanneer een item in een MercatorPenguin inventaris wordt aangeroepen, wordt deze SQL query uitgevoerd: 

select stock.s_id,stock.s_modele as designatio,stock.s_dpa as dpa,stock.s_pmpa as pmpa,stock.s_prix_rev as prix_rev,dispo.dispo from STOCK ...

Het is mogelijk om extra kolommen toe te voegen aan de select-clausule van deze query via de eigenschap ReqSql2ExtraColumns van EditEntry waarvan de bron LINE|ID_ART is. Bijvoorbeeld :

<prereqsql2extracolumns="s_mycol1 als="" mycol1,s_mycol2="" mycol2".<="" pre="">

Dit maakt het mogelijk om automatisch alle Edit controls te leveren waarvan de bron LINE|MYCOL1 of LINE|MYCOL2 zou zijn.

PROGRAMMERING

Customizers die gebruik maken van InventoryEngine events worden goed gebruikt door MercatorPenguinServer. Het is mogelijk om te weten of de inventaris wordt beheerd door MercatorPenguin door gebruik te maken van deze eigenschap: MercatorUi.Globals.IsMercatorPenguinServer.

</prereqsql2extracolumns="s_mycol1>