ByteWave
Індивідуальне ПЗ · WordPress · WooCommerce

M15 Catering — повний модуль бронювання кейтерингу для WordPress

Для ресторану M15 Sopot ми створили дедикований модуль кейтерингу для WordPress, який обробляє повний цикл бронювання — від першого кліку клієнта, через вибір меню в 12-16 панелях конфігуратора, калькулятор цін у реальному часі з ПДВ, інтеграцію з Paynow, автоматичні листи, до бронювання дати в календарі доступності. Три окремі конфігуратори: весілля, сімейні події, корпоративні події. У продакшні під /rezerwacja-cateringu/.

Тривалість проєкту: 5 місяців
Відкрити проєкт: m15.sopot.pl/rezerwacja-cateringu/

Клієнт та бізнес-контекст

M15 Sopot — гастро-рекреаційний комплекс на пляжі Сопота, який окрім ресторану та саун надає кейтерингові послуги для великих подій: весілля, дні народження, причастя, корпоративні події, поминки. Клієнт потребував системи онлайн-бронювання кейтерингу, що замінила б ручні розрахунки телефоном та email.

Раніше кожне бронювання виглядало так: клієнт телефонував, описував вимоги, працівник M15 рахував кошторис у Excel, надсилав email, клієнт надсилав корекції. Цикл тривав 2-5 днів. M15 хотів системи, що дозволяє клієнту самостійно сконфігурувати кейтеринг за 15-30 хвилин онлайн.

Додатково система мала інтегруватися з існуючим сайтом M15, обробляти GDPR, генерувати замовлення в WooCommerce та блокувати дні в календарі.

Виклик

Виклик

Кейтеринг — не класичний продукт. Весілля вимагає рішень про тип меню, 3 тири закусок, супи, буфети, салати, десерти, Open Bar пакети, дитяче меню в 2 вікових групах. Загалом ~50 панелей рішень з 100+ полями.

Найскладніше: калькулятор цін у реальному часі — кожна зміна в одному з 50 панелей має миттєво перерахувати весь кошторис з урахуванням дітей, сервісу 10%, ПДВ 8%/23%, мінімум 10 000 PLN.

Третя вимога — GDPR та податкове право: 3 обов'язкові чекбокси, audit trail (IP, User-Agent, timestamp), валідація NIP, інтеграція з Paynow.

Конкретні вимоги

  • 3 окремі конфігуратори: весілля (12 панелей), сімейні події (12), корпоративні події (16 з ПДВ)
  • Калькулятор цін у реальному часі зі sticky sidebar
  • Логіка дітей: 0-3 безкоштовно, 3-10 з 50% опцією
  • Сервіс 10% з різним обсягом
  • ПДВ 8%/23% з пропорційним сервісом
  • Валідація NIP алгоритмом контрольної суми
  • Календар доступності в адмін-панелі
  • Paynow API з force_all_paynow_gateways фільтром
  • Manual approval для corporate lunch
  • Ідемпотентність листів
  • GDPR audit trail
  • Клікабельна навігація кроків + localStorage state
  • WooCommerce HPOS

5-місячний процес реалізації

Розмір проєкту вимагав систематичного підходу в 5 фазах.

01

Discovery та аналіз цінових документів

3 тижні

Воркшопи з M15, аналіз ~30 PDF-сторінок з цінами пакетів, визначення конфігураторів та flow.

02

UX/UI дизайн + інтерактивний прототип

4 тижні

Дизайн 3 конфігураторів з панеллю навігації, sticky sidebar з калькулятором.

03

Core розробка: 3 конфігуратори + калькулятор

8 тижнів

Реалізація в PHP 8 + JavaScript ES6+ на WordPress + WooCommerce. localStorage state manager.

04

Інтеграції: Paynow, WooCommerce, календар, листи

4 тижні

Paynow API, WooCommerce замовлення, FullCalendar.js, система 2 листів.

05

GDPR, адмін-панель, тести, деплой

3 тижні

GDPR audit trail, custom meta box, сторінка регламенту, повні E2E тести, продакшн-деплой.

Рішення

Технічне рішення

Стек: WordPress + WooCommerce HPOS + custom plagin (PHP 8) + JavaScript ES6+ + FullCalendar.js + flatpickr + Paynow API. Plagin вбудовується в WooCommerce без порушення роботи магазину — фільтри активні лише для замовлень з `_m15_catering_type` мета.

