RU
EN
ГЛАВНАЯ СТРАНИЦА

Гостевой счет

Формирование гостевого счета

Тип

POST

Вызов

/post-guest

Формат возвращаемых данных

{
  "gest_ID": "BFA83CA6-A5C9-8945-94FD-32CB40880933"
} 

Параметры

В секции BODY запроса содержимое гостевого счета в иерархическом виде. В секции HEADER необходимо указать "Content-Type: application/json".

Пример вызова

curl \
  -H "Content-Type: application/json" \
  -d @guest_in.json \ 1
  -o out.json \ 2
  --url "http://89.22.216.169:8090/post-guest"
1

guest_in.json - имя файла с содержимым счета,

2

out.json - имя файла с идентификатором созданного счета.

Пример формирования гостевого счета

  • Гостевой счет на входе:

    {
      "gest_gsst_ID": 0,
      "gest_Comment": ", Сдача с суммы:3000, К 12-00 часам ",
      "gest_DateOpen": "2020-10-12T12:00:00",
      "gest_Count": "20",
      "gest_dvsn_ID": "274013BE-AA55-294F-ADC6-99DE44BEA4E1",
      "gest_ClientPhone": "999999999",
      "gest_Name": "S404095",
    "gest_ClientAddress": "<?xml version='1.0'?>\n<Address>\n <Village Caption='Населенный пункт' Key='True'>Санкт-Петербург</Village>\n <Street Caption='Улица' Key='True'>Ткачей</Street>\n <House Caption='Дом' Key='True'>101</House>\n <Building Caption='Корпус' Key='True'>А</Building>\n <Apartment Caption='Квартира' Key='True'></Apartment>\n <Entrance Caption='Подъезд' Key='True'></Entrance>\n <Floor Caption='Этаж' Key='True'></Floor>\n <Intercom Caption='Домофон' Key='True'></Intercom>\n <Comment Caption='Комментарий'></Comment>\n</Address>",
      "gest_ClientName": "Евгения",
      "gest_IsDelivery": "1",
      "guestDeliveries": {
        "gsdlv_dlvrst_ID": 0,
        "gsdlv_dlvrmt_ID": 1,
        "gsdlv_pytp_ID_Prepaid": "0789C108-6C80-BC47-BB39-A13C7CDDD030",
        "gsdlv_CashAmount": "3000",
        "gsdlv_cncpt_ID": "15761EEA-AD73-BA46-AE1E-5F288CB9BE97",
        "gsdlv_Date": "2020-10-12T10:20:14",
        "gsdlv_IsAutoStart": 0,
        "gsdlv_SendSooner": 0,
        "gsdlv_NeedConfirmation": 1,
        "gsdlv_GeoRegionID": "606",
        "gsdlv_GeoCoordinates": "59.892383, 30.421824"
      },
      "orders": [
        {
          "ordr_orst_ID": 0,
          "ordr_Date": "2020-10-12T10:20:14",
          "ordr_Name": "S404095",
          "orderItems": [
            {
              "orit_mitm_ID": "708E39BB-F1E6-E546-B7A2-4568A30B3FA4",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "480",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            },
            {
              "orit_mitm_ID": "6D572995-2636-194D-ADEF-CFD2A87E288F",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "490",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            },
            {
              "orit_mitm_ID": "0702420B-F65C-BA49-B099-D1870855F990",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "490",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            },
            {
              "orit_mitm_ID": "88F17CAB-4B47-294D-AAFE-D760B47A1540",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "450",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            },
            {
              "orit_mitm_ID": "025D6A2F-9136-FF4E-93D3-912936643268",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "470",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            },
            {
              "orit_mitm_ID": "289066B9-823F-6D4E-A1FA-987BBCEEAAA5",
              "orit_mvtp_ID": "2FD4FA63-12A1-4FAD-B215-607460886D82",
              "orit_Volume": 1,
              "orit_Count": "1",
              "orit_Price": "420",
              "orit_VAT": 0,
              "orit_PriceVat": 0
            }
          ]
        }
      ]
    }
  • Ответ:

    {"gest_ID":"0AF8BD5C-2C23-B54A-9A6A-B64ECA8CEED9"} 

