# BofExpSvr Экспорт прогнозируемых услуг - Справочник колонок

## 🔄 История изменений (Changelog)

| Версия | Дата       | Автор | Изменения                                                                                                                      |
| ------ | ---------- | ----- | ------------------------------------------------------------------------------------------------------------------------------ |
| 1.1    | 2026-02-26 | FSS   | **Добавлены колонки НДС!** Добавлены колонки VAT_RATE и VAT_DESC для отображения ставки НДС в основной строке (позиции 60-61). |
| 1.0    | 2026-02-25 | FSS   | Первоначальная версия (73 колонки).                                                                                            |

---

## Общее описание

Данный документ описывает **75 колонок** в файле экспорта прогнозируемых услуг (`v8cfYYMMDD.csv`). Экспорт основан на таблице YPOS (Прогноз дохода) и содержит будущие прогнозируемые услуги по бронированиям.

> ⚠️ **ВАЖНО:** С версии 1.1 добавлены колонки `VAT_RATE` и `VAT_DESC` для отображения ставки НДС непосредственно в строке услуги (не требуется отдельный запрос налоговых строк).

## Источник данных

- **Таблица:** YPOS (Прогноз дохода)
- **Фильтр по дате:** `yres_saledate` = дата экспорта (дата продажи брони)
- **Фильтр по типу:** `zdco_cdt = 1` (только начисления/услуги)
- **Фильтр по статусу:** `yres_resstatus <> 3` (исключаются отмененные бронирования)
- **JOIN:** `LEFT JOIN ztcd tz ON ft.ypos_ztcd_id = tz.ztcd_id` (для получения ставки НДС)

### Статусы бронирований (YRES_RESSTATUS)

| Код | Статус     | Описание                                  |
| --- | ---------- | ----------------------------------------- |
| 0   | Tentative  | Бронирование подтверждено                 |
| 1   | Definitive | Гарантированное бронирование              |
| 3   | Cancelled  | **Отмененное бронирование (исключается)** |

В экспорт попадают только бронирования со статусами 0 и 1.

---

## Справочник колонок

