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

0000002985     -      29-07-2022

Als u automatisch de regel wilt toevoegen die wordt ingevoerd bij het valideren van een EditEntry, moet u de eigenschap AutoAddLine instellen op true. Dit maakt bijvoorbeeld de implementatie van dit scenario mogelijk: de hoeveelheid wordt eerst ingevoerd. Vervolgens wordt het artikel gescand en deze scan voegt direct het huidige item toe aan de documentregels. In dit geval moet de EditEntry die aan de hoeveelheid is gekoppeld natuurlijk idealiter boven de hoeveelheid worden geplaatst die de selectie van het artikel mogelijk maakt en waarnaar wordt verwezen in de eigenschap AutoFocusEntry van de EditAddLineButton.

<m:EditEntry Placeholder="Artikel" Source="LINE|ID_ARTICLE" HorizontalOptions="FillAndExpand" AutoAddLine="True" />

 

Na het toevoegen van een regel wordt de focus standaard in de EditEntry geplaatst, zodat de keuze van het artikel mogelijk is. Als u dit wilt overschrijven, voegt u gewoon de eigenschap AutoFocusEntry toe aan de knop EditAddLineButton en geeft u de bron van de gewenste EditEntry aan :

<m:EditAddLineButton AutoFocusEntry="LINE|..." />

 

Om een standaard hoeveelheidswaarde in te stellen, hoeft u dit alleen maar te bepalen in de eigenschap DefaultLineValue.

<m:EditEntry Source="LINE|Q" DefaultLineValue="1" ... />

 

Als de standaardhoeveelheid is ingesteld, is het mogelijk dat u dit "aantal" -gebied niet hoeft te doorlopen en de scan direct kunt valideren. Volg hiervoor de standaardhoeveelheid met een uitroepteken.

<m:EditEntry Source="LINE|Q" DefaultLineValue="1!" ... />

 

Als u een waarschuwing wilt in de vorm van een bericht "Artikel niet gevonden!" wanneer de zoekopdracht het niet mogelijk maakt om een artikel te selecteren, moet de XAML-code als volgt worden gewijzigd :

<m:EditEntry Placeholder="Artikel" Source="LINE|ID_ART" TargetSigNotFound="ToastShortCenter" ... />

Mogelijke waarden voor de eigenschap TargetSigNotFound zijn : 

  • Stop : weergave van een te bevestigen dialoogvenster
  • ToastShortBottom : weergave van een bericht onderaan het scherm, verdwijnt automatisch na 2 seconden
  • ToastShortCenter : weergave van een bericht in het midden van het scherm, verdwijnt automatisch na 2 seconden
  • ToastLongBottom : weergave van een bericht onderaan het scherm, verdwijnt automatisch na 3,5 seconden
  • ToastLongCenter : weergave van een bericht in het midden van het scherm, verdwijnt automatisch na 3,5 seconden.

Let op: dit is beschikbaar in alle "schrijf-modus" schermen en in alle EditEntries die gelinkt zijn aan een bestand.

 

Vanaf MercatorPenguin 2.9 :

Als u wilt dat, na het selecteren van het artikel, de handmatig ingevoerde waarde nooit zal worden vervangen, noch door een standaardwaarde, noch door een waarde bepaald door het programma, moet u de property PreserveValue  instellen op True.

<m:EditEntry Source="LINE|Q" PreserveValue="True"  ...

 

Het is mogelijk om de property NoKeyboard toe te voegen aan elke EditEntry. Hiermee kunt u specifiëren dat het toetsenbord niet moet worden weergegeven wanneer de EditEntry focus krijgt. Deze mogelijkheid is handig als een zone altijd wordt gescand met een ingebouwde barcodelezer.

<m:EditEntry Placeholder="Artikel" Source="LINE|ID_ART" NoKeyboard="True" ...

Als u het toetsenbord af en toe wilt weergeven, hoeft u alleen maar de zone ingedrukt te houden (lang klikken).

Met deze property wordt in iOS geen rekening gehouden. Onder Android is dit enkel beschikbaar indien de hardware scanner in het informatievenster ingesteld is op 'Geen ingebouwde scanner'.

De EditEntry heeft de property QuantityChar waarmee u een teken kunt specifiëren. Deze property wordt alleen in aanmerking genomen op EditEntries waarvan de bron LINE|ID_ART of LINE|ID_ARTICLE is. Hiermee kunt u een scheidingsteken specifiëren waarmee u de invoer in de zone in het formulier kunt decoderen :

  • hoeveelheid
  • scheidingsteken
  • zoeksleutel.

Als QuantityChar bijvoorbeeld "*" is, is het mogelijk om het gebruikelijke gedrag van de Mercator-desktop te reproduceren, waardoor u "aantal * artikelcode" (zonder spatie) kunt invoeren.

<m:EditEntry Placeholder="Artikel" Source="LINE|ID_ART" QuantityChar="*"  ...

