> For the complete documentation index, see [llms.txt](https://docs.expirenza.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.expirenza.com/setup/pos/poster/tips.md).

# Оплата за обслуговування

## Загальна інформація

Для забезпечення роботи оплати за послуги обслуговуваня на ФОП рахунок ресторану необхідно завести в Poster окремий продукт - `Expirenza Обслуговування`.

\
Після цього, якщо у ресторана активована опція сплати за послуги обслуговування на ФОП і клієнт залишає оплату за обслуговування, плагін, отримавши цю інформацію від backend, перевірить поточний чек в Poster. Якщо в чеку ще не було додано позицію `Expirenza Обслуговування` на оплачену суму, плагін отримає з Poster дані про заведений продукт.

\
Якщо він є і відповідає всім вимогам, плагін зробить спробу додати позицію в чек. Якщо продукт не заведено, або заведено не правильно, плагін поверне помилку на backend, а в фоні спробує оновити продукт **Expirenza** **Обслуговування**, якщо він був заведений.&#x20;

**Якщо продукт не заведений, то він автоматично не створиться.**

У випадку, коли плагін перевіряє чек і вже бачить що продукт **Expirenza** **Обслуговування** був доданий і сума збігається з тією, що вказав клієнт, то чек буде закритий, без додаткових дій. Якщо сума не збігається - плагін поверне помилку.

## Параметри продукту **“Expirenza** **Обслуговування”**

Для того, щоб плагін зміг успішно додати позицію для переказу оплати за обслуговування на ФОП - **Expirenza** **Обслуговування**, він має бути заведений в Poster з наступними параметрами:

* Мати назву `Expirenza Обслуговування`, зі збереженням регістру, без інших символів (пробіли на початку, в кінці, точки, коми, тощо)
* Страва має бути вагова
* Страва доступна на споті який використовується рестораном
* Ціна за 100 грамм - 100 копійок для споту який використовується рестораном

<figure><img src="https://115752690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUrrjxJkhEuwfb0dGwW06%2Fuploads%2Ftmpo94YrU3GdXmJe2L24%2Fposter1.png?alt=media&amp;token=fe70795a-bbe5-415f-907d-8810123d63b3" alt=""><figcaption></figcaption></figure>

<figure><img src="https://115752690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUrrjxJkhEuwfb0dGwW06%2Fuploads%2FB30G54ACBZtUOEgMFGyF%2Fposter2.png?alt=media&amp;token=a0afdc51-d2a2-4b10-b071-611a703ae749" alt=""><figcaption></figcaption></figure>

## Фонове оновлення продукту **“Expirenza** **Обслуговування”**

Процес фонового оновлення запускається в двох випадках:

1. Отримання плагіном параметру налаштування про включення в ресторані оплати за обслуговування на фоп
2. При закритті рахунку, якщо продукт **Expirenza** **Обслуговування** не проходить валідацію.

При цьому плагін отримує інформацію, чи був у ресторана раніше заведений продукт і чи відомий його Id в Poster.&#x20;

Якщо **так**, то по АПІ `menu.getProduct` отримуєм продукт, якщо його вже немає - видаляємо раніше збережений Id продукта в плагіні і процес оновлення завершується помилкою.\
Якщо продукт є і він проходить валідацію - додаткових дій не потрібно. Якщо ж валідацію не проходить - параметри продукту буде оновлено до необхідних (через АПІ - `menu.updateProduct`).

Якщо ж плагін не має Id продукту **Expirenza** **Обслуговування**, то спробує отримати всі продукти з Poster ( АПІ - `menu.getProducts`) і знайти по імені продукту. Якщо продукт буде знайдено, то його id буде збережено в плагіні та так само плагін провалідує і якщо необхідно оновить продукт в Poster).

## АПІ Poster,  які використовуються в процесі

1. Отримати продукт по id - [Документація по API Poster](https://dev.joinposter.com/ua/docs/v3/web/menu/getProduct?id=menugetproduct-%d0%92%d0%bb%d0%b0%d1%81%d1%82%d0%b8%d0%b2%d0%be%d1%81%d1%82%d1%96-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d1%83-%d0%b0%d0%b1%d0%be-%d1%82%d0%b5%d1%85-%d0%ba%d0%b0%d1%80%d1%82%d0%b8)
2. Зміна параметрів продукту - [Документація по API Poster](https://dev.joinposter.com/ua/docs/v3/web/menu/updateProduct?id=menuupdateproduct-%d0%97%d0%bc%d1%96%d0%bd%d0%b0-%d0%b2%d0%bb%d0%b0%d1%81%d1%82%d0%b8%d0%b2%d0%be%d1%81%d1%82%d0%b5%d0%b9-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d1%83)
3. Отримати список продуктів - [Документація по API Poster](https://dev.joinposter.com/ua/docs/v3/web/menu/getProducts?id=menugetproducts-%d0%a1%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d1%96%d0%b2-%d1%96-%d1%82%d0%b5%d1%85-%d0%ba%d0%b0%d1%80%d1%82)
4. Додати позицію в чек - [Документація по API Poster](https://dev.joinposter.com/ua/docs/v3/web/transactions/addTransactionProduct?id=transactionsaddtransactionproduct-%d0%94%d0%be%d0%b4%d0%b0%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d1%83-%d0%b4%d0%be-%d1%87%d0%b5%d0%ba%d0%b0)
