Przejdź do głównej zawartości

Sprzęt

Aby wykonać wiele operacji na POS zasilanym przez Syrve POS — od edycji zamówienia po płatność — często potrzebne mogą być określone jednostki sprzętu. Wśród nich mogą być rejestratory fiskalne, drukarki, wagi, szuflady kasowe, ekrany dla klientów i inne.

Wcześniejsze wersje (przed 6.2) obsługiwały tylko ograniczoną liczbę modeli sprzętu. Zazwyczaj były to najpopularniejsze modele. Korzystając z API, możemy teraz obsługiwać dowolny model rejestratorów fiskalnych i wag.

Rejestrator fiskalny

W API rejestratory fiskalne są reprezentowane jako typ ICashRegister, który zawiera tylko identyfikator urządzenia i nazwę. W dużej mierze ICashRegister to lista poleceń, takich jak otwarcie/zamknięcie zmiany kasowej, płatność/zwrot zamówienia, wpłata/wypłata pieniędzy i inne. Polecenia są wstępnie skonfigurowane, natomiast implementacja zależy od urządzenia. Często polecenia rejestratora fiskalnego zwracają aktualny status jako obiekt CashRegisterResult, zawierający informacje o urządzeniach liczących pieniądze, numerach dokumentów, kwotach podatków i tak dalej.

Każdy rejestrator fiskalny ma swoje ustawienia reprezentowane przez typ CashRegisterSettings. Gdy dodajesz lub edytujesz urządzenie w Syrve Office, możesz przeglądać ustawienia i odpowiednio określać wartości. CashRegisterSettings zawiera następujące szczegóły:

  • Nazwa modelu rejestratora fiskalnego, na przykład „MSTAR-TK. Protokół AFP” (Code).
  • Wersja formatu danych fiskalnych (OfdProtocolVersion).
  • Tabela stawek podatkowych (FiscalRegisterTaxItems).
  • Tabela typów płatności — określona przez typ (FiscalRegisterPaymentTypes).
  • Liczba znaków na wiersz paragonu drukowanego standardową czcionką (Font0Width).
  • Ustawienia (DeviceSetting) to lista dodatkowych ustawień. Na przykład port COM, adres TCP/TP, szybkość wymiany danych, hasło dostępu i tak dalej.

Schemat połączenia sprzętu z Syrve POS jest taki sam dla wszystkich typów urządzeń. Aby zacząć korzystać z drukarki fiskalnej, musisz zarejestrować urządzenie na liście sprzętu. W tym celu musisz utworzyć klasę implementującą ICashRegisterFactory, która będzie reprezentować twój rejestrator fiskalny i dodać model do listy sprzętu za pomocą metody RegisterCashRegisterFactory(https://syrve.github.io/front.api.sdk/v7/html/M_Resto_Front_Api_IOperationService_RegisterCashRegisterFactory.htm).

ICashRegisterFactory powinien określać nazwę modelu urządzenia i ustawienia. W ten sposób możesz znaleźć swój rejestrator fiskalny w Syrve Office według modelu oraz dodać lub edytować jego ustawienia.

Przykład wtyczki implementującej integrację z rejestratorem fiskalnym (drukarką) znajduje się w projekcie Resto.Front.Api.SampleCashRegisterPlugin.

Wagi

W API wagi są reprezentowane jako typ IScale. Podobnie jak każde inne urządzenie, waga zawiera identyfikator urządzenia i nazwę. Typ IScale zawiera jedno polecenie — ważenie (MeasureWeight()).

Wynik ważenia to obiekt typu ScaleWeightResult, który zawiera wagę w kilogramach (Weight).

Aby zacząć korzystać z wagi, musisz zarejestrować urządzenie na liście sprzętu. W tym celu musisz utworzyć typ IScaleFactory, który będzie reprezentować twoją wagę i dodać model do listy sprzętu za pomocą RegisterScaleFactory(https://syrve.github.io/front.api.sdk/v7/html/M_Resto_Front_Api_IOperationService_RegisterScaleFactory.htm).

IScaleFactory powinien określać nazwę modelu urządzenia i ustawienia. W ten sposób możesz znaleźć swoją wagę w Syrve Office według modelu oraz dodać lub edytować jej ustawienia.

Przykład wtyczki implementującej integrację z wagą znajduje się w projekcie Resto.Front.Api.SampleScalePlugin.

Automatyczne uruchamianie urządzenia

Syrve POS może automatycznie uruchamiać urządzenia. Jeśli urządzenie nie działa, wykonanie dowolnego polecenia zakończy się niepowodzeniem z wyjątkiem uruchomienia. Aby uniknąć ręcznego uruchamiania urządzeń w Syrve Office („Ustawienia sprzętu”) lub w Syrve POS („Narzędzia” > „Ustawienia sprzętu”), postępuj w następujący sposób. W ustawieniach urządzenia w Syrve Office zaznacz opcję „Autouruchamianie”. W docelowych metodach (na przykład DoCheque, OpenSession dla FCR) dodaj sprawdzenie statusu urządzenia i rzuć wyjątek DeviceNotStartedException:

private void CheckStarted()
{
if (state != State.Running)
throw new DeviceNotStartedException("Urządzenie nie zostało uruchomione");
}

Gdy wystąpi taki wyjątek, Syrve POS spróbuje uruchomić urządzenie, a następnie wykonać docelowe polecenie.