Ниже даю подробное решение и готовую шаблонную таблицу расчётов. Я объясняю шаги и приводят примеры на два сценария, чтобы можно было подставить ваши реальные данные.
Пояснение по условиям
- Стоимость ночи:
- один местный номер: 33 USD за ночь
- двухместный номер: 55 USD за ночь
- Скидка за каждый день проживания свыше десятого: 15% с каждой ночи после 10-й. Я
беру интерпретацию: на дни 11, 12, ... применяется фиксированная скидка 15% к этой ночи (то есть цена на день 11–го и последующие становится 85% от базовой цены за ночь).
- Доплата за бронь, если номер был заранее забронирован клиентом: 10% от средней арифметической стоимости за номер (для одного и двух мест). Средняя цена = (33 + 55) / 2 = 44 USD. 10% от неё = 4.4 USD.
- Текущий курс USD к локальной валюте (например к рублю) — нужен для перевода итоговой суммы в локальную валюту.
Шаги расчета (общая формула)
- Пусть N = количество ночей, P = цена одной ночи по выбранному номеру (33 или 55 USD).
- Цена за ночь после скидки:
- дни 1–10: цена = P
- дни 11–N: цена = P × 0.85
- Итого за проживание (USD):
- TotalStayUSD = min(N, 10) × P + max(N − 10, 0) × (P × 0.85)
- Доплата за бронь (USD):
- BookingFeeUSD = 0, если бронь не была заранее сделана
- BookingFeeUSD = 4.4, если бронь была заранее
- Итого к оплате (USD):
- GrandTotalUSD = TotalStayUSD + BookingFeeUSD
- Итого к оплате в локальной валюте:
- GrandTotalLocal = GrandTotalUSD × Rate (Rate — текущий курс USD к локальной валюте)
Пример 1 (иллюстративно): 12 ночей, один местный номер, без брони, курс 1 USD = 85 локальных единиц
- N = 12, P = 33
- TotalStayUSD = 10×33 + 2×(33×0.85) = 330 + 2×28.05 = 386.10 USD
- BookingFeeUSD = 0
- GrandTotalUSD = 386.10 USD
- GrandTotalLocal = 386.10 × 85 = 32 818.50 локальных
Таблица расчётов (пример)
День | Цена за ночь (USD) | Примененная скидка | Итого за ночь (USD)
1 | 33.00 | 0% | 33.00
2 | 33.00 | 0% | 33.00
3 | 33.00 | 0% | 33.00
4 | 33.00 | 0% | 33.00
5 | 33.00 | 0% | 33.00
6 | 33.00 | 0% | 33.00
7 | 33.00 | 0% | 33.00
8 | 33.00 | 0% | 33.00
9 | 33.00 | 0% | 33.00
10 | 33.00 | 0% | 33.00
11 | 28.05 | 15% | 28.05
12 | 28.05 | 15% | 28.05
Итого за проживание (USD): 386.10
Доплата за бронь (USD): 0
Итого к оплате (USD): 386.10
Курс: 1 USD = 85 локальных
Итого к оплате (локальная валюта): 32 818.50
Пример 2: те же условия, но номер был заранее забронирован (12 ночей, один местный номер, бронь есть)
- BookingFeeUSD = 4.40
- GrandTotalUSD = 386.10 + 4.40 = 390.50
- GrandTotalLocal = 390.50 × 85 = 33 192.50 локальных
Таблица расчётов (пример с бронью)
День | Цена за ночь (USD) | Примененная скидка | Итого за ночь (USD)
1 | 33.00 | 0% | 33.00
2 | 33.00 | 0% | 33.00
3 | 33.00 | 0% | 33.00
4 | 33.00 | 0% | 33.00
5 | 33.00 | 0% | 33.00
6 | 33.00 | 0% | 33.00
7 | 33.00 | 0% | 33.00
8 | 33.00 | 0% | 33.00
9 | 33.00 | 0% | 33.00
10 | 33.00 | 0% | 33.00
11 | 28.05 | 15% | 28.05
12 | 28.05 | 15% | 28.05
Итого за проживание (USD): 386.10
Доплата за бронь (USD): 4.40
Итого к оплате (USD): 390.50
Курс: 1 USD = 85 локальных
Итого к оплате (локальная валюта): 33 192.50
Как это применяется к вашей задаче
- Чтобы заполнить таблицу для конкретного клиента, мне нужны ваши реальные данные:
- тип номера: одинместный или двухместный
- длительность пребывания в ночах (N)
- была ли бронь заблаговременно (да/нет)
- текущий курс USD к вашей локальной валюте (Rate)
- Если хотите, могу подставить ваши цифры и выдать готовую таблицу под ваш сценарий.
Дополнительные варианты
- Можно рассмотреть другую интерпретацию скидки за дни сверх 10: например, общая скидка фиксированная 15% от общей суммы за весь период (>10 дней). В таком случае формула TotalStayUSD будет: TotalStayUSD = 10×P + (N−10)×P × (1−0.15) = 10×P + (N−10)×P×0.85, который на практике даёт тот же результат, как в примере выше, если мы применяем скидку по каждой ночи после 10-й. Но если ваша идея другая (например, 15% скидки на всю сумму за каждый сверхдесятый день суммарно), скажите — пересчитаю под ваш вариант.
Готов заполнить точный расчёт, если:
- скажете номер ночей (N) и тип номера,
- подтвердите, был ли бронирование заранее (да/нет),
- пришлёте текущий курс USD к вашей локальной валюте (Rate).
Если хотите, могу также сделать таблицу в виде CSV или Excel-файла для удобного импорта.