Przejdź do głównej zawartości

Wsparcie dla API V5 dobiega końca

Wydanie API V5 miało miejsce jesienią 2017 roku. Dwa lata później, jesienią 2019 roku, została wydana wersja V6, od tego czasu V5 jest uważane za przestarzałe. Postępu nie da się zatrzymać, a od jesieni 2021 roku będą wydawane wersje Syrve Office z obsługą V7, co oznacza, że V6 stanie się przestarzałe, a V5 przestanie być wspierane (Zobacz więcej kontrola wersji).

Jeśli nadal masz wtyczki na V5, teraz jest czas, aby je przenieść na V6, ta wersja jest wspierana przez wszystkie wersje Syrve Office wydane od września 2019 (7.0+) i będzie wspierana do jesieni 2023.

Okno do pracy z grupą elementów i ich ilością

W wersji API V7Preview6 dodano nowe okno, które ułatwia pracę z ilością grupy elementów
IViewManager.ShowQuantityChangerPopup.

quantity-changer-popup-1

Metoda przyjmuje

  • string title — tytuł okna,
  • string text — tekst z opisem,
  • int minimalQuantity — minimalna łączna możliwa liczba dla grupy,
  • int maximalQuantity — maksymalna łączna możliwa liczba dla grupy,
  • IReadOnlyCollection<(string name, int quantity, int minimalQuantity, int maximalQuantity)> items — sama lista elementów.

Każdy element to

  • string name — jego nazwa,
  • int quantity — aktualna ilość elementu,
  • int minimalQuantity — minimalna możliwa liczba elementu,
  • int maximalQuantity — maksymalna możliwa liczba elementu.

W rezultacie metoda zwraca listę IReadOnlyCollection<int>, która zawiera liczbę każdego elementu w kolejności odpowiadającej kolejności w otrzymanym argumencie items.

Przyciski + i - pozwalają zwiększyć lub zmniejszyć liczbę elementów o jeden.
Centralny obszar elementu z jego nazwą jest również klikalny i pozwala otworzyć cyfrowe okno popup do zaawansowanej edycji ilości wybranego elementu.
Po prawej stronie nazwy znajduje się aktualna ilość elementu.

quantity-changer-popup-3

W przypadku, gdy minimalna możliwa ilość każdego elementu wynosi zero,
maksymalna możliwa ilość każdego elementu jest równa maksymalnej możliwej ilości dla grupy,
aktualna ilość jednego z elementów jest równa maksymalnej możliwej ilości dla grupy,
a aktualna liczba pozostałych elementów wynosi zero,
kliknięcie na centralny obszar pozostałych elementów nie otwiera cyfrowego popupu,
a całkowicie przenosi ilość wcześniej wybranego elementu do aktualnego elementu.

quantity-changer-popup-2

Przykład
private static void ShowListWithQuantitiesPopup(IViewManager viewManager)
{
const string title = "Prezent od Świętego Mikołaja";
const string hintText = "Wybierz słodycze";
var list = new List<(string name, int quantity, int minimalQuantity, int maximalQuantity)>
{
("Czekolada", 0, 0, 3),
("Mandarynki", 0, 0, 3),
("Cukierki", 0, 0, 3),
("Wafle", 0, 0, 3),
("Herbatniki", 0, 0, 3),
("Pianki", 0, 0, 3),
("Bezy", 0, 0, 3),
};

var inputResult = viewManager.ShowQuantityChangerPopup(title, hintText, 3, 3, list);
ShowNotification(inputResult == null
? "Nic"
: $"Wybrane : {string.Join(", ", inputResult.Zip(list, (quantity, item) => (name: item.name, quantity: quantity)).Where(i => i.quantity != 0).Select(i => $"{i.quantity} × {i.name}"))}",
TimeSpan.FromSeconds(10));
}

BeforeOrderBill i powtarzany rachunek

W wersji API V7Preview7 powiadomienie o operacji wstępnej kontroli zamówienia
BeforeOrderBill
będzie generowane podczas ponownej kontroli.

Jeśli chcesz zachować stare zachowanie i ignorować powtarzane rachunki,
to jeśli wtyczka jest przetłumaczona na określoną lub nowszą wersję API, będziesz musiał filtrować zamówienia według statusu w obsłudze powiadomień:

PluginContext.Notifications.BeforeOrderBill.Subscribe(x =>
{
if (x.order.Status != OrderStatus.New)
return;

// Przetwarzanie oryginalnego rachunku
});

Dodano pola Komentarz i zmieniono sygnaturę metody AddOrderExternalData

W API V7Preview7 dodano pole do zamówienia Comment, metoda służy do zmiany wartości IEditSession.ChangeOrderComment.

Zmieniono sygnaturę metody AddOrderExternalData — dodano flagę isPublic.

Dane zapisane za pomocą metody AddOrderExternalData z ustawioną flagą isPublic na true będą dostępne w Syrve Office do przesyłania do raportu sprzedaży OLAP. Jeśli podczas wywoływania metody AddOrderExternalData przekażesz flagę isPublic równą false, to takie dane, jak dotychczas, są zapisywane tylko w Syrve POS i nie będą dostępne zewnętrznie.

Kolejność modyfikatorów potraw

Począwszy od wersji API V7Preview6, możliwe będzie uporządkowanie prostych i grupowych modyfikatorów potraw w takiej samej kolejności, jak jest to robione w Syrve Office.

Dodano pole MenuIndex dla typów ISimpleModifierBase oraz IGroupModifier.

Modyfikatory potraw można pobrać za pomocą następujących metod:

Jeśli modyfikatory potraw są konfigurowane za pomocą schematu modyfikatora (pole IProduct.Template nie jest null), należy użyć następujących metod:

Anuluj przejście do ekranu kasy

Począwszy od API V7Preview5, stało się możliwe zabronienie przejścia do ekranu kasy.

Przed przejściem do ekranu kasy wywoływane jest powiadomienie NavigatingToPaymentScreen. Wcześniej pozwalało ono na zmianę zamówienia za pomocą IOperationService, dostępnego w argumentach powiadomienia, na przykład dodanie płatności. Pozwalało również na interakcję z użytkownikiem za pomocą IViewManager, wyświetlanie różnych okien w SyrvePOS.

Teraz, oprócz wszystkiego innego, dodaliśmy możliwość anulowania przejścia do ekranu kasy poprzez wygenerowanie wyjątku OperationCanceledException w odpowiednim subskrybencie. Może to być wymagane w przypadkach, gdy sprawdzane są dodatkowe warunki, których niespełnienie może uniemożliwić nawigację do kasy.