Erweiterung der Schnittstellenverwaltung

Die bisher dargestellte Erweiterung der Schnittstelle gilt nur für die internen POS-Steuerelemente. Wird es notwendig, ein neues Steuerelement hinzuzufügen, das verwaltbar wird, können Sie den Erweiterungsmechanismus der Schnittstellenverwaltung nutzen. Dieser Mechanismus ermöglicht es, neue Arten von Steuerelementen zu registrieren und festzulegen, welche von ihren Eigenschaften verwaltbar sein werden. Darüber hinaus ist es auch möglich, die Verwaltung der Eigenschaften bereits vorhandener Steuerelemente hinzuzufügen und die Verwaltung der angegebenen Eigenschaften auszublenden.

Eingabebereite Eigenschaften ausblenden

Durch das Ausblenden einer Eigenschaft wird ihre Position aus der Schnittstellenverwaltung entfernt. Ein Benutzer mit Zugriff auf die Schnittstellenverwaltung kann diesen Wert dann nicht ändern. Bei einem Steuerelement, dessen Eigenschaft ausgeblendet ist, wird sein Wert auf den in den Designs definierten Standardwert gesetzt. Wenn aber der Standardwert in der ModernUI.xaml-Datei definiert wurde, wird dieser ignoriert (die Unterschiede zwischen der Definition von Standardwerten sind in Verwaltung von Ansichten und denen Elementen beschrieben).

Bestimmte Eigenschaften können auch für ein bestimmtes Steuerelement ausgeblendet werden, das durch die LayoutId eindeutig identifiziert wird. Die Methode, die die Eigenschaften ausblendet, ist DisablePropertiesForLayoutElement, die sich in der PropertiesManager-Klasse befindet. Die Parameter von dieser Methode sind:

  • layoutId (string) – Parameter, der als ID des Steuerelements gilt, für das Sie die Eigenschaft ausblenden wollen.
  • properties (params DependencyProperty[]) – eine oder mehrere Eigenschaften, die für das ausgewählte Steuerelement ausgeblendet werden sollen.

Beispiel für das Ausblenden der ImageKey-Eigenschaft aus der Kachel Neues Dokument (layout id NewSalesDocument):

PropertiesManager.Instance.DisablePropertiesForLayoutElement("NewSalesDocument", TileButton.ImageKeyProperty);

Hinweis. In diesem Beispiel wird das Icon auf der Kachel Neues Dokument ausgeblendet, weil der Standardwert für die ImageKey-Eigenschaft in der ModernUI.xaml-Datei definiert wurde.

Beispiel für das Ausblenden der Height-Eigenschaft aus der Schaltfläche Bestätigen (AcceptButton) in der globalen Konfiguration:

PropertiesManager.Instance.DisablePropertiesForLayoutElement("AcceptButton", FrameworkElement.HeightProperty);

Eingabebereite Eigenschaften hinzufügen

Wenn das bestehende Steuerelement bzw. ein völlig neues Steuerelement über die eigenen Eigenschaften verfügt, die dann in der Schnittstellenvervaltung modifizierbar sein sollen, müssen diese registriert werden. Dies kann auf zwei Arten erfolgen, je nachdem, ob die Eigenschaft nur für das Steuerelement an der bestimmten Stelle oder globall für alle Orte, wo dieses Steuerelement sichtbar sein soll.

Im ersten Fall (Registrierung für das Steuerelement nur an der ausgewählten Stelle) nutzen Sie die AddPropertiesForLayoutElement-Methode aus der PropertiesManager-Klasse. Parameter der Methode:

  • layoutId (string) – eindeutige ID des Steuerelements (LayoutId),
  • properties (params DependencyProperty[]) – Eigenschaften des Steuerelements, die verwaltbar werden sollen

Im zweiten Fall (Registrierung global an allen Stellen sichtbar, an denen das Steuerelement sichtbar ist) nutzen Sie die RegisterControlProperties-Methode aus der PropertiesManager-Klasse. Parameter der Methode:

  • controlType (Type) – Typ des Steuerelements,
  • properties (params DependencyProperty[]) – Eigenschaften, die für die ausgewählte Art des Steuerelements sichtbar werden sollen,
  • baseTypeProperties (Type) – Art des Basis-Steuerelements, aus dem die zuvor registrierten Eigenschaften entnommen werden und die Registrierung dieses Steuerelements verwendet werden

Umgang mit Attributen

