# Rezerwacje i umawianie wizyt: pełny przewodnik

> Wprowadzenie Moduł Rezerwacje i umawianie wizyt (dfbooking) dodaje rezerwację wizyt online do PrestaShop 8 i 9. Klient wybiera usługę, pracownika lub opcję „Pierwszy dostępny”, a potem dzień i godzinę. Dostępne…

- Strona: <https://www.datafirefly.com/pl/documentation/dfbooking/>
- Język: pl
- Zaktualizowano: 2026-09-30
- Inne języki: [fr](https://www.datafirefly.com/documentation/dfbooking/index.md), [en](https://www.datafirefly.com/en/documentation/dfbooking/index.md), [es](https://www.datafirefly.com/es/documentation/dfbooking/index.md), [de](https://www.datafirefly.com/de/documentation/dfbooking/index.md), [it](https://www.datafirefly.com/it/documentation/dfbooking/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfbooking/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfbooking/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Wprowadzenie

Moduł **Rezerwacje i umawianie wizyt** (`dfbooking`) dodaje rezerwację wizyt online do PrestaShop 8 i 9. Klient wybiera usługę, pracownika lub opcję „Pierwszy dostępny”, a potem dzień i godzinę. Dostępne godziny są wyliczane na bieżąco z grafików, czasu trwania usługi, przerwy i już zarezerwowanych wizyt.

Można wymagać zaliczki: jest opłacana przez natywne zamówienie PrestaShop, czyli metodami płatności już aktywnymi w sklepie. Zespół pracuje w kalendarzu w panelu administracyjnym, a klient sam zarządza wizytą przez prywatny link z e-maila.

Dokumentacja dotyczy wersji **1.2.0**.

**Język interfejsu.** Panel modułu, strona rezerwacji i e-maile są dostępne po angielsku, francusku, hiszpańsku, niemiecku i włosku. W sklepie po polsku wyświetlają się po angielsku, dlatego w tej dokumentacji nazwy menu i pól podajemy w wersji angielskiej. Teksty, które wpisujesz sam (nazwy i opisy usług, pracownicy, warunki rezerwacji), są wielojęzyczne i możesz je podać po polsku.

## Podstawowe pojęcia

- **Usługa** (Service): to, co rezerwuje klient (strzyżenie, konsultacja, warsztat). Ma czas trwania, przerwę, cenę za osobę, liczbę miejsc na termin i opcjonalnie zaliczkę, kategorię (Group) i zdjęcie.
- **Pracownik lub zasób** (Staff): osoba, kabina lub urządzenie wykonujące usługę. Każdy ma grafik tygodniowy i opcjonalnie zdjęcie oraz adres e-mail.
- **Termin**: godzina dostępna do rezerwacji, wyliczana z grafiku i odstępu między terminami.
- **Statusy**: Awaiting payment, Awaiting confirmation, Confirmed, Cancelled, Completed, No-show.

## Instalacja i aktualizacja

1. Otwórz **Moduły > Menedżer modułów** i kliknij **Załaduj moduł**.
2. Upuść archiwum `dfbooking.zip`, a następnie kliknij **Konfiguruj**.

Instalacja tworzy tabele, menu **Bookings** (Calendar, Bookings, Services, Staff and resources), ukryty produkt techniczny „Booking deposit” oraz folder `img/dfbooking/` na zdjęcia.

Aby zaktualizować starszą wersję, zainstaluj nowe archiwum ZIP na istniejącej: skrypty aktualizacji dodają nowe kolumny i tabele, generują prywatne linki istniejących rezerwacji i dodają zakładkę Calendar. Rezerwacje, usługi i grafiki pozostają bez zmian.

Nie usuwaj produktu „Booking deposit”: przenosi kwotę zaliczki do koszyka. Jest niewidoczny w katalogu i usuwany automatycznie przy odinstalowaniu.

## Szybki start

1. Utwórz pracownika w **Bookings > Staff and resources**. Domyślnie proponowany jest grafik od poniedziałku do piątku, 9:00-12:00 i 14:00-18:00.
2. Utwórz usługę w **Bookings > Services** i zaznacz pracowników, którzy ją wykonują.
3. Dodaj link do strony rezerwacji (widoczny w konfiguracji) do menu lub strony CMS.

Dodaj `?service=ID` do adresu strony rezerwacji, aby otworzyć od razu konkretną usługę, na przykład ze strony CMS, która ją opisuje.

## Konfiguracja

### Terminy (Time slots)

- **Slot interval** (domyślnie 30 min): odstęp między proponowanymi godzinami rozpoczęcia.
- **Minimum notice** (domyślnie 120 min): klient nie zarezerwuje terminu zaczynającego się wcześniej.
- **Booking window** (domyślnie 60 dni): jak daleko w przód można rezerwować.
- **Confirm bookings automatically**: po wyłączeniu rezerwacje bez zaliczki trafiają do statusu „Awaiting confirmation”.

### Formularz klienta (Customer form)

- **Require a customer account** i **Phone number required**.
- **Consent checkbox**: wybierz stronę CMS (polityka prywatności, regulamin); przed potwierdzeniem pojawi się obowiązkowe pole zgody.
- **Booking conditions**: krótki tekst dla każdego języka, wyświetlany przed potwierdzeniem i na stronie wizyty (odwołanie, zwrot zaliczki, spóźnienia).

### Zaliczka, odwołanie i zmiany

- **Hold an unpaid slot for** (domyślnie 30 min): po tym czasie bez zamówienia termin jest zwalniany.
- **Customers can cancel online** i **Customers can move their appointment online**, włączane osobno.
- **Online changes allowed until** X godzin przed wizytą (domyślnie 24).

### Powiadomienia i przypomnienia

- **Staff notification email**: otrzymuje każdą nową rezerwację, odwołanie i zmianę (puste = e-mail sklepu).
- **Also notify the assigned staff member**: kopia na e-mail podany przy pracowniku.
- **Reminder email** X godzin wcześniej (domyślnie 24, 0 wyłącza).
- **Attach a calendar file (.ics) to emails** przy potwierdzeniu, zmianie i odwołaniu.
- **Mark past appointments as completed**, automatycznie.

### Strona rezerwacji

- **Accent colour**: przyciski, wybrany dzień i godzina. Wybierz kolor czytelny na białym tle.
- **Page URL**: domyślnie `/reservation`, można zmienić (np. `/rezerwacja`).

## Usługi

W **Bookings > Services** każda usługa ma:

- **Nazwę**, **kategorię** (Group) i **opis** w każdym języku. Usługi z tej samej kategorii są wyświetlane razem, z filtrami od dwóch kategorii.
- **Zdjęcie** (JPG, PNG lub WebP, maks. 5 MB), wyświetlane jako miniatura.
- **Czas trwania** i **przerwę między wizytami** (sprzątanie, przygotowanie).
- **Liczbę miejsc na termin** (Places per slot): 1 dla wizyty indywidualnej, więcej dla zajęć grupowych.
- **Cenę za osobę** (0 ukrywa cenę) i **zaliczkę**: brak, procent ceny lub stała kwota za osobę.
- **Kolor** w kalendarzu oraz **pracowników** wykonujących usługę.

Usługa jest dostępna online tylko wtedy, gdy przypisano do niej co najmniej jednego aktywnego pracownika.

Powyżej sześciu usług nad listą na stronie rezerwacji pojawia się wyszukiwarka.

## Pracownicy i grafiki

W **Bookings > Staff and resources** podaj nazwę, funkcję, opis, zdjęcie (wyświetlane w kole), kolor i opcjonalnie e-mail do powiadomień.

### Grafik tygodniowy

Dla każdego dnia wpisz do trzech przedziałów godzin. Dwa przedziały pozwalają ustawić przerwę obiadową. Dzień bez przedziałów jest wolny. Przycisk **Copy to weekdays** kopiuje godziny z poniedziałku na wtorek-piątek, a **Clear** czyści dzień.

### Kalendarz pracownika w telefonie

Po zapisaniu pracownika jego profil pokazuje **prywatny link do kalendarza**. W Google Calendar (Inne kalendarze > Z adresu URL) lub na iPhonie (Ustawienia > Kalendarz > Konta > Dodaj subskrybowany kalendarz) jego wizyty pojawiają się i aktualizują automatycznie. Link dla całego zespołu znajduje się w konfiguracji.

Link pokazuje imiona i numery telefonów klientów. Udostępniaj go wyłącznie danej osobie.

## Zajęcia grupowe

Przy więcej niż jednym miejscu na termin klient wybiera liczbę uczestników i widzi wolne miejsca pod każdą godziną. Kilka rezerwacji może mieć tę samą godzinę rozpoczęcia aż do wyczerpania miejsc; cena i zaliczka są mnożone przez liczbę uczestników.

## Zamknięcia i wyjątkowe godziny otwarcia

- **Closures and days off**: okres bez terminów, dla całego sklepu lub pracownika. Jeśli w tym okresie są już wizyty, pojawi się ostrzeżenie: nie są one odwoływane automatycznie.
- **Exceptional opening hours**: specjalne godziny dla jednej daty (otwarcie wieczorne, niedziela przed Świętami, krótszy dzień), z opcjonalnym drugim przedziałem. Zastępują zwykły tydzień tylko tego dnia.

Kolejność pierwszeństwa dla danej daty: zamknięcie zawsze wygrywa; potem wyjątkowe godziny pracownika, potem całego sklepu; w pozostałych przypadkach zwykły grafik.

## Zaliczka

1. Rezerwacja powstaje ze statusem „Awaiting payment”, a termin zostaje zablokowany.
2. Moduł przygotowuje koszyk zawierający wyłącznie zaliczkę i kieruje klienta do procesu zamówienia. Dotychczasowy koszyk klienta jest odkładany.
3. Płatność natychmiastowa (karta, PayPal): rezerwacja otrzymuje status **Confirmed** i wychodzą e-maile.
4. Płatność odroczona (przelew): termin pozostaje zablokowany, a rezerwacja potwierdza się, gdy nadasz zamówieniu status opłaconego.
5. Zamówienie anulowane lub błędne: wizyta zostaje odwołana, a klient powiadomiony.
6. Porzucona płatność: termin jest zwalniany po ustawionym czasie.

Po zamówieniu pierwotny koszyk klienta jest przywracany, a strona potwierdzenia zamówienia pokazuje wizytę z linkiem do zarządzania nią.

## Proces rezerwacji klienta

1. **Usługa**: lista pogrupowana według kategorii, z filtrami i wyszukiwarką.
2. **Pracownik**: konkretna osoba lub „Pierwszy dostępny”. Krok jest pomijany, gdy usługę wykonuje tylko jeden pracownik.
3. **Dzień i godzina**: kalendarz otwiera się na najbliższym wolnym terminie; godziny są pogrupowane na rano, popołudnie i wieczór.
4. **Dane kontaktowe**, warunki i zgoda, a następnie potwierdzenie.

## Zarządzanie wizytą przez klienta

Po rezerwacji klient trafia na stronę swojej wizyty: podsumowanie, dodanie do Google Calendar i plik .ics dla Apple Calendar i Outlooka. Zależnie od ustawień może też **przesunąć** wizytę na inny wolny termin albo ją **odwołać**. Strona jest dostępna z linku w każdym e-mailu, także dla klientów bez konta. Zalogowani klienci widzą swoje wizyty także w swoim koncie.

## Kalendarz w panelu

**Bookings > Calendar** pokazuje widok tygodnia (z filtrem pracownika) oraz widok dnia z kolumną na każdego pracownika. Pasek koloru oznacza usługę, obramowanie status. Dni zamknięte są zakreskowane, a czerwona linia wskazuje aktualną godzinę.

- **Kliknięcie wolnej godziny** tworzy wizytę z wypełnionym dniem, godziną i pracownikiem.
- **Przeciągnięcie wizyty** przenosi ją z zachowaniem czasu trwania; w widoku dnia upuszczenie w innej kolumnie zmienia pracownika. Okno potwierdzenia proponuje e-mail do klienta. Jeśli termin jest zajęty, kalendarz pyta przed wymuszeniem.
- **Kliknięcie wizyty** otwiera jej szczegóły.

## Rezerwacje w panelu

**Bookings > Bookings** zawiera listę wizyt z filtrami i eksportem CSV. Przycisk **New booking** tworzy wizytę umówioną telefonicznie; godzina zakończenia wynika z czasu trwania usługi. Wizyta nakładająca się na inną jest odrzucana, chyba że włączysz **Save even if the time is taken**.

Szczegóły rezerwacji zawierają wizytę, klienta, płatność z linkiem do zamówienia, wiadomość klienta i notatkę wewnętrzną. Szybkie akcje: **Confirm**, **Mark as completed**, **No-show**, **Cancel booking**, **Restore**, **Resend the email**. Zmiana statusu wysyła klientowi odpowiedni e-mail. Zamówienie z zaliczką pokazuje blok z powiązaną wizytą.

## E-maile

Sześć szablonów (po angielsku, francusku, hiszpańsku, niemiecku i włosku; w sklepie po polsku wysyłane po angielsku): potwierdzenie z plikiem .ics, otrzymanie prośby, przypomnienie, odwołanie, zmiana terminu oraz powiadomienie zespołu. Każdy e-mail do klienta zawiera prywatny link do zarządzania wizytą.

## Zadania automatyczne

W tle działają trzy zadania: wysyłka przypomnień, zwalnianie terminów z nieopłaconą zaliczką oraz oznaczanie minionych wizyt jako zakończonych. Konfiguracja pokazuje **adres cron** chroniony tokenem; wywołuj go co 15 minut z crona serwera. Bez crona zadania uruchamiają się podczas wizyt w sklepie, najczęściej co 10 minut. Przycisk **Run the tasks now** uruchamia je od razu.

## Statystyki i RODO

Przegląd konfiguracji pokazuje nadchodzące wizyty oraz dla bieżącego miesiąca: liczbę wizyt, zarezerwowany przychód, udział rezerwacji online, odsetek odwołań i nieobecności.

Z oficjalnym modułem **psgdpr** eksport danych klienta obejmuje jego rezerwacje, a usunięcie danych anonimizuje rezerwacje (imię, e-mail, telefon, wiadomość) bez zniekształcania statystyk.

## Rozwiązywanie problemów

### Nie wyświetla się żadna godzina

Sprawdź, czy pracownik ma grafik na ten dzień, czy usługa jest do niego przypisana, czy dzień nie jest zamknięty, oraz porównaj minimalne wyprzedzenie i czas trwania usługi z przedziałami godzin.

### Przypomnienia nie są wysyłane

Sprawdź, czy przypomnienie nie jest ustawione na 0 i czy rezerwacja ma status „Confirmed”. W sklepie z małym ruchem skonfiguruj adres cron.

### Zdjęcie nie zostaje zapisane

Folder `img/dfbooking/` musi mieć prawa zapisu. Sprawdź też rozmiar (maks. 5 MB) i format.

### Adres strony rezerwacji zwraca błąd 404

Włącz przyjazne adresy URL w **Preferencje > Ruch i SEO** i wyczyść pamięć podręczną.