Соглашения

  1. Если приходит заказ со статусом «Зарегистрирован» (ordr_orst_ID = 1), то заказу прописывается ссылка на текущий торговый день подразделения и создается пречек.

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

    • или сохранить гостевой счет в качестве черновика,

    • или переопределить подразделение.

    Пример ошибки:

    {{
      "timestamp": 1501692189085,
      "status": 500,
      "error": "Internal Server Error",
      "exception": "com.tillypad.lib.client.SQLException",
      "message": "[Microsoft][ODBC SQL Server Driver][SQL Server]Проверка что у завершаемого заказа проставлен торговый день и подразделение ",
    
      "path": "/post-guest",
      "errorcode": 130228 1
    } 
    
    1

    Получен код ошибки 130228 (errorcode = 130228), в подразделении не открыт торговый день.

  3. Любое время, которое передается в счет, будет записано в базу данных, как передано, без каких-либо изменений. Если время не передано, будет использовано время сервера приложений, с которым работает сервис.

  4. Чтобы заказ приходил сразу на подразделение, минуя кол-центр, и был в статусе «Ждет начала приготовления» нужно:

    • Чтобы с сайта он приходил в статусе «Ждет подтверждения исполнителя».

    • Чтобы на подразделении-исполнителе была запущена задача обработки статуса «Ждет начала приготовления», которая автоматически переводит счет в статус «Ждет начала приготовления».

    • Чтобы на подразделении-исполнителе была запущена задача обработки статуса «Начали готовить», которая в нужный момент автоматически переводит статус счета в «Начали готовить».

    В свою очередь, чтобы с сайта заказ приходил в статусе «Ждет подтверждения исполнителя» нужно:

    • Выставить gsdlv_dlvrst_ID = 2

    • Не допустить попадания элементов стоп-листа в заказ.

    • Если заказ – доставка, а не самовывоз, должно быть заполнено поле gsdlv_GeoCoordinates.

    • Заказ должен идти не на подразделение кол-центра.

Удаление гостевого счета

Тип

DELETE

Вызов

/delete-guest

Параметры

id

Идентификатор гостевого счета.

Для успешного удаления у счета не должно быть операций авторизации и фискализации, пречеки счета не должны быть общими с другими счетами. Записи в контролируемые операции не ведутся, счет, его пречеки, чеки удаляются полностью.

Пример вызова

http://127.0.0.1:8090/delete-guest?id=8051B912-B90C-1045-9AA9-05A049551B57 

Формат возвращаемых данных

Возвращается http-код 200, если регистрация успешна, иначе http-ответ 500 с текстом ошибки.

Структура гостевого счета

{
  поля таблицы tp_Guests

  "guestDeliveries": {поля таблицы tp_GuestDeliveries}, --опционально

  "guestSalePrivileges": [ {поля таблицы tp_GuestSalePrivileges}, { } ], --опционально

  "orders": [
    {
      поля таблицы tp_Orders

      "orderItems": [
        {
          поля таблицы tp_OrderItems

          "orderItems": [{...},{...}], --опционально. Модификаторы родительского элемента. У модификаторов в свою очередь тоже могут быть модификаторы.

          "orderItemDiscounts": [{поля таблицы tp_OrderItemDiscounts}, {...}]

        },
        ...
      ]
    },
    ...
  ],
  "guestDiscountPointOperations": [{поля таблицы tp_GuestDiscountPointOperations}, { }], --опционально. 

  "notes": [{поля таблицы tp_Notes},{ },] -- опционально

}

Гостевые счета tp_Guests

Таблица tp_Guests

ПолеОбязательноеЗаполняется на сервереЗаполняется на клиенте

gest_ID

gest_dvsn_ID

gest_gest_ID_Original

gest_sprv_ID

gest_clnt_ID

gest_idnt_ID

gest_usr_ID

gest_dev_ID

gest_plac_ID

gest_lggr_ID

gest_gsst_ID

gest_dev_ID_SalePrivilege

gest_DateOpen

gest_DateClose

gest_Name

gest_ClientName

gest_ClientPhone

gest_ClientEMail

gest_ClientAddress

gest_PlaceNumber

gest_Count

gest_Comment

Привилегии гостевого счета (tp_GuestSalePrivileges)

Таблица tp_GuestSalePrivileges

ПолеОбязательноеЗаполняется на сервереЗаполняется на клиенте

gsprv_ID

gsprv_gest_ID

gsprv_sprv_ID

Гостевые счета доставки (tp_GuestDeliveries)

Таблица tp_GuestDeliveries

ПолеОбязательноеЗаполняется на сервереЗаполняется на клиенте

gsdlv_gest_ID

gsdlv_usr_ID_Courier

gsdlv_dlvrst_ID

gsdlv_dlvrmt_ID

gsdlv_cncpt_ID

gsdlv_pytp_ID_Prepaid

gsdlv_Date

gsdlv_DateDelivered

gsdlv_IsAutoStart

gsdlv_CookingTime

gsdlv_DeliveryTime

gsdlv_SendSooner

gsdlv_NeedConfirmation

gsdlv_PayDescription

gsdlv_GeoRegionID

gsdlv_GeoCoordinates

gsdlv_ExtraInfo

Заказы (tp_Orders)

Таблица tp_Orders

ПолеОбязательноеЗаполняется на сервереЗаполняется на клиенте

ordr_ID

ordr_gest_ID

ordr_usr_ID

ordr_usr_ID_Operator

ordr_dev_ID

ordr_dvsn_ID

Элементы спецификации заказов (tp_OrderItems)

Таблица tp_OrderItems

Поле

Обязательное

Заполняется на сервере

Заполняется на клиенте

Источник данных

orit_ID

orit_ordr_ID

orit_master_ID

orit_mitm_ID

mitm_ID

orit_mvtp_ID

mitm_mvtp_ID

orit_mmgr_ID

orit_slgr_ID

orit_sprv_ID

orit_orpi_ID

orit_pcit_ID

orit_VolumeID

mitm_Volume

orit_Count

orit_Price

mitm_Price

orit_PriceDiscount

orit_PriceMargin

orit_VAT

mitm_Vat

orit_PriceVat

orit_Course

Скидки элемента спецификации заказов (tp_OrderItemDiscounts)

Таблица tp_OrderItemDiscounts

ПолеОбязательноеЗаполняется на сервереЗаполняется на клиенте

oritd_ID

oritd_orit_ID

oritd_dstp_ID

oritd_Price

oritd_PriceDiscount

oritd_PriceMargin

oritd_Order

Операции по баллам гостевых счетов (tp_GuestDiscountPointOperations)

Таблица tp_GuestDiscountPointOperations

Поле

Обязательное

Заполняется на сервере

Заполняется на клиенте

gdpo_ID

gdpo_gest_ID

gdpo_dspt_ID

gdpo_gdpot_ID

gdpo_Date

gdpo_Name

gdpo_Description

gdpo_Value

Заметки (tp_Notes)

Структура заметки

Расширенное описание таблицы tp_GuestDeliveries

Поле

Название

Описание

gsdlv_gest_ID

Гостевой счет доставки (tp_Guests)

gsdlv_usr_ID_Courier

Курьер

Курьер для доставки заказа. (tp_Users)

gsdlv_dlvrst_ID

Статус доставки (tp_DeliveryStates)

0 - «Ждет подтверждения клиента»

Статус выставляется, если нужно предварительно перезвонить клиенту. Счет отображается в режимах Доставка и Кол-центр доставки.

1 - «Закрыта»

Доставка закрыта и оплачена. Заказ доставлен клиенту.

2 - «Ждет подтверждения исполнителя»

Счет доставки отображается в режиме Доставка по заявкам кол-центра и ожидает подтверждения оператора о приеме заказа в работу.

3 - «Ждет начала приготовления»

Счет находится в активном состоянии. Время начала приготовления еще не наступило, либо ожидается ручной перевод оператором в статус «Начали готовить».

4 - «Отказ исполнителя»

Подразделение-исполнитель не может выполнить заказ.

5 - «Начали готовить»

Заказ находится на стадии приготовления

6 - «Приготовлена, не отправлена»

Все блюда заказа отмечены как приготовленные, либо оператор доставки отметил что заказ готов к отправке.

7 - «В пути»

Курьер забрал заказ и находится в пути

8 - «Отказ клиента»

Кол-центр информирует подразделение-исполнитель, что клиент отказался от своего заказа и заказ следует удалить

9 - «Передано в другое подразделение»

Счет был передан в другое подразделение.

gsdlv_dlvrmt_ID

Способ доставки (tp_DeliveryMethods)

  1. Доставка курьером

  2. Самовывоз

gsdlv_cncpt_ID

Концепция

Концепция (tp_Conceptions)

gsdlv_pytp_ID_Prepaid

Тип интернет-оплаты

Если тип оплаты указан, то считается что сумма счета доставки полностью им оплачена. (tp_PayTypes)

gsdlv_Date

Дата оформления

Дата создания счета (открытия карточки доставки или приема звонка).

gsdlv_DateDelivered

Дата фактической доставки

Дата присвоения статуса доставке «Закрыта».

gsdlv_IsAutoStart

Начало готовки

Признак автоматического перевода счета доставки в статус «Начали готовить» при наступлении времени начала приготовления.

Если в подразделении указан сегмент обработки статуса «Начали готовить», то при наступлении момента времени «время доставки минус время в пути минус время готовки» системной задачей счет доставки переводится в статус «Начали готовить» и производится печать сервис-марок на кухне.

gsdlv_CookingTime

Время готовки

Временной интервал необходимый для приготовления блюд в заказе. Определяется автоматически исходя из значений геокодера по номерам зон доставки, либо по настройкам подразделения (tp_Divisions.dvsn_CookingTime).

Может изменяться вручную для каждого счета. Участвует в расчете ближайшего времени доставки.

gsdlv_DeliveryTime

Время в пути

Временной интервал необходимый для доставки заказа клиенту. Определяется автоматически исходя из значений геокодера по номерам зон доставки, либо по настройкам подразделения (tp_Divisions.dvsn_DeliveryTime).

Может изменяться вручную для каждого счета. Участвует в расчете ближайшего времени доставки.

gsdlv_SendSooner

«Ближайшее» время доставки

Флаг, означающий, что заказ создан на «ближайшее время».

Ближайшее время доставки означает, что заказ необходимо доставить не позднее (можно раньше) указанного времени.

Если клиент указывает собственное время, то флаг сбрасывается в 0, если время доставки считается автоматически, то флаг = 1.

Время доставки сохраняется как дата открытия гостевого счета (tp_Guests.gest_DateOpen)

Ближайшее время доставки рассчитывается:

  • при доставке курьером (gsdlv_dlvrmt_ID = 1):

    gest_DateOpen = текущее время + gsdlv_CookingTime + gsdlv_DeliveryTime

  • При cамовывозе (gsdlv_dlvrmt_ID=2)

    gest_DateOpen = текущее время + gsdlv_CookingTime.

gsdlv_NeedConfirmation

Требуется подтверждение

Флаг, указывающий, что требуется подтверждение клиента. Оператор, при получении заказа, должен перезвонить клиенту для уточнения заказа.

gsdlv_CashAmount

Сдача с

Сумма, с которой потребуется сдача при оплате

gsdlv_PayDescription

Информация об оплате

Текстовый комментарий для оператора доставки, в котором указывается как собирается расплачиваться клиент наличными или банковской картой. И необходимая сумма сдачи с наличных.

gsdlv_GeoRegionID

Номер зоны

Номер зоны доставки, указанный в параметрах геокодера (geoRegionID).

gsdlv_GeoCoordinates

Координаты адреса

Координаты адреса. Возвращаются геокодером.

gsdlv_ExtraInfo

Дополнительные параметры доставки

Дополнительные параметры доставки.

Состав дополнительных полей задается в системных настройках программы Тиллипад менеджер, аналогично структуре адреса.

gsdlv_CourierComment

Информация о курьере

Расчет скидок для черновика гостевого счета

Тип

POST/GET

Вызов

/calc-discount

Пример вызова

curl \
  -H "Content-Type: application/json" \
  -d @CalcDiscount_in.json \ 1
  -o CalcDiscount_out.json \2
  --url "http://89.22.216.169
1

CalcDiscount_in.json - имя файла с содержимым счета, для которого нужно посчитать скидку.

2

CalcDiscount_out.json - имя файла с содержимым счета после подсчета скидок.

Параметры

В секции BODY запроса содержимое гостевого счета в иерархическом виде, в секции HEADER необходимо указать "Content-Type: application/json".

Пример гостевого счета

{ 
  "gest_DateOpen": "2017-07-25T07:11:04", 
  "gest_sprv_ID": "D572B760-99CB-C64D-9CE0-77FD5FD1171E", 
  "gest_clnt_ID": "7F944ABD-0729-D948-A052-531D74B3482F", 
  "gest_Name": "11", 
  "orders": [ 
    { 
      "ordr_Date": "2017-07-25T07:11:04", 
      "ordr_Name": "22", 
      "orderItems": [ 
        { 
          "orit_mitm_ID": "2A8BA73F-8DC0-F74C-8BA8-B081FEF9C2CC", 
          "orit_Volume": 1, 
          "orit_Count": 2, 
          "orit_Price": 10.5, 
          "orderItems": [ 
            { 
              "orit_mitm_ID": "6D6EC248-EC86-5F4E-84B3-C450C1919221", 
              "orit_Price": 20.5, 
              "orit_mmgr_ID": "93BF901D-ECAB-CA4A-9FCC-DA9E99C805DF", 
              "orit_Volume": 1, 
              "orit_Count": 1 
            } 
          ] 
        }, 
        { 
          "orit_mitm_ID": "6D6EC248-EC86-5F4E-84B3-C450C1919221", 
          "orit_Volume": 1, 
          "orit_Count": 2, 
          "orit_Price": 30.5 
        } 
      ] 
    } 
  ] 
} 

Возвращает

В секции BODY запроса содержимое гостевого счета в иерархическом виде.

Пример возвращенного гостевого счета

{ 
  "gest_ID": "00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
  "gest_dvsn_ID": "7BF665B0-2793-4B26-946E-D03A82E7EECB", 
  "gest_sprv_ID": "D572B760-99CB-C64D-9CE0-77FD5FD1171E", 
  "gest_clnt_ID": "7F944ABD-0729-D948-A052-531D74B3482F", 
  "gest_usr_ID": "5D7FEB83-5686-4DCB-9F09-C64C51B0A41D", 
  "gest_dev_ID": "F721D056-4AAF-4EF1-86F3-57A1BF588FDA", 
  "gest_gsst_ID": 0, 
  "gest_DateOpen": "2017-07-25T07:11:03", 
  "gest_Name": "11", 
  "orders": [ 
    { 
      "ordr_ID": "00000001-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
      "ordr_gest_ID": "00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
      "ordr_usr_ID": "5D7FEB83-5686-4DCB-9F09-C64C51B0A41D", 
      "ordr_usr_ID_Operator": "5D7FEB83-5686-4DCB-9F09-C64C51B0A41D", 
      "ordr_dev_ID": "F721D056-4AAF-4EF1-86F3-57A1BF588FDA", 
      "ordr_dvsn_ID": "7BF665B0-2793-4B26-946E-D03A82E7EECB", 
      "ordr_orst_ID": 0, 
      "ordr_Date": "2017-07-25T07:11:03", 
      "ordr_Name": "22", 
      "orderItems": [ 
        { 
          "orit_ID": "00000002-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
          "orit_ordr_ID": "00000001-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
          "orit_mitm_ID": "2A8BA73F-8DC0-F74C-8BA8-B081FEF9C2CC", 
          "orit_Volume": 1, 
          "orit_Count": 2, 
          "orit_Price": 9.5, 
          "orit_PriceDiscount": 1, 
          "orit_PriceMargin": 0, 
          "orit_VAT": 0, 
          "orit_PriceVat": 0, 
          "orit_Order": 0, 
          "orit_IsUnspentCredit": false, 
          "orderItems": [ 
            { 
              "orit_ID": "00000003-FFFF-FFFF-FFFF-FFFFFFFFFFFF",
              "orit_ordr_ID": "00000001-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
              "orit_master_ID": "00000002-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
              "orit_mitm_ID": "6D6EC248-EC86-5F4E-84B3-C450C1919221", 
              "orit_mmgr_ID": "93BF901D-ECAB-CA4A-9FCC-DA9E99C805DF", 
              "orit_Volume": 1, 
              "orit_Count": 1, 
              "orit_Price": 19.5, 
              "orit_PriceDiscount": 1, 
              "orit_PriceMargin": 0, 
              "orit_VAT": 0, 
              "orit_PriceVat": 0, 
              "orit_Order": 0, 
              "orit_IsUnspentCredit": false, 
              "orderItemDiscounts": { 
                "oritd_ID": "9DBFE6DA-6395-4FBA-928C-C7C77708FE8F", 
                "oritd_orit_ID": "00000003-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
                "oritd_dstp_ID": "B9EC5388-9B01-8C47-932E-5F449A5EFA79", 
                "oritd_Price": 19.5, 
                "oritd_PriceDiscount": 1, 
                "oritd_PriceMargin": 0, 
                "oritd_Order": 1 
              } 
            } 
          ], 
          "orderItemDiscounts": { 
            "oritd_ID": "A6412C5A-5D10-466C-BBD6-0DC86E62F0AF", 
            "oritd_orit_ID": "00000002-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
            "oritd_dstp_ID": "B9EC5388-9B01-8C47-932E-5F449A5EFA79", 
            "oritd_Price": 9.5, 
            "oritd_PriceDiscount": 1, 
            "oritd_PriceMargin": 0, 
            "oritd_Order": 1 
          } 
        }, 
        { 
          "orit_ID": "00000004-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
          "orit_ordr_ID": "00000001-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
          "orit_mitm_ID": "6D6EC248-EC86-5F4E-84B3-C450C1919221", 
          "orit_Volume": 1, 
          "orit_Count": 2, 
          "orit_Price": 29.5, 
          "orit_PriceDiscount": 1, 
          "orit_PriceMargin": 0, 
          "orit_VAT": 0, 
          "orit_PriceVat": 0, 
          "orit_Order": 1, 
          "orit_IsUnspentCredit": false, 
          "orderItemDiscounts": { 
            "oritd_ID": "75BD2537-1554-440C-9478-50F40513F1BB", 
            "oritd_orit_ID": "00000004-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
            "oritd_dstp_ID": "B9EC5388-9B01-8C47-932E-5F449A5EFA79", 
            "oritd_Price": 29.5, 
            "oritd_PriceDiscount": 1, 
            "oritd_PriceMargin": 0, 
            "oritd_Order": 1 
          } 
        } 
      ] 
    } 
  ],
  "guestDiscountPointOperations": [ 
    { 
      "gdpo_ID": "A7F7763A-EAE8-4D97-8ACD-DCA14C4B051C", 
      "gdpo_gest_ID": "00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
      "gdpo_dspt_ID": "A976C6ED-C511-4755-B942-636645A6A1B0", 
      "gdpo_gdpot_ID": 3, 
      "gdpo_Date": "2017-07-28T17:22:30", 
      "gdpo_Name": "8", 
      "gdpo_Value": 3 
    } 
  ], 
  "notes": [ 
    { 
      "note_ID": "97615696-6D7F-4B5A-AB00-3D2450F6E2B0", 
      "note_nttp_ID": "5D0B2641-80FA-3743-A463-65FA674EF1DC", 
      "note_Item_ID": "00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
      "note_obj_ID": "00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF", 
      "note_tpsyso_ID": "7F40833C-3722-4502-BC11-45EC786A4621", 
      "note_Date": "2017-07-28T17:22:30", 
      "note_Value": { 
        "value": "08200CFE-6E36-42B6-B1A1-D5653C88970B", 
        "type": "guid"  
      } 
    } 
  ] 
} 

Описание метода

Черновой гостевой счет используется для расчета скидок сервисом Tillypad API – еще до записи гостевого счета в базу Тиллипад.

Если у клиента есть скидка, прописанная в Тиллипад, при создании заказа на сайте, черновик этого гостевого счета обрабатывается сервисом Tillypad API с использованием метода Расчет скидок для чернового счета. Данные после обработки сайт получает у Tillypad API – клиент видит скидку на сайте. По завершении оформления заказа на сайте, гостевой счет с сайта через Tillypad API передается в базу Тиллипад.

Пример

Скидки настроены в Тиллипад: правила продажи, программы лояльности, привилегии, типы дней. Эта информация (GUID) хранится в сервисе Tillypad API. На сайте клиент вводит заказ – информацию о заказе сайт передает в наш Tillypad API. В нашем Tillypad API есть метод обработки скидок Расчет скидок для чернового счета - Tillypad API отсылает в Тиллипад счет для обработки программы лояльности, но без записи в базу (это регулируется в методе - отрабатывает calc-discount) - программа лояльности отрабатывает в большом Тиллипад - Tillypad API получает обработанный в Тиллипад счет и отдает сайту обсчитанный со скидкой счет – на сайте заказ со скидкой отображается для клиента. Далее сайт должен передать финализированный счет нашему Tillypad API без обсчета, в первозданном виде, чтобы придя в Тиллипад, он повторно со скидкой не обсчитался.

Привилегия указывается в gest_sprv_ID <guid>.

Запрос информации по счету

Тип

GET

Вызов

/get-guest

Параметры

guest-id

Идентификатор счета

Пример вызова

http://89.22.216.169:8090/get-guest?guest-id=E1D526BE-56F4-4C40-A169-2FEFD9D7679C

Формат возвращаемых данных

Полная структура гостевого счета.

{ 
gest_ID : "38450FC9-D852-2A40-8C78-9E925A35ABDC" 
gest_dvsn_ID : "7917642D-FF72-3B47-8ED8-04052BC144CB" 
gest_clnt_ID : "707A901A-D652-994C-9159-65D366C16FC6" 
gest_usr_ID : "942AF580-6AE9-4D89-9465-7A348FB604E9" 
gest_dev_ID : "D263A172-4D18-BC4A-AF9C-9CD5F61732E7" 
gest_gsst_ID : 4 
gest_DateOpen : "2018-02-08T16:19:20" 
gest_Name : "в оплате" 
gest_Comment : "Первая строка Вторая строка" 
guestDeliveries 
gsdlv_gest_ID : "38450FC9-D852-2A40-8C78-9E925A35ABDC" 
gsdlv_dlvrst_ID : 0 
gsdlv_dlvrmt_ID : 1 
gsdlv_cncpt_ID : "B719499B-9DFC-BA47-B027-0F390028946E" 
gsdlv_Date : "2018-02-08T16:19:20" 
gsdlv_IsAutoStart : false 
gsdlv_SendSooner : false 
gsdlv_NeedConfirmation : false 
gsdlv_CashAmount : 1000.5 
orders: [ 
{ 
ordr_ID : "B0021CF2-8847-EA42-90DD-8515AFF3C03C" 
ordr_gest_ID : "38450FC9-D852-2A40-8C78-9E925A35ABDC" 
ordr_usr_ID : "942AF580-6AE9-4D89-9465-7A348FB604E9" 
ordr_usr_ID_Operator : "942AF580-6AE9-4D89-9465-7A348FB604E9" 
ordr_dev_ID : "D263A172-4D18-BC4A-AF9C-9CD5F61732E7" 
ordr_orst_ID : 0 
ordr_Date : "2018-02-08T16:19:20" 
ordr_Name : "39", 
orderItems: [ 
{ 
orit_ID : "65FBFF64-A33A-3844-BE41-8AB999E80D5A" 
orit_ordr_ID : "B0021CF2-8847-EA42-90DD-8515AFF3C03C" 
orit_mitm_ID : "B981C624-DA3A-F846-B35D-6D07E8A974FA" 
orit_mvtp_ID : "5224EB11-E8BE-1846-98C6-895B4B449B91" 
orit_slgr_ID : "25E3A39D-43E3-E840-8CCC-ED0DC12A4A37" 
orit_Volume : 1 
orit_Count : 2 
orit_Price : 315 
orit_PriceDiscount : 0 
orit_PriceMargin : 0 
orit_VAT : 0 
orit_PriceVat : 0 
orit_Order : 1 
orit_IsUnspentCredit : false 
}, 
{ 
orit_ID : "42C053D6-8820-5047-8AC9-A0E20F52D040" 
orit_ordr_ID : "B0021CF2-8847-EA42-90DD-8515AFF3C03C" 
orit_mitm_ID : "D40DF381-FAE8-7243-8A72-7CEA2CFE02DA" 
orit_mvtp_ID : "5224EB11-E8BE-1846-98C6-895B4B449B91" 
orit_slgr_ID : "25E3A39D-43E3-E840-8CCC-ED0DC12A4A37" 
orit_Volume : 1 
orit_Count : 1 
orit_Price : 0 
orit_PriceDiscount : 0 
orit_PriceMargin : 0 
orit_VAT : 0 
orit_PriceVat : 0 
orit_Order : 2 
orit_IsUnspentCredit : false 
}, 
{ 
orit_ID : "481AF606-C982-184F-BB3E-A59C1A853B38" 
orit_ordr_ID : "B0021CF2-8847-EA42-90DD-8515AFF3C03C" 
orit_mitm_ID : "FBE3CE39-94AA-D149-A993-1628A1092830" 
orit_mvtp_ID : "5224EB11-E8BE-1846-98C6-895B4B449B91" 
orit_slgr_ID : "25E3A39D-43E3-E840-8CCC-ED0DC12A4A37" 
orit_Volume : 1 
orit_Count : 3 
orit_Price : 375 
orit_PriceDiscount : 0 
orit_PriceMargin : 0 
orit_VAT : 0 
orit_PriceVat : 0 
orit_Order : 0 
orit_IsUnspentCredit : false 
} 
] 
} 
] 
}

Запрос статуса доставки

Тип

GET

Вызов

/get-guest-delivery-state

Параметры

guest-id

Идентификатор гостевого счета

Пример вызова

http://89.22.216.169:8090/get-guest-delivery-state?guest-id=5C493318-3A9D-F649-A431-5C685D00C99E 

Формат возвращаемых данных

{ 
  "dlvrst_ID": 6,  
  "dlvrst_Name": "Приготовлена, не отправлена"  
} 

dlvrst_ID

dlvrst_Name

Описание

0

«Ждет подтверждения клиента»

Статус выставляется если нужно предварительно перезвонить клиенту. Счет отображается в режиме простой доставки и кол-центра доставки.

1

«Закрыта»

Доставка закрыта и оплачена. Заказ доставлен клиенту

2

«Ждет подтверждения исполнителя»

счет доставки отображается в режиме Доставка по заявкам кол-центра и ожидает подтверждения оператора о приеме заказа в работу

3

«Ждет начала приготовления»

Счет находится в активном состоянии. Время начала приготовления еще не наступило, либо ожидается ручной перевод оператора в статус «Начали готовить».

4

«Отказ исполнителя»

Подразделение-исполнитель не может выполнить заказ.

5

«Начали готовить»

Заказ находится на стадии приготовления.

6

«Приготовлена, не отправлена»

Все блюда заказа отмечены как приготовленные, либо оператор доставки отметил что заказ готов к отправке.

7

«В пути»

Курьер забрал заказ и находится в пути.

8

«Отказ клиента»

Кол-центр информирует подразделение-исполнитель, что клиент отказался от своего заказа и заказ следует удалить.

9

«Передано в другое подразделение»

Счет был передан в другое подразделение.

-1

«Удален»

Счет отменен, удален или не существует.

Изменение места размещения

Тип

PUT

Вызов

/update-guest-place

Параметры

guest-id

Идентификатор счета.

place-id

Идентификатор места размещения (plac_ID). Необязательный параметр.

Если не передан, у счета сбрасывается место размещения.

Пример вызова

http://127.0.0.1:8090/update-guest-place?guest-id=8051B912-B90C-1045-9AA9-05A049551B57&place-id=BB43306C-F103-5D4C-BBEF-9A6A972C7A2C

Формат возвращаемых данных

Возвращает http-код 200 если успешно, иначе http-ответ 500 с текстом ошибки.

Запрос кратких данных счета

Тип

GET

Вызов

/get-guest-info

Параметры

name

Название гостевого счета.

date

Дата гостевого счета в формате yyyy-mm-dd.

Пример вызова

http://127.0.0.1:8090/get-guest-info?name=010&date=2020-09-16 

Формат возвращаемых данных

[ 
    { 
        "ID": "4A40FFD0-AFFE-8028-D04F-C814FFBE337A", 
        "Date": "2019-06-07T17:23:49", 
        "Division": { 
            "ID": "7917642D-FF72-3B47-8ED8-04052BC144CB", 
            "Name": "WebService" 
        }, 
        "State": { 
            "ID": 4, 
            "Name": "В оплате" 
        }, 
        "Client": { 
            "ID": "83BBEDEE-723B-AA6F-8B4E-A9FD3E75AEF0", 
            "Name": "Client", 
            "Phone": "+7(982)497-48-33" 
        }, 
        "Sum": 210.0 
    }, 
    { 
        "ID": "3B8759FF-E5AC-A746-D443-0B82AC215559", 
        "Date": "2019-06-07T18:31:45", 
        "Division": { 
            "ID": "7917642D-FF72-3B47-8ED8-04052BC144CB",             
            "Name": "WebService" 
        }, 
        "State": { 
            "ID": 4, 
            "Name": "В оплате" 
        }, 
        "Client": { 
            "ID": "83BBEDEE-723B-AA6F-8B4E-A9FD3E75AEF0", 
            "Name": "Client", 
            "Phone": "+7(982)497-48-33" 
        }, 
        "Sum": 540.0 
    } 
]

Запрос ID закрытых счетов за период

Тип

GET

Вызов

/get-closed-guests-id

Параметры

from

Дата начала диапазона в формате yyyy-mm-dd. Обязательный параметр.

to

Дата окончания диапазона в формате yyyy-mm-dd. Обязательный параметр.

division-id

Идентификатор подразделения гостевого счета. Необязательный параметр.

Пример вызова

http://localhost:8090/get-closed-guests-id?from=2020-04-29T19:00:00&to=2021-01-18T19:00:00&division-id=7917642D-FF72-3B47-8ED8-04052BC144CB

Формат возвращаемых данных

["6F8D7E9E-E4AB-906D-0A4B-9C1FFE63E2B8","F61EFB81-DDC6-BB0D-0A4D-988354911405","59C6352E-AF9D-BB64-CB4D-3EC300DC0E61","06A40004-D1EE-AA34-2542-59933FF0CBF0","9D99F977-AD8D-9516-DB4E-308F0B5DE218","0B627124-AD6C-BFAF-DD46-CA68E546D57C","68A0305B-CB80-BB19-DB43-0662014DB535","0EE08163-1327-B507-C043-2152F41D3B54","2B27F3A2-ABEC-B9D9-A045-0A7B7EF8DDB9","44B6C52B-EC2F-A195-4240-05CEDA9040A5","4CE00136-4C23-B296-0842-5033970FBF6E","2F54C65C-9620-B3EA-7C4F-F677A99BB6D5","8B553148-B770-B112-4248-407A6B0B6AA0"]

Открытие-закрытие торгового дня

Тип

POST

Вызов

/operate-archive

Параметры

division-id

Идентификатор подразделения гостевого счета.

archive-id

Идентификатор торгового дня, если передан, то день будет закрыт.

Пример вызова

http://127.0.0.1:8090/operate-archive?division-id=8051B912-B90C-1045-9AA9-05A049551B57 

Формат возвращаемых данных

Если archive-id не был передан, то будет возвращен id или вновь созданного или открытого торгового дня.

Если день был успешно закрыт, то в ответе только http-status 200.

{ "arch_ID": "863A1F77-B9E9-CA47-A144-F1E8492F2B02" }

Если была ошибка, вернется http-status 500 и данные ошибки.

Оплата гостевого счета

Тип

POST

Вызов

/pay-guest

Формат возвращаемых данных

{ 
    "DiscountSums": [ 
        { 
            "type_ID": "60D367B5-15D2-D24D-8A74-A28F40C8CB9D", 
            "sum": 20 
        } 
    ], 
    "AppliedDiscountSums": [ 
        { 
            "type_ID": "0412C97B-AF11-2447-88D9-B40FA0EB996D", 
            "sum": 20 
        } 
    ] 
} 

или

"&lt;Текст ошибки&gt;"  

Параметры

delete-prechecks

Необязательный параметр запроса. Используется при пересчете скидки по баллам.

Значение флага DeletePrechecksОписаниеПримечание

0

Не удалять

Применить абсолютную скидку @DiscountSum к остатку счета, не переданному в оплату, не удаляя пречеки то есть на блюда, включенные в пречек, скидка распространяться не будет

Если нет элементов, не переданных в оплату (не включенных в пречек), выводится ошибка «Счет уже передан в оплату».

1

Удалить все пречеки

Применить абсолютную скидку @DiscountSum к полному составу счета.

Если есть хоть один пречек со статусом «Оплачен», выводится ошибка, что счет уже оплачен

2

Удалить неоплаченные пречеки

Применить абсолютную скидку @DiscountSum, отменив все пречеки оплата которых еще не началась. Остальные пречеки удаляются, если для них нет чеков

В секции BODY запроса два параметра Payment и DiscountSum (необязательный - при наличии), в секции HEADER необходимо указать "Content-Type: application/json".

Пример вызова

curl \
  -H "Content-Type: application/json"  \
  -d @pay_in.json \ 1
  -o out.json \ 2
  --url "http://89.22.216.169:8090/pay-guest?delete
1

pay_in.json - имя файла с параметрами Payment и GuestDiscountPoints,

2

out.json - имя файла с положительным или отрицательным результатом работы.

Пример формирования оплаты

  • Параметры на входе:

    {     
    "Payment": { 
            "gest_ID": "61BA736D-E34C-9C4B-97D3-E71BC2903915", Обязательный параметр 
            "payType_ID": "CADA63B6-6833-574F-8427-AB98AE931814", Необязательный параметр 
            "paySum": 3000 Необязательный параметр 
     }, 
     "DiscountSum": [ Необязательный параметр 
     { 
     "type_ID": "480F64A0-B729-3140-B796-678A1CD754F0", Необязательный параметр 
     "sum": 100 Обязательный параметр 
     } 
     ] 
    } 
  • Ответ:

    { 
        "DiscountSums": [ 
            { 
                "type_ID": "60D367B5-15D2-D24D-8A74-A28F40C8CB9D", 
                "sum": 20 
            } 
        ], 
        "AppliedDiscountSums": [ 
            { 

    или

    "&lt;Текст ошибки&gt;" 

Соглашения

  1. Поле paySum необязательно для заполнения, если paySum не будет заполнено, то пречек и чек не будет сформирован

  2. Поле payType_ID необязательно для заполнения, но если не заполнено поле оплачиваемого счета gsdlv_pytp_ID_Prepaid, то будет возвращена ошибка «Для проведения оплаты должен присутствовать либо payType_ID, либо gsdlv_pytp_ID_Prepaid». Также заполненное поле payType_ID записывает (или перезаписывает) значение поля gsdlv_gest_ID_Prepaid.

  3. В pay-guest можно передавать DiscountSum - скидку в виде баллов, где поле type_ID необязательное, так как может быть заполнено из настроек модуля, а sum - сумма скидки

  4. Сумма оплаты должна совпадать с итоговой суммой заказов счета (учитывая частичную оплату баллами, если они есть), а иначе «Сумма интернет-оплаты не может отличаться от итоговой суммы счета».

  5. После обработки (удаления) пречеков, указанное значение суммы скидки @DiscountSum сохраняется в служебной заметке, после чего вызывается пересчет скидок процедурой p_CalcDiscount.

  6. Если paySum полностью соответствует сумме счета (считая баллы), то формируется пречек и чек в статусе «Оплачено» на указанную сумму указанным типом оплаты.

  7. В ответе запроса должны содержаться DiscountSum (заявленная сумма баллов) и AppliedDiscountSum (примененная сумма баллов), если AppliedDiscountSum отсутствует - значит скидка по баллам не настроена (баллы не начислены).

Оплата баллами

Баллы в системе Тиллипад предназначены для того, чтобы повышать статус клиента. Списание баллов в счет оплаты блюд не было предусмотрено ранее.

В протокол стыка с мобильным приложением добавлен потоке DiscountSum, где поле type_ID (необязательное поле) содержит nttp_ID заметки гостевого счета. Заметка гостевого счета обязательно должна быть уникальной и иметь тип данных - вещественное, и Sum - сумма для списания в счет оплаты.

При сохранении счета в систему модуль стыковки сохраняет указанную сумму в заметку к счету. Если заметка не указана, то берется заметка по умолчанию из настроек модуля.

Скидка пересчитывает стоимость блюд с учетом применения указанной суммы как абсолютной скидки на счет с учетом предыдущих программ лояльности.

При этом скидка проверяет, что не превышен максимально допустимый процент от общей суммы счета, который может быть оплачен баллами. Процент указывается для подразделения в заметке (уникальная, вещественное). Так как сумма может быть использована не полностью, например, при условии, что баллами можно оплатить не более 50% стоимости, то использованная сумма указывается в отдельной заметке к счету.

После пересчета скидки счет сохраняется в систему Тиллипад.

Мобильное приложение

  1. Передает в модуль стыковки список сумм скидок, которые должны быть применены как абсолютная скидка (поток DiscountSum).

Модуль стыковки

  1. Перед сохранением счета в систему, сохраняет указанную сумму в специальную заметку к гостевому счету. При этом, если в потоке DiscountSum не указан type_ID (=nttp_ID), то подставляет nttp_ID по умолчанию (указывается в настройках).

  2. Производит расчет скидки.

  3. Пишет в отдельную заметку использованную сумму скидки.

  4. В данных запроса информации по гостевым счетам постоянного клиента в потоке AppliedDiscountSum в поле Sum возвращает сумму примененной скидки к счету, для того чтобы мобильное приложение могло произвести анализ по примененной сумме скидки.

Скидка

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

  2. Применяет абсолютную скидку на счет.

  3. В отдельной заметке сохраняет примененную сумму скидки

Формирование гостевого счета с баллами

Предварительно для корректной работы в настройках модуля должны быть указаны note-type-Id (Сумма заявленной абсолютной скидки на счет) и applied-note-type-Id (Сумма примененной абсолютной скидки на счет) заметок (значения полей nttp_ID tp_NoteTypes), сами заметки должны быть настроены в системе, как и привилегия с типом программы лояльности Абсолютная скидка от мобильного приложения. В сам запрос

/post-guest

добавляется вкладка вида:

"discountSum": [ 
    {   
       "type_ID": "60D367B5-15D2-D24D-8A74-A28F40C8CB9D", 
       "sum": 25 
    } 
 ]

Поле type_ID необязательное к заполнению - id заметки может быть взят из настроек модуля, поле sum должно быть заполнено суммой скидки без кавычек (числовое поле).

В итоге тело запроса /post-guest может выглядеть таким образом:

{ 
  "gest_Name": "Points0000001", 
  "gest_ClientPhone": "+7(456)999-99-99", 
  "gest_ClientAddress": "<Address><Village Caption=\"Город\" Key=\"True\">Санкт-Петербург</Village><Street
Caption=\"Улица\" Key=\"True\">Ленина</Street><House Caption=\"Дом\" Key=\"True\">1</House><Building
Caption=\"Корпус\" Key=\"True\">1</Building><Apartment Caption=\"Квартира\" Key=\"True\">12</Apartment><Entrance
Caption=\"Подъезд\">1</Entrance><Floor Caption=\"Этаж\">2</Floor><Intercom Caption=\"Домофон\">24</Intercom>
<Comment Caption=\"Комментарий\">комментарий</Comment></Address>",
 "guestDeliveries": { 
      "gsdlv_cncpt_ID": "B719499B-9DFC-BA47-B027-0F390028946E", 
      "gsdlv_dlvrst_ID": 0, 
      "gsdlv_dlvrmt_ID": 1, 
      "gsdlv_IsAutoStart": 0, 
      "gsdlv_SendSooner": 1, 
      "gsdlv_CookingTime": 1800, 
      "gsdlv_DeliveryTime": 1800, 
      "gsdlv_NeedConfirmation": 1, 
      "gsdlv_GeoRegionID": 10, 
      "gsdlv_CashAmount": 5000, 
      "gsdlv_pytp_ID_Prepaid": "7EDA47CA-B67E-CB41-BF80-467D7C9086B0", 
      "gsdlv_PayDescription": "description" 
  }, 
  "orders": [ 
   { 
      "ordr_Name": "01", 
      "orderItems": [ 
        { 
          "orit_mitm_ID": "FBE3CE39-94AA-D149-A993-1628A1092830", 
          "orit_mvtp_ID": "5224EB11-E8BE-1846-98C6-895B4B449B91", 
          "orit_Volume": 1, 
          "orit_Count": 2, 
          "orit_Price": 350 
        } 
      ] 
    } 
  ],
  "discountSum": [ 
    {   
       "sum": 100 
    } 
 ]
}

Получение информации о баллах

Для получения информации о баллах существующего гостевого счета или счетов можно использовать запросы

/get- guest?guest-id=<guid счета>

или

/get-guests?client-id=<guid клиента>

Данные по сумме заявленной и примененной скидки будут отображены во вкладках discountSum и appliedDiscountSum:

"discountSum":[{"type_ID":"60D367B5-15D2-D24D-8A74-A28F40C8CB9D","sum":90.0}], 
"appliedDiscountSum":[{"type_ID":"0412C97B-AF11-2447-88D9-B40FA0EB996D","sum":45.0}]

Настройка скидки для оплаты баллами

Для настройки скидки посредством баллов через API все прикрепленные заметки и тип программ лояльности должны быть импортированы в программу Tillypad Manager.

  • Заметка Сумма заявленной абсолютной скидки на счет.tpxl_exp,

  • Заметка Сумма примененной абсолютной скидки на счет.tpxl_exp,

  • Заметка Максимальная скидка от суммы счета.tpxl_exp,

  • Тип программ лояльности Абсолютная скидка от мобильного приложения (Без копеек).tpxl_exp.

Важно

Для получения пакета обновлений с заметками и типом программ лояльности нужно обратиться в службу поддержки.

Заводится программа лояльности с типом Абсолютная скидка для мобильного приложения. В параметрах фильтра нужно указать все эти типы заметок и выбрать нужные группы прейскуранта.

Далее создается правило продажи с созданной выше программой лояльности, где указывается тип дней, в течение которых эта скидка должна работать в нужном подразделении. Максимальная сумма скидки на подразделении должна быть указана.

Заводится программа лояльности с типом Абсолютная скидка для мобильного приложения. В параметрах фильтра нужно указать все эти типы заметок и выбрать нужные группы прейскуранта.

Далее создается правило продажи с созданной выше программой лояльности, где указывается тип дней, в течение которых эта скидка должна работать в нужном подразделении. Максимальная сумма скидки на подразделении должна быть указана.

Дополнительно! Работа с процедурой ресторана RecalcClientPoints

Для ресторана реализована специальная процедура для счетов, которые нужно частично оплатить посредством баллов. Для корректной работы процедуры перед ее вызовом должна быть создана временная таблица #ClientDiscountPointOperations, состоящая из полей cdpo_clnt_ID, cdpo_dspt_ID, cdpo_Name, cdpo_Value. Заполняется такая таблица как правило из счета (GuestDiscountPointOperations).

Как пример: метод формирования гостевого счета. В этом методе в тело запроса помещается нужная структура гостевого счета, в том числе и guestDiscountPointOperations:

"guestDiscountPointOperations": [ 
    {  
"gdpo_Value": 100, 
"gdpo_dspt_ID": "CADA63B6-6833-574F-8427-AB98AE931814"  
}, 
{  
"gdpo_Value": 50, 
"gdpo_dspt_ID": "480F64A0-B729-3140-B796-678A1CD754F0"  
} 
  ] 

Таким образом формируется счет с заполненной tp_GuestDiscountPointOperations, где:

  • gdpo_ID формируется на стороне сервера, как NEWID,

  • gdpo_gest_ID подхватывается с gest_ID счета,

  • gdpo_dspt_ID - <GUID> переданного типа баллов,

  • gdpo_gdpot_ID по умолчанию ставится, как Новые,

  • gdpo_Date формируется на сервере,

  • gdpo_Name подхватывается с имени счета,

  • gdpo_Description null по умолчанию,

  • gdpo_Value - сумма баллов.

Отсюда заполняется временная таблица #ClientDiscountPointOperations значениями:

  • cdpo_clnt_ID - берется из gest_clnt_ID счета,

  • cdpo_dspt_ID - берется из gdpo_dspt_ID, описанного выше,

  • cdpo_Name - берется из gdpo_Name, описанного выше,

  • cdpo_Value - берется из gdpo_Value, описанного выше.

Аналогично это работает при оплате: в готовый счет передаются все нужные для заполнения поля операций по баллам, из которых вытягиваются параметры для #ClientDiscountPointOperations по описанной выше схеме.