Przejdź do głównej zawartości

Zmiany w IVersionedEntity

W API V9Preview3 zmieniono zachowanie rewizji dla IVersionedEntity.

Wcześniej wartość IVersionedEntity.Revision była współdzielona pomiędzy wszystkimi terminalami w tej samej grupie. Rewizja była przypisywana na głównej kasie, a następnie rozprowadzana do terminali podrzędnych. Z tego powodu, dla prawidłowej synchronizacji dostępu do danych, zalecano instalowanie wtyczek korzystających z funkcji edycji danych na głównej kasie. Po zainstalowaniu na innych terminalach, wtyczka mogła sporadycznie napotkać błędy podczas stosowania zmian.

Teraz każdy terminal Syrve POS utrzymuje własną rewizję obiektu. Oznacza to, że wyeliminowano nieuzasadnione błędy stosowania zmian spowodowane „specyfiką architektury” Syrve POS. Rewizja nie może już być używana jako kryterium porównywania obiektów między różnymi terminalami.

Za każdym razem, gdy obiekt jest modyfikowany, przypisywana jest nowa rewizja. Rewizja rośnie ściśle i monotonicznie. Jednak ten monotoniczny wzrost jest gwarantowany tylko w obrębie tej samej bazy danych terminala Syrve POS. Obiekty mogą otrzymać nowe wartości rewizji, jeśli baza danych Syrve POS zostanie odtworzona – na przykład przy zmianie głównego terminala. Aby to obsłużyć, wprowadzono nową metodę GetHostDatabaseId, która zwraca identyfikator bazy danych Syrve POS. Po odtworzeniu bazy danych Syrve POS przypisywany jest nowy identyfikator. Ponieważ identyfikator bazy danych nie może się zmienić podczas działania Syrve POS, wystarczy sprawdzić go raz przy uruchomieniu. Jeśli przy kolejnym uruchomieniu identyfikator bazy danych różni się od poprzedniego, należy przeładować dane zaczynając od rewizji zero, korzystając z GetChangedOrders, GetChangedDeliveryOrders, GetChangedKitchenOrders, GetChangedReserves.

Do SamplePlugin dodano przykład śledzenia resetów rewizji.

Wersja LTS V8 wydana

API V8 zostało wydane wraz z Syrve POS 8.7. Jest to wersja LTS, wtyczki opracowane dla V8 będą wspierane przez wszystkie wersje Syrve POS, które zostaną wydane w ciągu następnych 4 lat. Biblioteka Resto.Front.Api.V8 jest dostępna jako pakiet NuGet, przykłady użycia tutaj.

Wraz z wydaniem V8, poprzednia wersja LTS V7 została uznana za przestarzałą, w tym statusie będzie wspierana przez kolejne 2 lata, w trakcie których wtyczki napisane dla V7 muszą zostać przeniesione do V8. Wsparcie dla V6 zostało zakończone. Rozpoczęto rozwój V9, a za 3 miesiące zostanie wydana pierwsza wersja podglądowa. Dowiedz się więcej o kontroli wersji tutaj.

Wsparcie wielu walut w IPaymentItem

Interfejs IPaymentItem posiada teraz właściwość CurrencyInfo, która pozwala na przechowywanie danych dotyczących dodatkowej waluty płatności.
Aby wspierać użycie dodatkowych walut w płatnościach, dodano możliwość ustawienia kwoty w dodatkowej walucie w metodach AddPaymentItem, AddExternalPaymentItem, AddExternalFiscalizedPaymentItem, a także określenie tej waluty za pomocą interfejsu IAdditionalCurrency.
Dodatkowo, dodano metodę umożliwiającą pobranie listy walut wraz z ich aktualnymi kursami GetCurrencyRates, jak również listę walut z kursami dla konkretnego zamówienia GetCurrencyRatesForOrder.

Resetowanie numeracji zamówień

W API V9Preview1 dodano możliwość resetowania numerów zamówień w ramach grupy za pomocą API.

W tym celu do API dodano nową metodę, ResetOrderCounter. Aby z niej skorzystać, zmiany kasy na wszystkich terminalach w grupie muszą być zamknięte. Metoda ta resetuje numerację zamówień dla nowych zamówień do 1.

Metoda ta jest analogiczna do ustawienia Rozpocznij numerację zamówień od 1 w każdej zmianie kasy w Syrve Office w sekcji Inne ustawienia. Jednak pozwala na resetowanie numeracji zamówień tylko wtedy, gdy jest to potrzebne, bez zmiany ustawień w Syrve Office.