Die POS-Anwendung unterstützt Einzelwertattribute, die mit dem ERP-System synchronisiert werden. Arten der unterstützten Attributen sind: Text, Zahl, Dictionary, logischer Wert, Liste, Datum. Damit eine Attributklasse mit einer POS-Stelle synchronisiert werden kann, muss diese Klasse im ERP-System (Standard) in der Sektion Retail POS zur Vorschau und/oder Bearbeitung in der Sektion Comarch POS markiert sein (markieren Sie dazu die Registerkarte „Konfiguration“, dann „Attribute“ und anschließend das entsprechende Attribut). Attribute können als Spalten in einer Liste (Datagrid-Steuerelement) oder als Steuerelemente dargestellt werden (die je nach Art der Attributklasse generiert werden, z. B. für die Text-Klasse als TextBox, für den Dictionary-Klasse als ComboBox).

Neue Attributklasse in die bestehende POS-Ansicht hinzufügen

Jeden Ansicht in der POS-Anwendung, die Attribute unterstützt, ist mit einem Objekt im ERP-System direkt verknüpft. Beispielsweise stellt die Ansicht Kundenliste Attribute auf der Liste in den Spalten dar. Es könne nur solche Attribute mit dennen Werten angezeigt werden, die dem Objekt Kunde im ERP-System zugeordnet werden. Bei Kassenbelegen werden in der Liste (DataGrid) nur die Attributklassen angezeigt, die mit dem Objekt Element verbunden sind, während die Attribute, die in der unteren rechten Ecke des Bildschirms als Steuerelemente angezeigt werden, mit dem Objekt Kassenbeleg verbunden sind.

Liste der Ansichten, die das Attribut mit den zugehörigen ERP-Objekten unterstützen

POS-Ansicht

Ansichtselement Business Objekt im ERP-System
Kassenbeleg

(DocumentView)

Positionsliste Element des Kassenbelegs (KB)
Dokument Kassenbeleg (KB)
Vorschau des Kassenbelegs

(DocumentPreviewView)

Positionsliste Element des Kassenbelegs (KB)
Dokument Kassenbeleg (KB)
Attribute des Kassenbelegs (Schnellverkauf-Modus)

(DocumentAttributesView)

Dokument Kassenbeleg (KB)
Positionsdetails des Kassenbelegs (Schnellverkauf-Modus)

(DocumentItemPropertiesView)

Dokument Element des Kassenbelegs (KB)
Verkaufsrechnung

(DocumentView)

Positionsliste Element der Verkaufsrechnung (VR)
Dokument Verkaufsrechnung (VR)
Vorschau der Verkaufsrechnung

(DocumentPreviewView)

Positionsliste Element der Verkaufsrechnung (VR)
Dokument Verkaufsrechnung (VR)
Attribute der Verkaufsrechnung (Schnellverkauf-Modus)

(DocumentAttributesView)

Dokument Verkaufsrechnung (VR)
Positionsdetails der Verkaufsrechnung (Schnellverkauf-Modus)

(DocumentItemPropertiesView)

Dokument Element der Verkaufsrechnung (VR)
Manuelle Korrektur des Kassenbelegs

Manuelle Korrektur des Kassenbelegs – Austauschmodus

(ManualExchangeView)

Positionsliste Element der manuellen Mengenkorrektur des Kassenbelegs (KBMK)
Dokument Manuelle Mengenkorrektur des Kassenbelegs (KBMK)
Vorschau der manuellen Mengenkorrektur des Kassenbelegs

(ManualCorrectionPreviewView)

Positionsliste Element der manuellen Mengenkorrektur des Kassenbelegs (KBMK)
Dokument Manuelle Mengenkorrektur des Kassenbelegs (KBMK)
Manuelle Korrektur der Rechnung

Manuelle Korrektur der Rechnung – Austauschmodus

(ManualExchangeView)

Positionsliste Element der manuellen Mengenkorrektur der Verkaufsrechnung (VRMK)
Dokument Manuelle Mengenkorrektur der Verkaufsrechnung (VRMK)
Vorschau der manuellen Mengenkorrektur der Rechnung

(ManualCorrectionPreviewView)

Positionsliste Element der manuellen Mengenkorrektur der Verkaufsrechnung (VRMK)
Dokument Manuelle Mengenkorrektur der Verkaufsrechnung (VRMK)
Korrektur des Kassenbelegs

(ExchangeView)

Positionsliste Element der Mengenkorrektur des Kassenbelegs
Dokument Mengenkorrektur des Kassenbelegs
Vorschau der Korrektur des Kassenbelegs

(CorrectionPreviewView)

Positionsliste Element der Mengenkorrektur des Kassenbelegs
Dokument Mengenkorrektur des Kassenbelegs
Korrektur der Rechnung

(ExchangeView)