| №      | Код          | Описание                    | Источник                             | Примечания                                |
| ------ | ------------ | --------------------------- | ------------------------------------ | ----------------------------------------- |
| 1      | HOTEL        | Идентификатор отеля         | Константа 'V8PMS'                    | Фиксированное значение                    |
| 2      | TSQID        | ID транзакции               | YPOS_ID                              | Уникальный идентификатор                  |
| 3      | TPTID        | ID разбивки транзакции      | YPOS_ID                              | Для прогноза = TSQID                      |
| 4      | TACID        | ID счета транзакции         | YPOS_ID                              | Для прогноза = TSQID                      |
| 5      | TCODE        | Код подразделения           | ZDCO_NUMERICDESC                     | Код услуги (напр. 1200, 2062)             |
| 6      | TTEXT        | Наименование подразделения  | ZDCO_LONGDESC                        | Название услуги (макс 30 символов)        |
| 7      | TDACR        | Дата учета                  | YPOS_DATE                            | Дата прогноза                             |
| 8      | TDABU        | Дата начисления             | YPOS_DATE                            | Аналогично TDACR                          |
| 9      | TTIME        | Время транзакции            | Константа '00:00:00'                 | Не применимо для прогноза                 |
| 10     | TAMNT        | Сумма итого                 | YPOS_UNITPRICE \* YPOS_QUANTITY      | Сумма нетто                               |
| 11     | TUPRI        | Цена за единицу             | YPOS_GROSSUNITPRICE                  | Цена брутто за единицу                    |
| 12     | TQNTY        | Количество                  | YPOS_QUANTITY                        | Количество единиц                         |
| 13     | TCURR        | Валюта                      | ZCUR_ISO3                            | Код валюты (напр. RUB)                    |
| 14     | TEXCH        | Курс валюты                 | Константа 1                          | Фиксировано для одной валюты              |
| 15     | TBWNO        | Номер окна счета            | Пусто                                | Не применимо для прогноза                 |
| 16     | FSQID        | ID последовательности фолио | Пусто                                | Не применимо для прогноза                 |
| 17     | FOLDA        | Дата фолио                  | Пусто                                | Не применимо для прогноза                 |
| 18     | PYRID        | ID плательщика              | YPOS_XCMS_ID                         | ID профиля плательщика                    |
| 19     | PYRAR        | Счет плательщика            | Пусто                                | Недоступно в YPOS                         |
| 20     | PYRNM        | Имя плательщика             | XCMS_NAME1                           | Имя гостя/компании                        |
| 21     | PYRTY        | Тип плательщика             | XCMS_TYPE                            | 'COMPANY' или 'D' (Прямой)                |
| 22     | GUEID        | ID гостя                    | YPOS_XCMS_ID                         | Аналогично PYRID                          |
| 23     | GUEAR        | Счет гостя                  | Пусто                                | Недоступно в YPOS                         |
| 24     | GUENM        | Имя гостя                   | XCMS_NAME1                           | Имя гостя                                 |
| 25     | GUETY        | Тип гостя                   | XCMS_TYPE                            | 'COMPANY' или 'D'                         |
| 26     | XRSID        | Внешний ID бронирования     | YPOS_YRES_ID                         | ID бронирования                           |
| 27     | RESID        | ID бронирования             | YPOS_YRES_ID                         | Аналогично XRSID                          |
| 28     | RARDA        | Дата заезда                 | YRES_ACTARRTIME                      | Фактическая дата заезда                   |
| 29     | RARTI        | Время заезда                | YRES_ACTARRTIME                      | Фактическое время заезда                  |
| 30     | RDPDA        | Дата выезда                 | YRES_ACTDEPTIME                      | Фактическая дата выезда                   |
| 31     | RDPTI        | Время выезда                | YRES_ACTDEPTIME                      | Фактическое время выезда                  |
| 32     | RRATC        | Код тарифа                  | YRCH_SHORTDESC                       | Код тарифа                                |
| 33     | RRMNO        | Номер комнаты               | YRMS_SHORTDESC                       | Присвоенный номер                         |
| 34     | RMKTC        | Рыночный код                | XCMA_SHORTDESC                       | Сегмент рынка                             |
| 35     | RSRCC        | Код источника               | Константа 'NOT USED'                 | Не применимо                              |
| 36     | RCFNO        | Номер подтверждения         | YPOS_YRES_ID                         | ID бронирования                           |
| 37     | URCNO        | Номер URC                   | Пусто                                | Не применимо                              |
| 38     | CHQNO        | Номер чека                  | Пусто                                | Не применимо                              |
| 39     | FOLNO        | Номер фолио                 | Пусто                                | Не применимо                              |
| 40     | CSHNO        | Номер кассира               | Пусто                                | Не применимо                              |
| 41     | TRAID        | ID турагентства             | Пусто                                | Недоступно в YPOS                         |
| 42     | TRAAR        | Счет турагентства           | Пусто                                | Недоступно в YPOS                         |
| 43     | TRANM        | Имя турагентства            | Пусто                                | Недоступно в YPOS                         |
| 44     | COMID        | ID компании                 | Пусто                                | Недоступно в YPOS                         |
| 45     | COMAR        | Счет компании               | Пусто                                | Недоступно в YPOS                         |
| 46     | COMNM        | Название компании           | Пусто                                | Недоступно в YPOS                         |
| 47     | SOUID        | ID источника                | Пусто                                | Недоступно в YPOS                         |
| 48     | SOUAR        | Счет источника              | Пусто                                | Недоступно в YPOS                         |
| 49     | SOUNM        | Название источника          | Пусто                                | Недоступно в YPOS                         |
| 50     | GROID        | ID группы                   | Пусто                                | Недоступно в YPOS                         |
| 51     | GROAR        | Счет группы                 | Пусто                                | Недоступно в YPOS                         |
| 52     | GRONM        | Название группы             | Пусто                                | Недоступно в YPOS                         |
| 53     | XGUID        | Внешний ID гостя            | YPOS_XCMS_ID                         | Аналогично GUEID                          |
| 54     | XGUAR        | Внешний счет гостя          | Пусто                                | Недоступно                                |
| 55     | XGUNM        | Внешнее имя гостя           | XCMS_NAME1                           | Имя гостя                                 |
| 56     | XGUTY        | Внешний тип гостя           | XCMS_TYPE                            | 'COMPANY' или 'D'                         |
| 57     | XRMNO        | Внешний номер комнаты       | YRMS_SHORTDESC                       | Аналогично RRMNO                          |
| 58     | TMGRP        | Группа налогов              | ZDMG_LONGDESC                        | Описание налоговой группы                 |
| 59     | TSGRP        | Группа услуг                | ZDCG_LONGDESC                        | Описание группы услуг                     |
| **60** | **VAT_RATE** | **Ставка НДС**              | **ZTCD_VATPERCENT**                  | **Процент ставки ( напр. "0", "20")**     |
| **61** | **VAT_DESC** | **Описание НДС**            | **ZTCD_NAME**                        | **Название (напр. "Без НДС", "НДС 20%")** |
| 62     | TAGRO        | Сумма брутто итого          | YPOS_GROSSUNITPRICE \* YPOS_QUANTITY | Сумма брутто                              |
| 63     | TANET        | Сумма нетто итого           | YPOS_UNITPRICE \* YPOS_QUANTITY      | Сумма нетто                               |
| 64     | TGACR        | Сумма оплаты итого          | Пусто                                | Не применимо                              |
| 65     | TGADE        | Сумма депозита итого        | Пусто                                | Не применимо                              |
| 66     | TPKCR        | Кредит пакета               | Пусто                                | Не применимо                              |
| 67     | TPKDE        | Дебет пакета                | Пусто                                | Не применимо                              |
| 68     | CRDTY        | Тип кредита                 | Пусто                                | Недоступно                                |
| 69     | CRDID        | ID кредита                  | Пусто                                | Недоступно                                |
| 70     | TSQZ0        | Ссылка на ID транзакции     | YPOS_ID                              | Аналогично TSQID                          |
| 71     | TSQZ1        | ID артикула                 | Пусто                                | Недоступно                                |
| 72     | TSQZ2        | Описание артикула           | Пусто                                | Недоступно                                |
| 73     | TSQZZ        | Ссылка транзакции           | YPOS_ID                              | Аналогично TSQID                          |
| 74     | EXPDA        | Дата экспорта               | SYSDATE                              | Текущая дата                              |
| 75     | EXPTI        | Время экспорта              | SYSDATE                              | Текущее время                             |

