Fairmas
FAIRMAS REPORTS Обидва файли рахуються одним методом `BuildFairmasReport` — логіка підрахунку ідентична, відрізняються лише період і набір даних. Наслідок: будь-яка помилка в метриці автоматично сидить в обох файлах. Джерела даних: Guests : У звіт беруться лише статуси Booking / Living / Departured Payments : Беруться !p.v_IsCanceled St.Rooms: Зріз стану номерів на конкретну дату, агрегат по типам номерів. Дає місткість (скільки всього/на ремонті/у продажу) St.RoomsGuests: Деталізація до рівня конкретна бронь - номер - ніч. Наразі місткість для RoomSold та RoomArrival береться з St.RoomsGuests:
4 кроки для кожного дня: 1)Складаємо по всіх типах номерів цієї дати : - TotalRooms = сума `RoomsInExploitation` (весь фонд в експлуатації, не залежить від броней); - OOO = сума `RoomsOnRepairNotSale` (на ремонті, продати не можна); - In-sale (TotalRoomsAvailable) = TotalRooms − OOO. OOS = 0 - хардкод. 2) Проходить усі оплати дня й розкладає: Платить гість - його сегмент. Не гість - retail_direct - dwelling → Logis (проживання); - eat→ F&B (харчування); - citytax → міський податок → викидається повністю (не виручка готелю); - решта → Other. У CSV колонки виручки - вже за вирахуванням податків. 3) Два режими: 1.`retail_direct` і `retail_indirect`. 2.`BySource` Скільки різних джерел фігурувало (Online reservation, YandexTravel…) - стільки рядків-сегментів. 4)RoomsSold = округл(Σ `CoefficientGuestRoomsOccupied`) по записах гостей сегмента; - RoomsArrival = округл(Σ v_CoefficientGuestRoomsOccupiedArrival + v_CoefficientGuestRoomsOccupiedEarlyArrival) по записах із заїздом; ← баг (CoefficientGuestRoomsOccupiedArrival вже містить CoefficientGuestRoomsOccupiedEarlyArrival); - Guests = Σ (`Client_Count + Child_Count`) по всіх записах сегмента; - GuestsArrival = те саме, але лише по записах із заїздом; ОКРУГЛЕННЯ ВИКОРИСТОВУЄТЬ TOEVEN ( 1.5 -> 2, 4.5 -> 4) Уся арифметика номерів стоїть на трьох коефіцієнтах із `st_RoomsGuests` | GuestID | RoomID | Occupied | Arrival | EarlyArrival |
| 40 | 96 | 1.5000 | 1.5000 | 0.5000 | | 6 | 156 | 1.0000 | 1.0000 | 0.0000 |