Панель «Запрос» карточки «Тип программ лояльности»
Панель «Запрос» карточки «Тип программ лояльности»

Панель «Запрос» содержит текст SQL-запроса к базе данных, используемого при формировании данных для расчета размера скидки (наценки):

Рисунок 5.199. Панель «Запрос»


На панели расположено многострочное текстовое поле для ввода SQL-запроса.

Информация, необходимая для расчета размера скидки или наценки, содержится в базе данных комплекса. Отбор данных, необходимых для расчета конкретной скидки или наценки, производится с помощью запросов, написанных на языке Transact SQL (SQL-запросов).

Рисунок 5.200. Панель «Запрос» с контекстным меню


Контекстное меню поля на панели «Запрос» содержит команду «Тест запроса». Команда доступна только если в поле панели «Запрос» введен текст запроса. С помощью этой команды текст запроса проверяется на наличие ошибок, и по результатам проверки открывается окно с результатом выполнения запроса.

При тестировании запроса необходимо выбрать значения параметров фильтрации на всех шагах фильтра. После успешного выполнения запроса открывается окно сообщения об успешном выполнении запроса.

Рисунок 5.201. Окно сообщения об успешном выполнении запроса


Если в процессе выполнения запроса были обнаружены ошибки в запросе, то выводится окно сообщения об ошибке.

Рисунок 5.202. Окно сообщения об ошибке в запросе


Перечень параметров, которые можно использовать в запросе

