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