Przejdź do głównej zawartości

Dodano możliwość wysyłki dostawy w drodze (bez płatności)

Począwszy od V7Preview3, możesz przygotować swoją przesyłkę do wysyłki, wydrukować list przewozowy, przypisać kuriera i wysłać ją w drogę.

Nowości

Przykład użycia

private void CreateAndSendDelivery()
{
if (PluginContext.Operations.GetHostDeliverySettings().DeliveryPaymentTimeOption == DeliveryPaymentTimeOption.BeforeSending)
return; // jeszcze nieobsługiwane

var credentials = PluginContext.Operations.AuthenticateByPin(pin);

var delivery = CreateDelivery(false); // metoda EditorTester.CreateDelivery z SamplePlugin
if (PluginContext.Operations.IsDeliveryConfirmationActive())
{
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.Unconfirmed);
PluginContext.Operations.ChangeDeliveryConfirmTime(DateTime.Now, delivery, credentials);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
}

PluginContext.Operations.PrintOrderItems(credentials, delivery, delivery.Items.OfType<IOrderCookingItem>().ToList());

Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.New);
PluginContext.Operations.PrepareDeliveryForSending(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.Waiting);

var courier = PluginContext.Operations.GetUsers().Single(x => x.Name == courierName);
Debug.Assert(delivery.Courier == null);
PluginContext.Operations.ChangeDeliveryCourier(true, delivery, courier, credentials);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(Equals(delivery.Courier, courier));

Debug.Assert(!delivery.IsPrintedBillActual);
PluginContext.Operations.PrintDeliveryBill(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.IsPrintedBillActual);

PluginContext.Operations.SendDelivery(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.OnWay);
}

Dodano powiadomienie o otwieraniu i zamykaniu zmian osobistych użytkowników

Od wersji V7Preview2 dodano powiadomienie UserSessionChanged, które ułatwia śledzenie zmian właściwości IUser.IsSessionOpen.

W niektórych scenariuszach zmiany osobiste mogą być otwierane lub zamykane jednocześnie dla grupy użytkowników, dlatego powiadomienie będzie zawierać listę użytkowników, których zmiana osobista została otwarta lub zamknięta, a lista może jednocześnie zawierać tych, których zmiana osobista właśnie się otworzyła, jak i tych, których właśnie się zamknęła.

W poprzednich wersjach API należało używać bardziej ogólnego powiadomienia do śledzenia zmian osobistych UserChanged, które, jak wcześniej, jest wywoływane przy każdej zmianie użytkownika, w tym otwieraniu i zamykaniu zmiany osobistej.

Przy okazji, wtyczka może nie tylko monitorować osobiste zmiany użytkowników, ale także nimi zarządzać.

Możliwość tworzenia dostawy bez klienta

Od wersji V7 dodano możliwość tworzenia dostawy bez klienta.

Od V7 w dostawie DeliveryOrder klient stał się polem opcjonalnym, a w metodzie CreateDeliveryOrder możliwe jest nieokreślanie klienta podczas tworzenia dostawy.
Numer telefonu anonimowego klienta odpowiada numerowi telefonu z dostawy Phone.
W DeliveryOrder dodano nowe pole ClientName - nazwa klienta.
To pole jest opcjonalne i jest używane tylko wtedy, gdy nie określono klienta.
Do zmiany ClientName dodano nową metodę ChangeDeliveryClientName.

Dodano możliwość wyboru urządzenia do drukowania paragonu „Faktura”

Począwszy od wersji Syrve 6.4, API V6 dodało możliwość wyraźnego określenia, gdzie będzie drukowany paragon typu „Faktura”.

Sprawdzenie typu „Faktura” jest stosowane w niektórych krajach, na przykład na Łotwie.
Nie wszystkie modele rejestratorów fiskalnych obsługują drukowanie paragonów typu „Faktura”. Dla urządzeń opisanych w API Equipment obsługa drukowania paragonów typu „Faktura” jest włączana za pomocą CashRegisterDriverParameters poprzez ustawienie IsBillTaskSupported = true.
Paragon typu „Faktura” to polecenie ICashRegister.DoBillCheque().
Konfiguracja IsBillTaskSupported = true zakłada, że w poleceniu paragonu płatności wymagany jest numer faktury.
W związku z tym w wynikach polecenia DoBillCheque pole CashRegisterResult.BillNumber musi być wypełnione.

W momencie drukowania rachunku gościa rdzeń Syrve POS pyta subskrybentów „W którym punkcie sprzedaży powinienem wydrukować Fakturę dla tego zamówienia?”.
Rejestracja routera do drukowania paragonów typu „Faktura” odbywa się za pomocą metody INotificationsService.BillChequePosResolving():

  • Metoda przyjmuje funkcję z argumentami IOrder „zamówienie” oraz bool „czy to jest zwrot rachunku”.
  • Funkcja powinna zwrócić IPointOfSale: punkt sprzedaży, do którego zostanie wysłane polecenie paragonu typu „Faktura”.
  • Jeśli funkcja zwróci null lub zgłosi wyjątek, polecenie paragonu typu „Faktura” nie zostanie nigdzie wysłane.

Przykładowy kod dla prostego przypadku, gdy drukowanie faktury powinno odbywać się na rejestratorze fiskalnym bieżącej maszyny:

var pointsOfSales = PluginContext.Operations.GetHostTerminalPointsOfSale();
var currentPos = pointsOfSales.FirstOrDefault();

if (currentPos != null)

{ subscriptions.Push(PluginContext.Notifications.BillChequePosResolving.Subscribe(_ => currentPos)); }