---

## Часто используемые коды услуг

| Код  | Описание                    |
| ---- | --------------------------- |
| 1000 | Проживание                  |
| 1200 | Проживание (полный пансион) |
| 2062 | Завтрак (полный пансион)    |
| 2262 | Ужин (полный пансион)       |
| 6162 | Оздоровительная программа   |

---

## Важные замечания

1. **Поля дат:** RARDA, RDPDA могут быть пустыми для будущих бронирований, которые еще не заселились.

2. **Нулевые суммы:** Некоторые записи (особенно код 1000 - Проживание) могут показывать TAMNT = 0, потому что фактическая сумма рассчитывается по тарифу во время заселения, а не хранится в YPOS.

3. **Номер комнаты (RRMNO):** Может быть пустым для бронирований без присвоенного номера.

4. **Поля плательщика/гостя:** Так как YPOS хранит только YRES_ID и XCMS_ID, некоторые поля заполняются из информации профиля бронирования.

5. **⚠️ НОВОЕ: Колонки VAT_RATE и VAT_DESC (v1.1+):**
   - Эти колонки добавлены для удобства анализа ставки НДС непосредственно в строке услуги.
   - Источник: `LEFT JOIN ztcd tz ON ft.ypos_ztcd_id = tz.ztcd_id`
   - Если `YPOS_ZTCD_ID` пуст, выводится значение по умолчанию "(нет ставки)".
   - Пример значений: "0", "20", "Без НДС", "НДС 20%"

---

## Именование файлов

```
v8cfYYMMDD.csv
```

Где:

- `v8` - префикс PMS
- `cf` - код прогнозируемых услуг
- `YYMMDD` - дата в формате ГодМесяцДень (напр. 260225 = 2026-02-25)

---

## Связанные файлы

- `BofExpSvr/v80forecast.txt` - Основной SQL-запрос (с VAT колонками)
- `BofExpSvr/v84forecast.txt` - Условие фильтра по дате
- `BofExpSvr/bofexpsvr.cmd` - Скрипт запуска
- `forecast_query_for_report.sql` - Проверочный запрос с раздельными колонками