Pełne imię i nazwisko użytkownika

W API V8 dodano możliwość uzyskania pełnego imienia i nazwiska użytkownika określonego w Syrve Office.

W tym celu do API dodano strukturę UserFullName, która zawiera 3 pola:

  • string FirstName - imię pracownika;
  • string MiddleName - drugie imię (imię ojca) pracownika;
  • string LastName - nazwisko pracownika.

Ponadto do API dodano nową metodę GetUserFullName - aby uzyskać pełne imię i nazwisko za jej pomocą, należy przekazać obiekt użytkownika IUser.

Pobieranie szczegółowych informacji o rabatach

W API V9Preview1 rabat ma teraz flagę, która identyfikuje, czy rabat jest rabatem lojalnościowym
IDiscountType.IsCardLoyalty.
Można teraz również uzyskać szczegółowe informacje o rabatach lojalnościowych za pomocą IOperationService.GetCardLoyaltyDiscounts. Informacje można pobierać tylko dla otwartych zamówień. Po dokonaniu płatności metoda zawsze zwróci pustą kolekcję.

Dodatkowo metoda IEditSession.AddIikoCardDiscounts została przemianowana na IEditSession.AddCardLoyaltyDiscounts.

Wsparcie dla API V6 dobiega końca

Wydanie API V6 miało miejsce jesienią 2019 roku.
Później, w styczniu 2022 roku, została wydana wersja V7, od tego czasu V6 jest uznawane za przestarzałe.
Postępu nie da się zatrzymać, a od zimy 2024 będą wydawane wersje Syrve POS z obsługą V8,
co oznacza, że V7 stanie się przestarzałe, a V6 przestanie być wspierane
(więcej szczegółów kontrola wersji).

Jeśli nadal korzystasz z wtyczek na V6, teraz jest czas, aby przenieść je na V7.
Ta wersja jest wspierana przez wszystkie wersje Syrve POS wydane od stycznia 2020 (7.9+),
i będzie wspierana do jesieni 2025 roku.

Nawigacja do zamówienia inicjowana przez wtyczkę (kontynuacja)

W API V8 wykonano drugi krok w kierunku możliwości wyświetlania okien dialogowych i nawigacji do zamówienia z inicjatywy wtyczki z różnych ekranów.

W jednej z poprzednich wiadomości
mówiliśmy o sposobach nawigacji do zamówienia za pomocą przycisków wtyczki lub z ekranu edycji zamówienia.
Teraz ta nawigacja jest obsługiwana z innych ekranów:

Aby zrozumieć, że znajdujemy się na ekranie obsługującym pracę z UI, musimy zasubskrybować zdarzenie
ScreenChanged.

Jeśli ekran, który pojawił się w zdarzeniu, jest jednym z wymienionych powyżej, można wywołać nową metodę
TryExecuteUiOperation,
do której należy przekazać odwołanie do callbacka, który Syrve POS wywoła, gdy tylko pojawi się taka możliwość.
Jeśli nie ma żadnej akcji, stanie się to natychmiast, a jeśli w tym momencie wykonywane są inne operacje, callback zostanie wywołany zaraz po ich zakończeniu.
W każdym przypadku metoda TryExecuteUiOperation zwróci kontrolę po wywołaniu callbacka.
Jeśli callback zgłosi wyjątek, zostanie on wyrzucony z TryExecuteUiOperation.
Jeśli w momencie wywołania TryExecuteUiOperation inna operacja była w toku, która ostatecznie doprowadziła do wyjścia z bieżącego ekranu,
callback nie może zostać wywołany ani natychmiast, ani opóźniony, a metoda TryExecuteUiOperation zgłosi wyjątek OperationCanceledException.

Podczas działania callbacka wyświetlany jest pasek postępu. Callback otrzyma
IViewManager
z możliwością wyświetlania okien dialogowych oraz
zmiany tekstu na pasku postępu,
a także z możliwością
przejścia do zamówienia.

Nawigacja jest możliwa tylko w otwartym zamówieniu.
Podczas wywołania metody sprawdzane są odpowiednie uprawnienia aktualnie zalogowanego pracownika na froncie.
Te same, które są sprawdzane podczas nawigacji przez naciśnięcie przycisków na samym froncie.
Nawigacja do zamówienia dostawy nie jest jeszcze możliwa.