# Munkafolyamatok, makrók és lemondás

> Automatikus e-mail értesítések munkafolyamatokkal, a JetBooking makrói és a foglalás lemondásának beállítása.

## Munkafolyamatok

A munkafolyamatokkal automatikus értesítéseket küldhetsz a vevőknek: visszaigazolást, emlékeztetőt, véleménykérést. A munkafolyamat elindulhat a foglalás létrehozásakor vagy az állapotának megváltozásakor, azonnal vagy az érkezéshez, illetve távozáshoz képest időzítve.

Ha az **Egyszerű** mód van beállítva, a foglalási űrlap **Email** mezőjét be kell állítani, és az **Apartment Booking** műveletben az **E-mail Field** mezőhöz hozzá kell rendelni ([Foglalási űrlap](https://hub.hellowp.io/hu/plugins/jet-booking/foglalasi-urlap/)).

1. Nyisd meg a **Foglalások → Beállítások → Munkafolyamatok** fület.
2. Kapcsold be a **Munkafolyamatok engedélyezése** kapcsolót. Ha ez ki van kapcsolva, a munkafolyamatok akkor sem működnek, ha be vannak állítva.
3. Kattints az **+ Új munkafolyamat-elem** gombra.

![A Munkafolyamatok fül](./kepek/beallitasok-munkafolyamatok.webp)

*A Munkafolyamatok fül* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-abaf-settings)

### A munkafolyamat-elem beállításai

| Beállítás | Értékek |
|---|---|
| **Esemény** | **Booking Created** (a foglalás létrehozása után), **Bookings Group Created (Multi Booking)** (egyetlen vevői művelet több foglalást hoz létre egyszerre, például több egység foglalása egy űrlapküldéssel vagy WooCommerce-termékkel), **Booking Status Changed** (az állapot változása után, ekkor az **Állapot** menü is megjelenik) |
| **Indítás** | **Azonnal**, vagy **Ütemezett** |
| Ütemezett indításnál | **Dátum**: **Check in** vagy **Check out**; **Feltétel**: **Before** vagy **After**; **Napok**: hány nappal előtte vagy utána küldje |

### Műveletek

Az **+ Új művelet** gombbal a munkafolyamathoz akárhány művelet hozzáadható. A **Név** mezőben a művelet azonosító neve áll. A **Művelet** lehetőségei:

- **Send Email**: e-mail küldése. A mezők támogatják a JetBooking makróit: **Send to** (címzett), **Subject** (tárgy), **Send from** (feladó címe), **Send from name** (feladó neve), **Message** (tartalom).
- **Call a Webhook**: egy érvényes, elérhető webhook-URL megadásával az esemény adatait külső szolgáltatásnak küldi.

### Példa: visszaigazoló e-mail

1. Eseményként válaszd a **Booking Created** értéket, indításként az **Azonnal** lehetőséget.
2. Adj hozzá egy **Send Email** műveletet, a nevét add meg (például „Visszaigazoló e-mail”).
3. A **Send to** mezőben az adatbázis gombbal válaszd ki a **Booking Data** makrót, és adatként a **User E-mail** értéket. Ez beilleszti a `%booking_data|user_email||%` makrót, így az e-mail a foglalónak megy.
4. A **Subject** és a **Message** mezőt írd meg szöveggel és makrókkal. Például:

```text
Köszönjük a foglalást!

Foglalás azonosítója: %booking_data|ID||%
Érkezés: %booking_data|check_in_date|readable|%
Távozás: %booking_data|check_out_date|readable|%
Tétel: %booking_unit_title%
Teljes ár: %booking_column|total%
```

A fenti szövegben a makrók szerepe:

- **Booking Data**: a foglalás adatai. Az adatbázis gombbal a **Booking Data** makrót választod, és az adattípust (például **ID**, **User E-mail**, **Check In Date**). A dátumoknál olvasható formátumot és dátumformátumot is megadhatsz, például `%booking_data|check_in_date|readable|F j, Y%`.
- **Booking Additional Column**: a **Foglalások → Beállítások → Eszközök** fülön felvett oszlopok értéke, például `%booking_column|user_name%` a vevő nevét, `%booking_column|total%` a teljes árat adja.
- **Booking Unit Title**: az egység neve ([Egységek kezelése a vezérlőpultról](https://hub.hellowp.io/hu/plugins/jet-booking/egysegek-es-arazas-egysegek-kezelese/)). Ha nincs egység megadva, használd helyette a **Booking Instance Title** makrót.

A **Send from** mezőbe a szolgáltató hivatalos e-mail-címe kerül, a **Send from name** mezőbe a feladó neve.

### Példa: emlékeztető érkezés előtt

Hozz létre egy másik munkafolyamat-elemet: esemény **Booking Status Changed**, állapot **Teljesítve**, indítás **Ütemezett**, dátum **Check in**, feltétel **Before**, napok: 1. A művelete egy **Send Email**, a fenti módon kitöltve.

Ha az emlékeztetőt egy nappal a bejelentkezés elé időzíted, a foglalás állapotát legalább 24 órával a bejelentkezés előtt **Teljesítve** értékre kell állítani, különben az e-mail nem megy el.

### A működés kipróbálása

1. Add le a foglalást a weboldalon: az első munkafolyamat e-mailje azonnal megérkezik.
2. Nyisd meg a **Foglalások → Foglalások** oldalt, kattints az új foglalás **Szerkesztés** gombjára, és állítsd az **Állapot** mezőt **Teljesítve** értékre.
3. A bejelentkezés előtti napon megérkezik az emlékeztető a foglalás adataival.

## Makrók

A JetBooking saját makrókat ad a JetEngine makrói mellé. Használhatók a munkafolyamatok e-mailjeiben, az iCalendar sablonban, dinamikus címkékben (Elementor), a blokkszerkesztő dinamikus tartalom funkciójában (**Custom data** forrás), a JetEngine lekérdezéskészítőjében és a makrógenerátorban is.

| Makró | Mit ad vissza |
|---|---|
| `%booking_accommodation_status\|available\|pending\|reserved%` | A foglalási példány aktuális állapotát a következő hét napra nézve: ha a teljes hét foglalt, a „reserved” feliratot adja, ha változik a foglaltság, a „pending” feliratot a szabaddá válás dátumával. A három felirat megadható |
| `%booking_column\|oszlopnév%` | Egy egyedi adatbázisoszlop értéke (például `guest`) |
| `%booking_cancel_url%` | A foglalás lemondási hivatkozása |
| `%booking_data\|adat%` | A foglalás adata: **ID**, **Instance**, **Order ID**, **User ID**, **User Email**, **Check In Date**, **Check In Time**, **Check Out Date**, **Check Out Time**. A dátumoknál a formátum **Plain** (szabványos) vagy **Readable** (olvasható, megadható dátumformátummal) |
| `%booking_price_per_day_night%` | A tétel napi vagy éjszakai ára (a **Konfiguráció** fül foglalási időszaka szerint). Beállítható az ár típusa (**Shown Price**), a **Price Type**, a pénznem jele és helye (lásd lent) |
| `%booking_status%` | A foglalás belső állapota |
| `%booking_unit_title%` | Az egység neve, ha van |
| `%booking_units_count%` | A még foglalható egységek száma (például „2 szoba maradt”) |
| `%bookings_count\|kezdet\|vég%` | A tételre megadott időszakban leadott foglalások száma. A dátumformátum `Y-m-d` vagy `Y-m-d H:i:s` |

### Az ár makró beállításai

- **Shown Price**: melyik árat adja vissza. **Default**: az egység szerkesztőoldalán az **Árazási beállítások** doboz „Ár 1 napra/éjszakára” mezője; **Min Price** vagy **Max Price**: az alapár, a szezonális és a hétvégi árak közül a legkisebb vagy legnagyobb; **Prices Range**: a legkisebb és a legnagyobb ár közötti tartomány.
- **Price Type**: **Static** vagy **Dynamic**. A dinamikus ár a kiválasztott be- és kijelentkezési dátum szerint számolódik újra, és csak akkor működik, ha az oldalon foglalási űrlap is van.
- **Currency Sign**: egyedi pénznemjel.
- **Currency Sign Position**: az ár előtt vagy után.

A `%booking_accommodation_status%` makróval egyedi **Available Label**, **Pending Label** és **Reserved Label** felirat adható meg. A `%booking_data|…%` makrónál a dátum- és időjellegű adattípusoknál (**Check In Date**, **Check In Time**, **Check Out Date**, **Check Out Time**) jelenik meg az adatformátum mező: a **Plain** egységes, könnyen feldolgozható formátumot ad, a **Readable** esetén megadhatod a dátum és idő formátumát.

### Hol használhatók a makrók?

- **iCalendar sablon** (**Foglalások → Naptárak**): **Booking Additional Column**, **Booking Cancel URL**, **Booking Data**, **Booking Instance Meta**, **Booking Instance Title**, **Booking Status**, **Booking Unit Title**.
- **Elementor**: a JetEngine **Dynamic Tags** gombjával az egyedi oldalon, a listázási sablonban és az ugyanilyen felugró ablakban: **Accommodation Status**, **Booking Price**, **Bookings count**, **Price per day/night**, **Units count**.
- **Blokkszerkesztő (Gutenberg)**: a blokk eszköztárának **Dynamic Content** gombjával, a **Custom data** forrással, a **SELECT DATA TO SHOW** listában: **Booking Accommodation Status**, **Booking Additional Column**, **Booking Cancel URL**, **Booking Data**, **Booking Price**, **Booking Price Per Day/Night**, **Booking Status**, **Booking Unit Title**, **Booking Units Count**, **Bookings Count**.
- **JetEngine Query Builder** egyéni lekérdezéseiben, és a **Makrógenerátorban** (JetEngine beállításai): ugyanez a készlet.

## Foglalás lemondása

A vevő lemondhatja a lefoglalt foglalását, ha ezt engedélyezed. A visszatérítést a rendszer nem küldi el automatikusan.

A lemondás részletes leírása, a Fiókom oldalon való lemondással együtt: [Foglalás lemondása a webhelyen és a Fiókom oldalon](https://hub.hellowp.io/hu/plugins/jet-booking/foglalasok-kezelese-lemondas-fiokom/).

1. Nyisd meg a **Foglalások → Beállítások → Haladó** fület.
2. Kapcsold be a **Foglalás lemondása** kapcsolót.
3. A megjelenő lemondási határidő mezőben adj meg időkorlátot a foglalás kezdete előtt (legalább 1). A határidő lejárta után a lemondási kérést már nem fogadja el a rendszer.

A lemondás hivatkozását a vevőknek meg kell jeleníteni, például egy listában (JetEngine lekérdezés és listázási sablon alapján):

1. A **JetEngine → Lekérdezéskészítő** oldalon hozz létre egy új lekérdezést **JetBooking Query** típussal.
2. A **JetEngine → Listázások/komponensek** oldalon hozz létre egy listázási sablont, amelynek forrása a lekérdezés.
3. A sablonban adj hozzá egy **Dynamic Link** elemet, forrásnak a JetBooking szekcióból a **Cancel Link** lehetőséget választva. Átirányítási URL-t is megadhatsz.
4. Opcionálisan a **Dynamic Visibility** beállítással a hivatkozást csak akkor jelenítheted meg, ha a foglalás lemondható.
5. A sablont a **Listing Grid** elemmel tedd ki az oldalra.
