Obsługa programów lojalnościowych

Obsługa programów lojalnościowych

W aplikacji Comarch Mobile udostępniono obsługę programów lojalnościowych. Umożliwiono pobieranie z systemu Comarch ERP Altum punktów lojalnościowych zgromadzonych na kontach określonych kontrahentów za zakup poszczególnych towarów. Zebrane punkty mogą zostać wykorzystane w aplikacji mobilnej do nadania rabatów. Aby umożliwić rozliczanie punktów lojalnościowych z poziomu Comarch Mobile należy:
  • stworzyć definicję programu lojalnościowego zgodnego ze swoimi założeniami oraz wymaganiami opisanymi w dalszej części dokumentu,
  • obsłużyć synchronizację punktów lojalnościowych kontrahentów,
  • włączyć obsługę programu lojalnościowego w pliku [configuration.*.statement], poprzez zmianę wartości klucza [IsLoyaltyEnabled] na 1.

Struktura definicji programu lojalnościowego

Przygotowane definicje programów lojalnościowych należy umieścić w pliku z rozszerzeniem XML w katalogu [LoyaltyProgramsDefinitions] katalogu głównego serwera synchronizacji Comarch Mobile Sprzedaż. Nazwa pliku musi składać się z <IdProgramuLojalnosciowego><NazwaProgramuLojalnosciowego>.xml(np.12#NaszaLojalnosc.xml). Synchronizacja definicji do urządzeń mobilnych odbywa się po każdej modyfikacji w plikach definicji. Aby usunąć już zsynchronizowaną definicję z urządzeń mobilnych należy zmienić id programu na wartość ujemną (np.-12#NaszaLojalnosc.xml). Taka definicja zostanie usunięta przy następnej synchronizacji.
<?xml version="1.0" encoding="UTF-8"?> <LoyaltyProgram> <Name>…</Name> <SettleDocumentsValue>…</SettleDocumentsValue> <CheckContractorStatusQuery> … </CheckContractorStatusQuery> <CheckArticleStatusQuery> … </CheckArticleStatusQuery> <InitialMessageQuery> … </InitialMessageQuery> <AfterRemovePositionLoyaltyProgramQuery> … </AfterRemovePositionLoyaltyProgramQuery> <AfterAddPositionLoyaltyProgramQuery> … </AfterAddPositionLoyaltyProgramQuery> <AfterRemoveDocumentLoyaltyProgramQuery> … </AfterRemoveDocumentLoyaltyProgramQuery> <AfterAddDocumentLoyaltyProgramQuery> … </AfterAddDocumentLoyaltyProgramQuery> </LoyaltyProgram>

Elementy w definicji program lojalnościowego

Name – Nazwa program lojalnościowego SettleDocumentsValue – flaga bitowa określająca na jakich dokumentach bierze udział program lojalnościowy
  • Typy dokumentów i wartości
  • 1 –OS
  • 2 –ZS
  • 4 – FS
  • 8 – PA
  • 16 – WZ
  • 32 – WM
  • Wartość pola 5 oznaczać będzie, że rozliczenie punktów dostępne będzie na dokumentach OS i FS (1+4).
CheckContractorStatusQuery – Zapytanie sprawdzające czy dany kontrahent bierze udział w programie lojalnościowym oraz zwraca liczbę punktów dostępnych dla kontrahenta. Zwrócenie wiersza oznacza, że kontrahent bierze udział w programie lojalnościowym. Parametry wejściowe:
  • @DocumentType – typ dokumentu. Wartość zgodna z wartościami z punktu drugiego.
  • @ContractorId – identyfikator kontrahenta
  • @LoyaltyProgramId – identyfikator programu lojalnościowego
  • @EditedDocumentId – identyfikator dokumentu, który jest teraz aktualnie reedytowany (został tylko zapisany wcześniej, został cofnięty do bufora)
  • Kolumny wyjściowe
  • Liczba punktów dostępnych do zużycia przez kontrahenta
CheckArticleStatusQuery – Zapytanie sprawdzające czy dany towar jest dostępny w danym programie lojalnościowym oraz zwraca liczbę punktów do rozliczenia na pozycji. Parametry wejściowe:
  • @ArticleId – identyfikator towaru na który wystawiana jest pozycja
  • @StartGrossPrice – początkowa cena brutto
  • @StartNetPrice – początkowa cena netto
  • @Quantity – ilość w jednostce bazowej
  • @AvailablePoints – liczba dostępnych punktów kontrahenta
  • @EditedDocumentId – identyfikator edytowanego dokumentu
  • @VatRate – stawka VAT (np. dla 23% – parametr ten będzie miał wartość 23)
  • @VatDirection – kierunek VAT (0 – Netto, 1 – Brutto)
  • Kolumny wyjściowe
  • MaxPointsToSettleValue – maksymalna liczba punktów możliwa do rozliczenia na pozycji
  • EndGrossPrice – końcowa cena brutto na pozycji po rozliczeniu punktów MaxPointsToSettleValue
InitialMessageQuery – Zapytanie tworzące komunikat powitalny. Parametry wejściowe:
  • @DocumentType – typ dokumentu. Wartość zgodna z wartościami z punktu drugiego.
  • @ContractorId – identyfikator kontrahenta
  • @LoyaltyProgramId – identyfikator programu lojalnościowego
  • @EditedDocumentId – identyfikator dokumentu, który jest teraz aktualnie reedytowany (został tylko zapisany wcześniej, został cofnięty do bufora)
  • Kolumny wyjściowe
  • InitialMessageText – komunikat powitalny. Może zawierać proste tagi html’owe w celu sformatowania tekstu. (np. Dodanie nowej linii <br />, Zmiana koloru fragmentu tekstu <font color=”#FF0000″></font>, itd.)
AfterRemovePositionLoyaltyProgramQuery – Zapytanie wykonywane po usunięciu rozliczenia programu lojalnościowego na pozycji. Służy do wycofania zmian wykonanych  w AfterAddPositionLoyaltyProgramQuery. Parametry wejściowe:
  • @LoyaltyProgramId – identyfikator programu lojalnościowego
  • @ProgramName – nazwa programu lojalnościowego
  • @AttributeObjectType – typ atrybutów dla pozycji
  • @ObjectId – identyfikator dokumentu
  • @ObjectIsLocal – identyfikator dokumentu
  • @ObjectSubId – identyfikator pozycji
  • @ObjectSubIsLocal – identyfikator pozycji
  • Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;
AfterAddPositionLoyaltyProgramQuery – Zapytanie wykonywane po zapisie dokumentu – dla każdej pozycji, która zostaje rozliczona za pomocą programu lojalnościowego. Parametry wejściowe:
  • @LoyaltyProgramId
  • @ProgramName
  • @SettledPoints
  • @AttributeObjectType
  • @ObjectId
  • @ObjectIsLocal
  • @ObjectSubId
  • @ObjectSubIsLocal
  • @StartGrossPrice – cena początkowa brutto
  • @StartNetPrice – cena początkowa netto
  • @StartGrossValue – wartość brutto
  • @StartNetValue – wartość netto
  • Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;
AfterRemoveDocumentLoyaltyProgramQuery – Zapytanie wykonywane po usunięciu rozliczenia programu lojalnościowego z dokumentu. Służy do wycofywania zmian wykonanych w AfterAddDocumentLoyaltyProgramQuery. Parametry wejściowe:
  • @LoyaltyProgramId
  • @ProgramName
  • @SettledPoints
  • @AttributeObjectType
  • @ObjectId
  • @ObjectIsLocal
  • @ObjectSubId
  • @ObjectSubIsLocal
  • Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;
AfterAddDocumentLoyaltyProgramQuery – Zapytanie wykonywane po zapisie dokumentu z rozliczeniem programu lojalnościowego. Parametry wejściowe:
  • @LoyaltyProgramId
  • @ProgramName
  • @SettledPoints
  • @AttributeObjectType
  • @ObjectId
  • @ObjectIsLocal
  • @ObjectSubId
  • @ObjectSubIsLocal
  • Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;

Synchronizacja punktów lojalnościowych kontrahentów

Aby umożliwić synchronizację punktów lojalnościowych kontrahentów należy zaimplementować metody synchronizacji obiektu [contractorsloyaltypoints]: [contractorsloyaltypoints.*.statement] – zapytanie pobierające aktualne stany punktów kontrahentów. Zwracane kolumny:
  • OperationType – typ operacji (dodawanie, usuwanie, edycja)
  • OperationTS – timestamp synchronizacji
  • LoyaltyProgramId – identyfikator programu lojalnościowego
  • ContractorId – identyfikator kontrahenta
  • Points – liczba dostępnych punktów do rozliczenia przez kontrahenta
  • LockedPoints – liczba punktów dostępnych lecz zablokowanych do rozliczenia. Obecnie parametr ten nie jest jeszcze obsługiwany, dlatego zawsze kolumna ta powinna zwracać wartość 0.
[contractorsloyaltypoints.*.xml] – definicja metody synchronizacji, triggery aktualizujące timestampy wierszy.

Rozliczanie punktów w systemie ERP

Rozliczanie punktów należy obsłużyć po stronie systemu Comarch ERP Altum za pomocą triggera wdrożeniowego aktywowanego np. potwierdzeniem dokumentu. Dokładny sposób rozliczenia jest zależny od  mechanizmów zaimplementowanych w programie lojalnościowym po stronie systemu Comarch ERP Altum. Program lojalnościowy może zostać oparty poprzez atrybuty zdefiniowane w systemie Comarch ERP Altum. W takiej obsłudze będą brani pod uwagę Kontrahenci, którzy posiadają zdefiniowany atrybut ze wskazaniem programu lojalnościowego (np. Nasza Lojalność), a przedstawiciel będzie mógł nadać rabat tylko na pozycjach towarów oznaczonych też odpowiednim atrybutem.
Dodanie atrybuty na karcie towaru i karcie kontrahenta
Obecne implementacje do przesyłania informacji o liczbie rozliczonych punktów, korzystają z atrybutów (klasa atrybutu tylko do odczytu) ustawianych na pozycjach dokumentów (za pomocą [AfterAddPositionLoyaltyProgramQuery]) z wartością rozliczonych na pozycji punktów. Podczas synchronizacji do systemu ERP dokumentów, w momencie ich potwierdzenia, w triggerze sprawdzone powinno zostać istnienie atrybutu rozliczającego punkty na pozycjach. Wartość rozliczonych punktów powinna zostać odjęta z puli punktowej kontrahenta. Dodatkowo rozliczenie takie powinno spowodować podbicie odpowiednich timestampów w [contractorsloyaltypoints] w celu wymuszenia synchronizacji aktualnego stanu punktów kontrahenta.