Positionsliste Element der manuellen Mengenkorrektur der Verkaufsrechnung (VRMK)
Dokument Manuelle Mengenkorrektur der Verkaufsrechnung (VRMK)
Vorschau der Korrektur der Rechnung

(CorrectionPreviewView)

Positionsliste Element der manuellen Mengenkorrektur der Verkaufsrechnung (VRMK)
Dokument Manuelle Mengenkorrektur der Verkaufsrechnung (VRMK)
Anzahlungsrechnung

(AdvanceInvoiceView)

Dokument Anzahlungsrechnung
Vorschau der Anzahlungsrechnung

(AdvanceInvoicePreviewView)

Dokument Anzahlungsrechnung
Korrektur der Anzahlungsrechnung

(AdvanceInvoiceCorrectionView)

Dokument Korrektur der Anzahlungsrechnung
Vorschau der Korrektur der Anzahlungsrechnung

(AdvanceInvoiceCorrectionPreviewView)

Dokument Korrektur der Anzahlungsrechnung
TAX FREE-Dokument

(TaxFreeView)

Positionsliste TAX FREE-Element (TF)
Dokument TAX FREE (TF)
Vorschau von TAX FREE

(TaxFreePreviewView)

Positionsliste TAX FREE-Element (TF)
Dokument TAX FREE (TF)
Handelsdokumente

(DocumentsListView)

Positionsliste Kassenbeleg (KB), Verkaufsrechnung (VR), Anzahlungsrechnung, Mengenkorrektur des Kassenbelegs (KBMK), Mengenkorrektur der Verkaufsrechnung (VRMK), manuelle Mengenkorrektur der Verkaufsrechnung (VRMK), Korrektur der Anzahlungsrechnung, TAX FREE (TF)
Kunden

(CustomesListView)

Positionsliste Kunde
Kunde hinzufügen/bearbeiten

(CustomerView)

Dokument Kunde
Geschäftskunde hinzufügen/bearbeiten

(BusinessCustomerView)

Dokument Kunde
Kundendetails

(CustomerDetailsView)

Dokument Kunde
Geschäftskundendetails

(BusinessCustomerDetailsView)

Dokument Kunde
Neue Bestellung

(SalesOrderView)

Positionsliste Element des Vertriebsauftrags (VA)
Dokument VA – Vertriebsaufträge
Vorschau des Vertriebsauftrags

(SalesOrderPreviewView)

Positionsliste Element des Vertriebsauftrags (VA)
Dokument VA – Vertriebsauftrag
Kommissionieren

(SalesOrderPreparationView)

Positionsliste Element des Vertriebsauftrags (VA)
Neues Angebot

(SalesQuoteView)

Positionsliste Element des Verkaufsangebots
Dokument Verkaufsangebot
Vorschau des Verkaufsangebots

(SalesQuotePreviewView)

Positionsliste Element des Verkaufsangebots
Dokument Verkaufsangebot
Aufträge und Verkaufsangebote

(SalesOrdersListView)

Positionsliste Vertriebsauftrag, Verkaufsangebot
Reklamation

(ComplaintView)

Positionsliste Element der Verkaufsreklamation
Dokument Verkaufsreklamation
Reklamationen

(ComplaintsListView)

Positionsliste Verkaufsreklamation
Kassendokument (KE/KA)

(CashDocumentView)

Dokument Kassen/Banktransaktionen
Tresorein/-auszahlung

(VaultInflowOutflowView)

Dokument Kassen/Banktransaktionen
Kassendokumente

(CashDocumentsListView)

Positionsliste Kassen/Banktransaktionen
Dokumentenvorschau der LUB-

(WarehouseDocumentPreviewView)

Positionsliste Element der Lagerumbuchung (LUB-)
Dokument Lagerumbuchung (LUB-)
Neues Auslagerungsdokument

(NewWarehouseDocumentView)

Positionsliste Element der Lagerumbuchung (LUB-)
Dokument Lagerumbuchung (LUB-)
Auslagerungsdokument

(WarehouseDocumentView)

Positionsliste Element der Lagerumbuchung (LUB-)
Dokument Lagerumbuchung (LUB-)
Wareneingangsprotokoll-Dokument (WEP)

(ReceivingAndDeliveryReportView)

Dokument Wareneingangsprotokoll (WEP)
Lagerdokumente

(WarehouseDocumentsListView)

Positionsliste Lagerumbuchung (LUB-), Wareneingangsprotokoll (WEP), Beschaffungsauftrag (EBS), Externer Wareneineingang (EWE)
Annahme des Frachtbriefs

(DeliveryNoteView)

Dokument Annahme des Frachtbriefs
Vorschau des Frachtbriefs