Архітектура калькулятора цін базується на reactive state manager в localStorage — кожна зміна оновлює state, що пропагується до sticky sidebar.

Найскладніший елемент: пропорційний розподіл сервісу 10% для ПДВ 8%/23% у корпоративних подіях. Їжа 8%, алкоголь 23%, сервіс 10% розподілений пропорційно.

Чому WordPress plagin, а не окремий додаток?

M15 вже має сайт на WordPress + WooCommerce. Plagin вбудовується нативно.

Чому лише Paynow PBL, а не BLIK і картки?

BLIK і картки мають ліміти сум, недостатні для весільного кейтерингу.

Чому state у localStorage, а не серверна сесія?

Клієнт заповнює 50 панелей 15-30 хвилин. localStorage працює на стороні клієнта.

Чому авто-блокування, але ручне має пріоритет?

Авто-блокування запобігає дубльованим бронюванням. Але іноді M15 потребує блокування з інших причин.

Ключові функції

Plagin покриває повний цикл життя замовлення кейтерингу.

01

3 дедиковані конфігуратори (весілля, сімейні, корпоративні)

Весілля: 12 панелей. Сімейні: 12 панелей. Корпоративні: 16 панелей з ПДВ-рахунком.

02

Калькулятор цін у реальному часі в sticky sidebar

Кожна зміна миттєво перераховує весь кошторис.

03

Логіка цін для дітей

Весілля: 0-3 безкоштовно або 170 PLN, 3-10 з 50% опцією. Корпоративні: 2 опції × 170 PLN.

04

ПДВ 8%/23% з пропорційним сервісом

Корпоративні події: їжа 8%, алкоголь 23%, сервіс 10% розподілений пропорційно.

05

Календар доступності (адмін + клієнт)

FullCalendar.js в адмін-панелі з ручним блокуванням + авто-блокуванням.

06

Інтеграція Paynow API (лише PBL)

Фільтр активний лише для кейтерингу. 10% передоплата або повна оплата.

07

Manual approval для corporate lunch

On-hold статус для замовлень, що потребують підтвердження.

08

Система листів (клієнт + ресторан)

Лист клієнту негайно + другий після оплати. Лист на marketing@m15.sopot.pl з повним розписом.

09

WooCommerce HPOS

Сумісність з найновішою архітектурою WooCommerce.

10

GDPR + audit trail

3 обов'язкові чекбокси з audit trail (IP, User-Agent, timestamp).

11

Клікабельна навігація + localStorage

Панель навігації кроків клікабельна в обох напрямках.

12

Додаткові послуги (DJ, намет, транспорт, меблі)

DJ, намет 4 розміри, транспорт 3 рівні, обслуговування, меблі 10 позицій.

Технологічний стек

Plagin базується на перевіреному стеку WordPress + WooCommerce.

WordPress 6.x
CMS база з існуючим сайтом M15
WooCommerce HPOS
High Performance Order Storage
PHP 8.x
Backend плагіна, валідація, цінова логіка, Paynow
JavaScript ES6+
Frontend конфігуратора, real-time калькулятор, state manager
FullCalendar.js 6.1.11
Календар доступності в адмін-панелі
flatpickr
Date picker на стороні клієнта
Paynow API
Платіжний шлюз PBL
WP Mail SMTP
Надійна відправка листів
LiteSpeed Cache
Excludes для сторінки кейтерингу
localStorage API
Персистенція вибору клієнта
Custom WooCommerce hooks/filters
Інтеграція без порушення роботи магазину

Результати

Plagin впроваджено у продакшн на m15.sopot.pl/rezerwacja-cateringu/ і обробляє повний flow бронювання.

З перспективи M15 три ефекти найважливіші: (1) редукція циклу бронювання з 2-5 днів до 15-30 хвилин, (2) автоматизація бухгалтерії через WooCommerce замовлення, (3) усунення помилок ціноутворення.

Plagin обробляє і нетипові сценарії: поминки, корпоративна подія з ПДВ-рахунком, весілля з 50 дітьми. Всі сценарії E2E протестовані.

Що далі

Plagin активно розвивається — версія v5.53.3 — поточний продакшн. Плани: автоматичні пропозиції пакетів, POS-інтеграція, експорт календаря.

Архітектура plagina універсальна для адаптації до інших ресторанів. ByteWave розглядає реліз як комерційний продукт.

Маєте ідею проєкту?

Поговоримо про те, як ми можемо її реалізувати.

Зв'яжіться з нами