Przejdź do głównej zawartości

Rozszerzanie funkcjonalności ekranu kasy

Na ekranie kasy można dodać przyciski, które mogą wykonywać operacje za pomocą obiektu bieżącego zamówienia, a także zmieniać swój stan.

Jak to wygląda w Syrve POS?

Na przykład przycisk «SamplePlugin: Pokaż okienko OK» dodany przez wtyczkę SamplePlugin z SDK wygląda tak:

ButtonOnPaymentScreenView

Załóżmy, że wtyczka wyświetla okno z komunikatem (zobacz artykuł API dialogs).

ButtonOnPaymentScreenView_Click

Wtyczka może dodać na ekran kasy kilka przycisków naraz.

Na przykład, dwa przyciski zostały dodane za pomocą SamplePlugin SDK: «SamplePlugin: Pokaż okienko OK» oraz «SamplePlugin: Pokaż okno wprowadzania».

ButtonsOnPaymentScreenView

Może się zdarzyć, że nie ma wystarczająco miejsca, aby dodać wszystkie przyciski. Wtedy zamiast przycisków, które się nie mieszczą, pojawi się przycisk «DODATKOWE».

AdditionalButtonOnPaymentScreen

Jeśli jest tylko jeden przycisk, przycisk «DODATKOWE» nie będzie wyświetlany w żadnym wypadku.

Różne wtyczki mogą dodawać swoje przyciski.

Naciśnięcie przycisku «DODATKOWE» wyświetla listę wszystkich przycisków, które się nie zmieściły.

ButtonsOnPaymentScreenViewPopup

Jak dodać moje rozszerzenia?

Krok 1: Rejestracja obsługi ekranu kasy:
// Rejestracja akcji na ekranie kasy
subscription = PluginContext.Operations.AddButtonToPaymentScreen("SamplePlugin: Pokaż okienko ok", false, true, ShowOkPopupOnPaymentScreen);

Funkcja AddButtonToPaymentScreen() przyjmuje 5 argumentów:

  • string caption — nazwa przycisku, wyświetlana w interfejsie użytkownika.
  • bool isChecked — czy przycisk jest podświetlony.
  • bool isEnabled — czy przycisk jest dostępny do naciśnięcia.
  • Action<(IOrder order, IOperationService os, IViewManager vm, (Guid buttonId, string caption, bool isChecked, string iconGeometry) state)> callback — funkcja wywoływana po naciśnięciu przycisku.
  • string iconGeometry — ikona przycisku (zobacz składnię).

Funkcja obsługi naciśnięcia przycisku przyjmuje obiekt zamówienia IOrder, instancję IViewManager do wyświetlania okien oraz aktualny stan przycisku - (Guid buttonId, string caption, bool isChecked, string iconGeometry) state.

Krok 2: Opis obsługi przycisku do dodania:
private void ShowOkPopupOnPaymentScreen((IOrder order, IOperationService os, IViewManager vm, (Guid buttonId, string caption, bool isChecked, string iconGeometry) state) info)
{
info.vm.ShowOkPopup("Okno testowe", "Komunikat wyświetlony za pomocą SamplePlugin.");
}

Przykłady realizacji można znaleźć w projekcie SDK SamplePlugin w klasie ButtonsTester.

Jak zaktualizować stan przycisku?

Stan wcześniej dodanego przycisku można zaktualizować w dowolnym momencie za pomocą funkcji UpdatePaymentScreenButtonState(), która przyjmuje 5 argumentów:

  • Guid buttonId — identyfikator przycisku, który można otrzymać z wartości zwracanej przez funkcję AddButtonToPaymentScreen().
  • string caption — argument opcjonalny. Jeśli zostanie ustawiony, nazwa przycisku zostanie zaktualizowana.
  • bool? isChecked — argument opcjonalny. Jeśli zostanie ustawiony, zaktualizuje stan przycisku - czy jest podświetlony, czy nie.
  • bool? isEnabled — argument opcjonalny. Jeśli zostanie ustawiony, zaktualizuje stan przycisku - czy jest dostępny do naciśnięcia, czy nie.
  • string iconGeometry — argument opcjonalny. Jeśli zostanie ustawiony, zaktualizuje ikonę przycisku.

Aby śledzić zmiany na ekranie kasy, można subskrybować zdarzenie PaymentScreenUpdated. Zdarzenie wywoływane jest przy dodawaniu, zmianie, usuwaniu typu płatności, przy zmianie sumy płatności, a także przy dodawaniu lub usuwaniu EInvoice. Zdarzenie ma 2 argumenty:

  • PaymentScreenUpdatedContext context - aktualny stan ekranu płatności zamówienia.
  • IViewManager vm - instancja IViewManager do wyświetlania okien.