CREATE TABLE #Guest(
             g_ID                       UNIQUEIDENTIFIER                        -- ID гостевого счета
       )
       
       CREATE TABLE #Orders(
             ordr_ID                    UNIQUEIDENTIFIER PRIMARY KEY,           -- ID заказа
             ordr_orst_ID INT,                                                  -- ID статуса заказа
             ordr_Date                  DATETIME,                               -- Дата заказа
             ordr_sprv_ID               UNIQUEIDENTIFIER NULL,                  -- ID привилегии заказа
             ordr_Time                  INT,                                    -- 
             ordr_WeekTime              INT                                     --
       )

       CREATE TABLE #OrderItems ( -- элементы заказа
             -- информационные и используемые при добавлении позиций поля
             i_ID                       UNIQUEIDENTIFIER PRIMARY KEY,           -- ID элемента заказа
             i_ordr_ID                  UNIQUEIDENTIFIER,                       -- ID заказа
             i_PriceOriginal            NUMERIC(18,4),                          -- Цена без скидок и надбавок
             -- информационные поля
             i_Date                     DATETIME,                               -- Дата регистрации заказа
             i_pcit_ID                  UNIQUEIDENTIFIER,                       -- ID элемента пречека
             i_LastPriceDiscount        NUMERIC(18,4) NULL,                     -- Сумма ранее начисленной скидки. Выставляется только если i_pcit_ID не NULL
             i_LastPriceMargin          NUMERIC(18,4) NULL,                     -- Сумма ранее начисленной надбавки. Выставляется только если i_pcit_ID не NULL
             i_LastPrice                NUMERIC(18,4) NULL,                     -- Цена после ранее начисленной скидки/надбавки. Выставляется только если i_pcit_ID не NULL
             -- информационные, изменяемые и используемые при добавлении позиций поля
             i_master_ID                UNIQUEIDENTIFIER,                       -- ID элемента родителя
             i_mitm_ID                  UNIQUEIDENTIFIER,                       -- ID элемента прейскуранта
             i_slgr_ID                  UNIQUEIDENTIFIER,                       -- ID отдела продаж
             i_mvtp_ID                  UNIQUEIDENTIFIER,                       -- ID единицы измерения прейскуранта
             i_Order                    INT,                                    -- Порядок
             i_Count                    INT,                                    -- Количество
             i_Volume                   NUMERIC(18,6),                          -- Объем
             i_PriceDiscount            NUMERIC(18,4) DEFAULT 0,                -- Скидка
             i_PriceMargin              NUMERIC(18,4) DEFAULT 0,                -- Надбавка
             i_VAT                      NUMERIC(18,3) DEFAULT 0,                -- Ставка НДС
             i_SeatNumber               INT NULL,                               -- Номер посадки
             i_Course                   INT NULL,                               -- Курс
             i_Comment                  NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, -- Комментарий
             -- управляющие поля
             i_ModifyAction             INT DEFAULT 1,                          -- 1 - добавить, 2 - изменить, 3 - удалить
             -- служебные поля
             i_Price AS (i_PriceOriginal - i_PriceDiscount 
                    + i_PriceMargin),                                           -- Цена
             i_ForUpdate                BIT DEFAULT 0,                          -- Признак того, что данный элемент надо перерассчитывать
             i_IsPayed                  BIT DEFAULT 0                           -- Признак того, что данный элемент был оплачен
       )

       CREATE TABLE #OrderTimeItems( -- повременные услуги заказа
             -- информационные поля
             t_ID                       UNIQUEIDENTIFIER PRIMARY KEY,           -- ID тарификации повременной услуги заказа
             t_orti_ID                  UNIQUEIDENTIFIER,                       -- ID повременной услуги заказа
             t_ordr_ID                  UNIQUEIDENTIFIER,                       -- ID  заказа 
             t_plac_ID                  UNIQUEIDENTIFIER,                       -- ID места размещения
             t_pcit_ID                  UNIQUEIDENTIFIER,                       -- ID элемента пречека
             t_LastPriceDiscount        NUMERIC(18,4) NULL,                     -- Сумма ранее начисленной скидки. Выставляется только если i_pcit_ID не NULL
             t_LastPriceMargin          NUMERIC(18,4) NULL,                     -- Сумма ранее начисленной надбавки. Выставляется только если i_pcit_ID не NULL
             t_LastPrice                NUMERIC(18,4) NULL,                     -- Цена после ранее начисленной скидки/надбавки. Выставляется только если i_pcit_ID не NULL
             t_PriceOriginal            NUMERIC(18,4),                          -- Цена без скидок и надбавок
             -- информационные и изменяемые поля
             t_master_ID                UNIQUEIDENTIFIER,                       -- ID элемента родителя
             t_mitm_ID                  UNIQUEIDENTIFIER,                       -- ID элемента прейскуранта
             t_slgr_ID                  UNIQUEIDENTIFIER,                       -- ID отдела продаж
             t_mvtp_ID                  UNIQUEIDENTIFIER,                       -- ID единицы измерения прейскуранта
             t_Order                    INT,                                    -- Порядок
             t_DateBegin                DATETIME,                               -- Дата начала действия 
             t_Duration                 INT,                                    -- Продолжительность
             t_PriceDiscount            NUMERIC(18,4) DEFAULT 0,                -- Скидка
             t_PriceMargin              NUMERIC(18,4) DEFAULT 0,                -- Надбавка
             t_VAT                      NUMERIC(18,3) DEFAULT 0,                -- Ставка НДС
             -- управляющие поля
             t_ModifyAction             INT DEFAULT 1,                          -- 1 - добавить, 2 - изменить, 3 - удалить
             -- служебные поля
             t_Price AS (t_PriceOriginal - t_PriceDiscount + t_PriceMargin),    -- Цена
             t_ForUpdate                BIT DEFAULT 0,                          -- Признак того, что данный элемент надо перерассчитывать
             t_IsPayed                  BIT DEFAULT 0                           -- Признак того, что данный элемент был оплачен
       )

       CREATE TABLE #GuestDiscountPointOperations( -- начисляемые баллы
             p_ID                       UNIQUEIDENTIFIER PRIMARY KEY,           -- ID записи
             p_dspt_ID                  UNIQUEIDENTIFIER,                       -- ID типа баллов
             p_Value                    INT DEFAULT 0                           -- Количество баллов
       )