Require explicit manager confirmation before recording prepayment

This commit is contained in:
OpenClaw Assistant
2026-02-23 11:54:36 +00:00
parent a169cbc446
commit de53a1f8c1
3 changed files with 9 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ _Learn about the person you're helping. Update this as you go._
- При оформлении брони обязательно спрашивать комментарий клиента; если комментарий есть, фиксировать его в данных брони (журналы/уведомление). - При оформлении брони обязательно спрашивать комментарий клиента; если комментарий есть, фиксировать его в данных брони (журналы/уведомление).
- Как только гость забронировал/зафиксировал бронь — обязательно отправлять гостю в VK файл брони. - Как только гость забронировал/зафиксировал бронь — обязательно отправлять гостю в VK файл брони.
- Дети до 1 года в количестве гостей указываются, но в оплату не включаются. - Дети до 1 года в количестве гостей указываются, но в оплату не включаются.
- Предоплату в бронь вносить только после явного подтверждения от Виталия. Без подтверждения предоплата = 0 и статус «Предварительное».
## Context ## Context

View File

@@ -44,6 +44,7 @@ python3 {baseDir}/scripts/calc_quote.py \
- Если в прайсе нет точного совпадения — предложить ближайший доступный тариф и явно написать это. - Если в прайсе нет точного совпадения — предложить ближайший доступный тариф и явно написать это.
- Питание не включено: не обещать «завтрак/полупансион/всё включено» и не запрашивать выбор питания. - Питание не включено: не обещать «завтрак/полупансион/всё включено» и не запрашивать выбор питания.
- Дети до 1 года: учитывать в составе гостей, но не включать в платный расчёт. - Дети до 1 года: учитывать в составе гостей, но не включать в платный расчёт.
- Предоплату вносить только после явного подтверждения от менеджера/Виталия. Без такого подтверждения предоплата не ставится, бронь остаётся «Предварительное».
- Если гостей много или не хватает мест в одном номере — предлагать комбинированное размещение в нескольких номерах. - Если гостей много или не хватает мест в одном номере — предлагать комбинированное размещение в нескольких номерах.
- 5 гостей: вариант 3+2 - 5 гостей: вариант 3+2
- 6 гостей: варианты 3+3 или 2+2+2 - 6 гостей: варианты 3+3 или 2+2+2
@@ -163,6 +164,7 @@ python3 {baseDir}/scripts/save_booking.py \
--room "Двухкомнатный номер" \ --room "Двухкомнатный номер" \
--total "54 600 ₽" \ --total "54 600 ₽" \
--prepay "7 800 ₽" \ --prepay "7 800 ₽" \
--payment-confirmed-by-manager \
--booking-status booked \ --booking-status booked \
--notes "трансфер нужен" \ --notes "трансфер нужен" \
--notify --notify

View File

@@ -195,6 +195,7 @@ def main():
p.add_argument("--room", required=True, help="Категория номера") p.add_argument("--room", required=True, help="Категория номера")
p.add_argument("--total", required=True, help="Итоговая сумма") p.add_argument("--total", required=True, help="Итоговая сумма")
p.add_argument("--prepay", required=True, help="Сумма предоплаты") p.add_argument("--prepay", required=True, help="Сумма предоплаты")
p.add_argument("--payment-confirmed-by-manager", action="store_true", help="Явное подтверждение менеджера на внесение предоплаты")
p.add_argument("--notes", default="", help="Комментарий") p.add_argument("--notes", default="", help="Комментарий")
p.add_argument("--file", default="/home/openclaw/.openclaw/workspace/skills/paradiz/data/bookings.txt") p.add_argument("--file", default="/home/openclaw/.openclaw/workspace/skills/paradiz/data/bookings.txt")
p.add_argument("--notify", action="store_true", help="Отправить Telegram-уведомление") p.add_argument("--notify", action="store_true", help="Отправить Telegram-уведомление")
@@ -214,9 +215,12 @@ def main():
day_price = f"{(total_num / nights):,.0f}".replace(",", " ") if nights else "" day_price = f"{(total_num / nights):,.0f}".replace(",", " ") if nights else ""
# Жёсткое правило по бизнес-логике: # Жёсткое правило по бизнес-логике:
# - если предоплаты нет (<= 0) -> Предварительное # - предоплату можно вносить только после явного подтверждения менеджера
# - если предоплата есть (> 0) -> Забронировано # - если подтверждения нет, предоплата считается 0 и статус "Предварительное"
prepay_num = _extract_amount(args.prepay) prepay_num = _extract_amount(args.prepay)
if prepay_num > 0 and not args.payment_confirmed_by_manager:
raise SystemExit("Предоплата > 0 запрещена без флага --payment-confirmed-by-manager")
booking_status = "Забронировано" if prepay_num > 0 else "Предварительное" booking_status = "Забронировано" if prepay_num > 0 else "Предварительное"
entry = { entry = {