(DeliveryNotePreviewView)

Dokument Annahme des Frachtbriefs
LUB- -Wareneingang

(WarehouseDocumentsToReceiptListView)

Positionsliste Lagerumbuchung (LUB-), Wareneingangsprotokoll (WEP), Beschaffungsauftrag (EBS), Externer Wareneineingang (EWE)
Exterener Wareneingang

(PurchaseOrderReceptionView)

Positionsliste Element des externen Wareneingangs (EWE)
Dokument Externer Wareneingang (EWE)
Beschaffungsauftrag

(PurchaseOrderView)

Positionsliste Element des Beschaffungsauftrags (BA)
Dokument Beschaffungsauftrag (BA)
Bestandskorrekturen

(StockCorrectionsListView)

Positionsliste Interner Wareneingang (IWE), Interner Warenausgang (IWA)
Interner Warenein-/ausgang

(NewInternalReceiptOrReleaseView)

Positionsliste

Element des internen Wareneingangs (IWE), Element des internen Warenausgangs (IWA)
Dokument Interner Wareneingang (IWE), Interner Warenausgang (IWA)
Vorschau des internen Warenein-/ausgangs

(InternalReceiptOrReleasePreviewView)

Positionsliste Element des internen Wareneingangs (IWE), Element des internen Warenausgangs (IWA)
Dokument Interner Wareneingang (IWE), Interner Warenausgang (IWA)
Interne Bestellung

(InternalOrdersListView)

Positionsliste Interne Bestellung
Neues Paket

(GeneratedWarehouseDocumentView)

Positionsliste Element der Lagerumbuchung (LUB-)
Dokument Lagerumbuchung (LUB-)
Manuelle Umbuchung

(ManualMovementsListView)

Positionsliste Lagerumbuchung (LUB-)
Manuelle Umbuchung

(NewManualMovementWarehouseDocumentView)

Positionsliste Element der Lagerumbuchung (LUB-)
Dokument Lagerumbuchung (LUB-)
Interne Umbuchung

(InternalMovementsListView)

Positionsliste Element der Lagerumbuchung (LUB-)
Interne Umbuchung

(NewInternalWarehouseDocumentView)

Positionsliste Lagerumbuchung (LUB-)
Inventur

(InventoryCountView)

Dokument Inventur
Inventurzählliste

(InventoryCountListView)

Dokument Inventurzählliste
Erstellte interne Bestellung

(CreatedInternalOrdersListView)

Positionsliste Interne Bestellung
Neue interne Bestellung

(NewInternalOrderView)

Dokument Interne Bestellung
Vorschau der internen Bestellung

(CreatedInternalOrderPreviewView)

Dokument Interne Bestellung
Artikelliste

(ProductsListView)

Positionsliste

Artikel

Um die angegebene Attributklasse zum POS hinzuzufügen, muss sie als Retail POS gekennzeichnet sein (Vorschau und/oder Bearbeitung). Mit der Option Vorschau kann das Attribut in der POS-Anwendung nur gelesen werden. Wenn Sie hingegen die Option Bearbeiten wählen, können Sie den Wert des Attributs ändern und nach dem Speichern der Änderungen diese Informationen an das ERP-System übertragen. Anschließend verknüpfen Sie die Attributklasse an den entsprechenden Objekttyp, der auf der POS-Seite unterstützt wird (siehe Tabelle oben). Sobald die Einstellungen hinzugefügt und synchronisiert wurden, erscheinen die neuen Attribute in der entsprechenden Ansicht in der POS-Anwendung und können über die Schnittstellenkonfiguration vom POS-Benutzer verwaltet werden.

Fügen Sie zum Beispiel eine neue Attributklasse mit dem Namen X vom Typ Text hinzu, die in der Sektion Retail POS zur Bearbeitung markiert ist. Anschließend verknüpfen Sie diese mit dem Kundenobjekt im ERP-System. Nach der Datensynchronisierung starten Sie die POS-Anwendung und öffnen Sie die Ansicht Kunden hinzufügen in der Konfiguration. Wählen Sie dort den entsprechenden Container (CustomerItemsContainer) aus, der die Darstellung von Attributen erlaubt, und ziehen Sie dann aus der Liste rechts das neue Attribut X in die Ansicht und legen es an der entsprechenden Stelle ab.

Neue Attributklasse zur neuen Ansicht, die nicht unterstützt wird, hinzufügen

Sie können auch Unterstützung für Attribute in eigenen Ansichten aneignen, die innerhalb einer Erweiterung erfasst wurden. Attribute können dynamisch als Spalten in einer Liste (Datagrid-Steuerelement) oder als Steuerelemente dargestellt werden (die je nach Art der Attributklasse generiert werden).