Om hiermee rekening te houden, is het verplicht om een andere EditEntry op dit scherm te hebben waarvan de bron LINE|Q is. Optioneel kan deze EditEntry worden verborgen door de property IsVisible in te stellen op False.

 

Met MercatorPenguin kunt u een waarde in de laatste rij wijzigen die al is gevalideerd maar nog niet is opgeslagen. Om dit te doen, moet u een EditChangeLastLineButton gebruiken die wordt geassocieerd met een EditEntry. Deze knop vraagt om het invullen van twee properties:

  • EditEntrySource : de bron van de EditEntry die de nieuwe waarde zal geven om toe te passen
  • ColumnToChange : de naam van de kolom in de lijnen die moet worden gewijzigd.

Deze XAML-code wordt gebruikt om deze knop te associëren met de EditEntry waardoor het aantal kan worden ingevoerd. Zo wordt het mogelijk om de hoeveelheid van de laatst gevalideerde lijn te wijzigen.

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

Deze XAML-code produceert deze interface :

PenguinEditTransformButton_nl

 

Het is mogelijk om aan te geven welke EditEntry de focus moet krijgen wanneer de huidige EditEntry wordt gevalideerd. Dit wordt gedaan door de property SourceNextFocus van de EditEntry die wordt bewerkt, toe te voegen en de bron van de volgende EditEntry daar op te geven.

<m:EditEntry Source="LINE|PU" SourceNextFocus="LINE|NUM_SERIE"  ...

Deze functionaliteit is ook beschikbaar in de informatiebestanden en in de acties.

 

Vanaf MercatorPenguin 2.9.4 :

Het is mogelijk om bepaalde waarden in de reeds gecodeerde regels te wijzigen. Om dit te doen, moet u een of meer UpdateLineButtons toevoegen aan de ListViewCell XAML-code. Met elke knop kunt u de waarde van de huidige lijn wijzigen voor een kolom die is gedefinieerd in de eigenschap ColumnToUpdate. Met de optionele eigenschap LibColumnToUpdate kunt u de naam van deze kolom specificeren die in het dialoogvenster zal verschijnen om de waarde te wijzigen. Als de knop niet verschijnt, is dat omdat in deze context de gegevens die het zou wijzigen, niet kunnen worden gewijzigd (kolom gereserveerd door het systeem, kolom niet wijzigbaar als er geen item op de lijn aanwezig is, .. .) Alleen "tekenreeksen", numerieke, DateTime en Booleaanse gegevens kunnen worden gewijzigd.

Deze XAML-code produceert deze modificatieknoppen :

<Grid ColumnSpacing="10">
<Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
<m:UpdateLineButton Text="Wijzig omschrijving" ColumnToUpdate="DESIGNATIO" LibColumnToUpdate="Omschrijving" Grid.Column="0" />
<m:UpdateLineButton Text="Wijzig aantal" ColumnToUpdate="Q" LibColumnToUpdate="Aantal" Decimals="2" Grid.Column="1" />
</Grid>

 

  UpdateLineButtons_nl

Als de aldus gewijzigde zones overeenkomen met kolommen die nooit in MercatorPenguin zijn bewerkt, is het noodzakelijk om in de "XAML Tab 1" -instelling van de sequentie de overeenkomstige EditEntries toe te voegen, die echter onzichtbaar kunnen worden gemaakt :

<m:EditEntry Source="LINE|MYCOLUMN" IsVisible="False" />

 

Voor booleaanse kolommen (min. Versie 2.9.5) is het mogelijk om te kiezen tussen een "Ja / Nee" of "OK / Annuleren" dialoogvenster, door een van deze waarden in te stellen voor de eigenschap BooleanType van de knop :

  • YesNo : Ja / Nee (standaardwaarde)
  • OkCancel : OK / Annuleren.

Voor DateTime-kolommen (min. Versie 2.9.5) is het mogelijk om te kiezen tussen een dialoogvenster "alleen datum" of "datum en tijd" door een van deze waarden in te stellen voor de eigenschap DateTimeType van de knop :

  • DateOnly : alleen datum (standaard)
  • DateTime : datum en tijd.

 

Met MercatorPenguin versie 2.9.5 kunt u ook kiezen uit een lijst met mogelijke waarden. Voor een kolom van het type "tekenreeks" kunnen deze mogelijke waarden worden doorgegeven in de vorm van een tabel met strings of een tabel van m: ItemStrings in de eigenschap ItemsSource van de knop.

<m:UpdateLineButton ... >
<m:UpdateLineButton.ItemsSource>
        <x:Array Type="{x:Type x:String}">
            <x:String>Item 1</x:String>
            <x:String>Item 2</x:String>
            <x:String>Item 3</x:String>
        </x:Array>
    </m:UpdateLineButton.ItemsSource>
</m:UpdateLineButton>
<m:UpdateLineButton ... >
<m:UpdateLineButton.ItemsSource>
    <x:Array Type="{x:Type m:ItemString}">
            <m:ItemString Id="Id1" Lib="Item 1" />
            <m:ItemString Id="Id2" Lib="Item 2" />
            <m:ItemString Id="Id3" Lib="Item 3" />
        </x:Array>
    </m:UpdateLineButton.ItemsSource>