Attribute als Spalten auf der DataGrid-Liste

Um Attribute in auf Listen in Form von dynamisch erzeugten Spalten zu implementieren, muss zunächst die Schnittstelle IAttributable für Datenentitäten implementiert werden. Sie verfügt über drei Eigenschaften, die dür die korrekte Handhabung von Attributen auf Listen erforderlich sind. Die zwei ersten – Id und ObjectType – müssen gemäß der Entität eingestellt werden. Id gilt als ID der Entität und ObjectTyp als Typ der Entität. Die dritte Eigenschaft – Attributes – gilt als Dictionary, der beim asynchronen Datenabruf für die Liste ergänz werden muss. Für die Ergänzug von diesem Dictionary verwenden Sie die FillAttributesForList-Methode, die sie im IAttributesService befindet. Bevor Daten aus dem Dictoinary angezeigt werden können, muss die Liste zunächst zusätzliche Spalten erzeugen. Damit dies möglich wird, muss die Eigenschaft AttributeClasses in der Klasse AsyncDataGridCollection beim ersten Datenabruf gesetzt werden (IsInitialization=true). Für die Einstellung dieser Eigenschaft verwenden Sie die GetAttributesClasses-Methode aus dem IAttributesService. Die Methode benötigt zwei Parameter. Mit dem ersten können Sie festlegen, welche Attributklassen in einer bestimmten Liste angezeigt werden sollen, während der zweite filtert, welche Klassen für bestimmte Gruppen sichtbar sein sollen. Ist der zweite Parameter Null, werden alle Klassen aus den im ersten Parameter ausgewählten Gruppen abgerufen. Die Implementierung sollte so realisiert werden, dass das Filtern von Attributklassen im Design Mode der Ansicht verwaltbar ist. Daher muss in DesignViewModel der betreffenden Ansicht eine Methode aufgerufen werden, wobei der zweite Parameter auf null gesetzt wird. Dadurch werden alle Klassen abgerufen und alle möglichen Spalten erzeugt (standardmäßig ausgeblendet). Im ViewModel der Ansicht sollte die Eigenschaft VisibileAttributesClassesList an den zweiten Parameter übergeben werden, die die Liste der vom Benutzer im Design Mode festgelegten Attributklassen enthält. Die FillAttributesForList-Methode ergänzt den Attributes-Dictionary. In der Methode müssen zwei Parameter übertragen werden. Die erste ist eine Liste von Entitäten (die Entität muss IAttributable implementieren), die zweite ist eine Liste von Attributklassen-IDs, für die jede Entität mit den Werten dieser Attributklassen ergänzt werden muss. Um nicht zu viele Informationen abzurufen, also zu Optimalisierungszwecken, legen Sie den zweiten Parameter fest, indem wir die Eigenschaft VisibleAttributesClassesList übergeben.

Die Sortierung für Spalten, die für Attribute erstellt wurden, ist deaktiviert.

Standardmäßig sind die generierten Spalten für Attribute ausgeblendet. Um sie anzeigen zu können, muss für den Design Mode die Abfrage aller möglichen Attribute für eine bestimmte Liste implementiert werden, damit der Benutzer eine Spalte auswählen und die Sichtbarkeit, sowie andere Eigenschaften festlegen kann.

Attribute werden als Text dargestellt, wenn die Liste im Nur-Lesen-Modus ist. Wenn die Liste aber bearbeitet werden kann, werden die Attribute als ensprechende Steuerelemente je nach dem Datentyp erzeugt. Für den logsichen Typ – ChechBox, Liste und Dictionary – ComboBox und für sonstige Typen – TextBox.

Das vollständige Beispiel für Implementierung Ansicht der Handelsdokumente mit unterstützten Attributen

Attribute als unabhängige Steuerelemente

Alternativ können die Attribute in den erstellten Ansichten so dargestellt werden, dass sie als dynamisch erzeugte Steuerelemente je nach dem Typ der Attributklasse implementiert werden. Mit den Steuerelementen können Sie auch Änderungen in den Attributwerten vornehmen. Die Implementierung kann in drei Schritte aufgeteilt werden. Der erste ist die Implementierung der Attributenabruf und Darstellung der Attributen als Steuerelemente, die im definierten Container definiert werden. Der zweite ist die Implementierung der Validierung von Werten in Attributen. Der letzte Schritt ist das Speichern der vorgenommenen Änderungen in den Attributwerten. Beispiel für Implementierung Ansicht der Handelsdokumente mit unterstützten Attributen

Czy ten artykuł był pomocny?