</m:UpdateLineButton>

Voor een kolom van het type Byte, Int16 of Int32 (respectievelijk in SQL: tinyInt, smallint of int), is het mogelijk om de opties in te stellen in een tabel van.

<m:UpdateLineButton ... >
<m:UpdateLineButton.ItemsSource>
            <x:Array Type="{x:Type m:ItemInt}">
                <m:ItemInt Id="1" Lib="Item 1" />
                <m:ItemInt Id="2" Lib="Item 2" />
                <m:ItemInt Id="3" Lib="Item 3" />
            </x:Array>
    </m:UpdateLineButton.ItemsSource>
</m:UpdateLineButton>

Meestal komen deze waarden overeen met de waarden die zijn opgegeven in een EditPicker op het eerste tabblad. In dit geval is het niet nodig om ze te herhalen in de ItemsSource van de knop. Vervolgens hoeft u alleen nog maar naar de EditPicker te verwijzen op basis van de bron in de eigenschap ItemsSourceFromPicker. Deze EditPicker moet een eigenschap ItemsSource hebben zoals hierboven gedefinieerd.

<m:UpdateLineButton Text="Wijzig MyInt" ColumnToUpdate="MYINT" ItemsSourceFromPicker="LINE|MYINT" ... />

Versie 2.10.10 stelt u ook in staat om de invoer van een memo te vragen (multi-lijnen) :

<m:UpdateLineButton Text="Wijzig Memo" ColumnToUpdate="MEMO" IsMemo="True" />

 

MercatorPenguin versie 2.9.6 slaat automatisch het document op dat wordt bewerkt bij het toevoegen van een lijn. Om dit te doen, moet u de eigenschap AutoSave toevoegen aan de EditAddLineButton. Het kan deze waarden ontvangen :

  • SaveNoClose : het opslaan wordt uitgevoerd en het document blijft open
  • SaveAndClose : het opslaan wordt uitgevoerd en het document wordt gesloten.
<m:EditAddLineButton ... AutoSave="SaveNoClose" />

 

MercatorPenguin versie 2.9.6 laat ook toe om geen ResetItem uit te voeren bij stortingen bij het selecteren van een locatie. Om dit te doen, moet u de eigenschap NoResetItem toevoegen aan de EditEntry van de locatie.

<m:EditEntry Placeholder="Empl. (de)" Source="LINE|ID_MPLACE1" ... NoResetItem="True" />

 

In de inventarissen biedt versie 2.9.9 van MercatorPenguin de eigenschap GroupWarningInInventory op de EditAddLineButton die automatisch de vraag "Artikelen die meer dan eens zijn geïnventariseerd! Groeperen en toevoegen?" beantwoordt. Deze eigenschap accepteert de waarden AlwaysYes en AlwaysNo.

 

Voor alle EditAddLineButtons van MercatorPenguin 2.9.9 of hoger is het mogelijk om een gedrag in te stellen als tijdens het opslaan een fout wordt aangetroffen (fout die kan worden veroorzaakt door code in de BeforeSave customizer), via de eigenschap ActionIfErrorDuringSave :

  • DeleteAllLines : verwijder alle lijnen
  • DeleteLastLine : verwijder laatste lijn.

 

Om het opslaan te forceren, zelfs als er niets door de gebruiker is gewijzigd, voegt u gewoon een EditForceSave toe aan de XAML-code.

<m:EditForceSave />

 

Vanaf MercatorPenguin 2.10.3 :

In een numerieke EditEntry bestaat een detectie van valse lezing van barcodes (waarde groter dan 99999999) en kan een waarschuwing worden weergegeven: "Deze numerieke waarde is waarschijnlijk een barcode!". Met de eigenschap ProbableBarcodeWarning kunt u instellen hoe deze waarschuwing moet worden weergegeven:

  • ToastLong
  • ToastShort
  • Stop = dialoog venster
  • None
<m:EditEntry Source="LINE|Q" ProbableBarcodeWarning="Stop" ...

 

Vanaf MercatorPenguin 2.10.6 :

Als u wilt dat sommige zones opnieuw worden ingesteld na een opslag die een fout heeft veroorzaakt, moeten deze worden vermeld in de eigenschap ResetValuesAfterSaveError van de knop naar bewerking. Bijvoorbeeld:

<m:TransferEditButton Text="@CAPTION" Font="Small" TransferId="@ID_DOC" TransferPiece="@PIECE" TransferType="@TYPE">
<m:TransferEditButton.ResetValuesAfterSaveError>
    <x:Array Type="{x:Type x:String}">
<x:String>LINE|ID_MPLACE1</x:String>
<x:String>LINE|ID_MPLACE2</x:String>
    </x:Array>
</m:TransferEditButton.ResetValuesAfterSaveError>
</m:TransferEditButton>