Методы работы с операциями продажи и возврата товара.

Методы вызываются при продаже и возврате в порядке их описания в документе.

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

Получение баланса карты

Перед расчетом скидок и начислением бонусов по настроенным на сервисе правилам возможно принять от клиента оплату бонусами в счет покупки. Метод получения баланса принимает на вход позиции чека, идентификатор магазина, зарегистрированного в сервисе. На основании этих данных сервис рассчитывает максимально допустимую сумму оплаты чека бонусами. В расчете участвует:

  1. Сегмент товаров исключенных из оплаты(настраивается для каждого магазина)
  2. Максимально допустимый % оплаты
  3. Сумма скидок применяемых к чеку.

POST

/organization/card/{id}/balance

 

Параметры

id //Идентификатор существующей карты

Заголовки

token // Токен доступа выданный при авторизации

Входной JSON

{

 "shop_id": uuid,

//Идентификатор магазина, в котором осуществляется продажа.

 

  "date_calculate_local":1500659675601,

// [Необязательный] Дата в UNIX-Time на которую необходимо произвести расчет баланса в местном формате. Необходима для одного из условий разрешений на оплату баллами

 

"coupon":"coupon_1"

// [Необязательный] Номер промокода. Актуален если баланс рассчитывается по правилам списания баллов.

 

 "cheque_items":

// Массив строк чека

 [

   {

    "article"    : "2d39df54-3428-4638-82e4-2509309462ac",

   // Идентификатор товара

    "summ"        : 100.00,

   // Полная сумма по строке товара, без учета скидок

    "discount_summ"   : 10.99  

   // Сумма скидок на строку

 

// Свойства товара, необязательный

   "property_values":     

      [

        {

          "property_id":"color_id",

          "value":"Красный"       

        } ...

     ]

   },

  ...

 ]

 

// Способы оплаты, прописанные в условиях срабатывания

 "payment_types":

  [

"cash",

"card",

"certificate" 

  ],

 

// Сертификаты для оплаты чека

  "cert_payments": 

  [

    {

      "line_number":      1,

      "certificate_id":"c2",

      "sum":      100   

    },

    {

      "line_number":      2,

      "certificate_id":"c3",

      "sum":      10   

    } 

  ]

}

Выходной JSON

{

  "code": 0,

  "message": "Операция выполнена",

  "status": "inactive"/"active"/"tempblocked"/"blocked",

// Статус карты. Неактивна, Активна, Временная блокировка, Блокировка, соответственно.

  "block_message": "По заявлению ...",

// Комментарий к блокировке.

  "unblock_date": 12345678097,

// Дата автоматического снятия блокировки при состоянии tempblocked

  "balance": 100500.00,

// Полный баланс карты. Информативное поле. Для индикации рекомендуется использовать доступный баланс

  "balance_available": 500.00,

// Доступный баланс. Баллы активированные и не сгоревшие на дату запроса

  "max_payment": 450.00,

// Максимально допустимая сумма оплаты бонусами по переданному документу. Параметр = 0 при неактивной, заблокировнанной и частично заблокированной карте. Метод process_bonus(см. ниже) повторно проконтролирует непревышение допустимой суммы.

  "card_level_id" : "922eb276-ea39-46f0-8390-67d2c0190c16",

// Идентификатор уровня карты

  "master_card_id": "1b9a31f3-0854-4c99-8bc5-39a327969aa9",

// Идентификатор мастер-карты

  "excluded_articles": [

      "dff8f7cb-3b86-421f-a647-dbe1ab137bb3",

      "48ec83e8-9061-4e9f-86be-9463f66c962b"

      ]

// Массив идентификаторов товаров в чеке, которые нельзя оплачивать бонусами. Клиентское приложение должно учесть эти товары при распределении оплаты по строкам чека.

}

Расчет скидок по документу

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

            При вызове выполняется расчет суммовых и подарочных скидок. Метод возвращает список примененных к строкам чека скидок и рассчитанный документ.

POST

/organization/calculate_document

 

Заголовки

token // Токен доступа выданный при авторизации

Входной JSON

{

  "card_id":"cda1c1f4-e8d8-4ae0-ad4e-df47c46682ee",

//[Необязательный]. Идентификатор существующей карты.

  "card_code":"112",

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

  "card_barcode":"112",

//[Необязательный]. Штриховой код карты. Используется для расчета скидок по картам сторонних программ лояльности.

  "shop_id":"",

//Идентификатор магазина, в котором осуществляется продажа.

  "date_calculate_local":1500659675601,

// [Необязательный] Дата в UNIX-Time на которую необходимо произвести расчет скидок в местном формате. Необходима для одного из условий скидки

 

  "bonus_payment":12,

// Сколько бонусов было потрачено при оплате. Учитывается, если включена настройка “Вычитать сумму оплаты баллами при расчете скидок”

 

"coupon":"coupon_1"

// [Необязательный] Номер промокода.

 

  "cheque_items": 

// Список товаров в документе

  [

    {

      "line_number"  :1,

// Номер строки документа.

      "article"      :"Art_1",

// Идентификатор номенклатуры

      "name"         :"Art_1",

// [Необязательный]. Наименование номенклатуры

      "quantity"     :2,

// Количество

      "price"        :100,

// Цена

      "discount_summ": 0,

// Скидка на позицию номенклатуры

      "summ"         :200,

// Сумма без учета скидки(Количество * Цена)

 

// Свойства товара, необязательный

   "property_values":     

      [

        {

          "property_id":"color_id",

          "value":"Красный"       

        } ...

     ]

    },

    {

      "line_number"  :2,

      "article"      :"Art_2",

      "name"         :"Art_2",

      "quantity"     :1,

      "price"        :150,

      "discount_summ":0,

      "summ"         :150   

    }

  ],

 

// Способы оплаты, прописанные в условиях срабатывания

 "payment_types":

  [

    {

      "type":"cash",

      "sum":100.5   

    },

    {

      "type":"card",

      "sum":      25   

    },

    {

      "type":"certificate",

      "sum":      1   

    }

  ],

// Сертификаты для оплаты чека

  "cert_payments": 

  [

    {

      "line_number":      1,

      "certificate_id":"c2",

      "sum":      100   

    },

    {

      "line_number":      2,

      "certificate_id":"c3",

      "sum":      10   

    } 

  ]

 

}

 

Выходной JSON

{

  "code": 0,

  "message": "Операция выполнена",

  "cheque_items": 

  [

    {

      "line_number"  :   1,

      "article"      :"Art_1",

      "quantity"     :2,

      "price"        :100,

      "summ"         :200,

// Сумма = сумма без скидки - сумма скидки - сумма оплаты баллами, применившаяся к этой строке

      "bonus_percet" :6.665,

// Рассчитанный сервисом процент скидки

      "bonus_summ"   :13.33   

// Рассчитанная сервисом сумма скидки

    },

    {

      "line_number"  :2,

      "article"      :"Art_2",

      "quantity"     :1,

      "price"        :150,

      "summ"         :150,

      "bonus_percet" :6.667,

      "bonus_summ"   :10   

    }

  ],

  "cheque_discounts":

// Таблица примененных скидок.

  [

    {

      "line_number"   :1,

// Номер строки на которую была применена скидка

      "discount_id"   :"497323b7-02ff-4b2c-9320-4928e1467104",

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

      "discount_type" :3,

// Тип скидки

      "discount_summ" :13.33,

// Сумма скидки

      "gift_list_id"  :"",

// Идентификатор сегмента подарков, для скидок с видом подарок. Подарки выдаются и обрабатываются со стороны клиента.

      "discount_name" :"Сумма 50р без условий",

// Наименование скидки

      "discount_value":50   

// Значение указанное при настройке скидки. Зависит от вида скидки. Информативное поле.

    },

    {

      "line_number"   :      2,

      "discount_id"   :"497323b7-02ff-4b2c-9320-4928e1467104",

      "discount_type" :      3,

      "discount_summ" :10,

      "gift_list_id"  :"",

      "discount_name" :"Сумма 50р без условий",

      "discount_value":50   

    }

 ],

  "cheque_bonus": 

  [

    {

      "line_number":      1,

      "discount_id":"7bdedbdb-3eb5-4090-853a-61e43cfd08f6",

      "discount_type":      2,

      "discount_summ":150,

      "gift_list_id":"",

      "discount_name":"rassh",

      "discount_value":10   

    }

  ]

}

 

Расчет всех скидок по документу [Устаревший]

POST

/organization/calculate

 

Заголовки

token // Токен доступа выданный при авторизации

Входной JSON

{

  "card_id":"cda1c1f4-e8d8-4ae0-ad4e-df47c46682ee",

//[Необязательный]. Идентификатор существующей карты.

  "card_code":"112",

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

  "card_barcode":"112",

//[Необязательный]. Штриховой код карты. Используется для расчета скидок по картам сторонних программ лояльности.

  "shop_id":"",

//Идентификатор магазина, в котором осуществляется продажа.

  "cheque_items": 

// Список товаров в документе

  [

    {

      "line_number"  :1,

// Номер строки документа.

      "article"      :"Art_1",

// Идентификатор номенклатуры

      "name"         :"Art_1",

// [Необязательный]. Наименование номенклатуры

      "quantity"     :2,

// Количество

      "price"        :100,

// Цена

      "discount_summ": 0,

// Скидка на позицию номенклатуры

      "summ"         :200    г

// Сумма без учета скидки(Количество * Цена)

    },

    {

      "line_number"  :2,

      "article"      :"Art_2",

      "name"         :"Art_2",

      "quantity"     :1,

      "price"        :150,

      "discount_summ":0,

      "summ"         :150   

    }

  ]

}

 

Выходной JSON

{

  "code": 0,

  "message": "Операция выполнена",

  "cheque_items": 

  [

    {

      "line_number"  :   1,

      "article"      :"Art_1",

      "quantity"     :2,

      "price"        :100,

      "summ"         :200,

      "bonus_percet" :6.665,

// Рассчитанный сервисом процент скидки

      "bonus_summ"   :13.33   

// Рассчитанная сервисом сумма скидки

    },

    {

      "line_number"  :2,

      "article"      :"Art_2",

      "quantity"     :1,

      "price"        :150,

      "summ"         :150,

      "bonus_percet" :6.667,

      "bonus_summ"   :10   

    }

  ],

  "cheque_discounts":

// Таблица примененных скидок.

  [

    {

      "line_number"   :1,

// Номер строки на которую была применена скидка

      "discount_id"   :"497323b7-02ff-4b2c-9320-4928e1467104",

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

      "discount_type" :3,

// Тип скидки

      "discount_summ" :13.33,

// Сумма скидки

      "gift_list_id"  :"",

// Идентификатор сегмента подарков, для скидок с видом подарок. Подарки выдаются и обрабатываются со стороны клиента.

      "discount_name" :"Сумма 50р без условий",

// Наименование скидки

      "discount_value":50   

// Значение указанное при настройке скидки. Зависит от вида скидки. Информативное поле.

    },

    {

      "line_number"   :      2,

      "discount_id"   :"497323b7-02ff-4b2c-9320-4928e1467104",

      "discount_type" :      3,

      "discount_summ" :10,

      "gift_list_id"  :"",

      "discount_name" :"Сумма 50р без условий",

      "discount_value":50   

    }

 ]

}

 

Отражение операции

            Метод вызывается после расчета документа.

Метод выполняет:

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

 

POST

/organization/process_bonus

 

Заголовки

token // Токен доступа выданный при авторизации

Входной JS

ON

{

"operation_type": "sale"/"refund"

// Тип операции продажа/возврат соответственно. При возврате начисленные бонусы будут возвращены пропорционально возвращаемым товарам.

"card_id": uuid,

// Идентификатор существующей карты

"shop_id": uuid,

// Идентификатор магазина в сервисе.

"doc_id" : uuid,

// Идентификатор документа во внешней системе. Уникальный идентификатор операции в рамках ВСЕХ систем взаимодействующих с сервисом.

"doc_type": 0,

// Числовое представление документа во внешней системе. Не обрабатывается сервисом.
"kkm_id": uuid,

// Идентификатор кассы во внешней системе. Не обрабатывается сервером.

"kkm_name" : "Касса на входе",

// Наименование кассы

"cheque_number": "1",

 // Номер документа

"author": "Иванов Иван",

// Автор документа
"description": "Продажа по документу Чек№100500",

// Дополнительное описание операции

"bonus_payment": 20,

 // Количество бонусов списываемое в счет оплаты чека. Если карта частично заблокирована, заблокирована или неактивна - значение не должно передаваться или должно быть  = 0, в противном случае сервис возвращает ошибку.

"doc_id_refund" : uuid,

// Идентификатор документа основания. Используется при виде операции "refund"

"bonus_refund"  : 1.90,

// [Необязательный] Количество бонусов, к возврату. Используется при type="refund". Количество возвращаемых бонусов не должно превышать количество начисленных бонусов, иначе счет карты может стать отрицательным.

"date_calculate"  : 1500659675601, // [Необязательный] Дата в UNIX-Time на которую необходимо произвести расчет скидок

"date_calculate_local"  : 1500659675601, // [Необязательный] Дата в UNIX-Time на которую необходимо произвести расчет скидок в местном формате. Необходима для одного из условий скидки

 

"coupon":"coupon_1"

// [Необязательный] Номер промокода.

 

"auto_bonus_refund":true,

// [Необязательный]  По умолчанию false. При возврате, если взведен, указывает на то, что сервис сам должен списать баллы, начисленные по скидке, на основании документа продажи. Работает по скидкам на строки.

 

"auto_bonus_payment":true,

// [Необязательный]  По умолчанию false. При возврате, если взведен, указывает на то, что сервис сам должен начислить баллы, списанные при оплате документа продажи. Работает пропорционально суммам.


"cheque_items":

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

[

  {

   "line_number"  : 1,

   "article"      : "12456",

   "name"         : "Товар 1",

   "quantity"     : 1.000,

   "price"        : 1.99,

   "summ"         : 200,

   "discount_summ": 1.90,

   "property_values":      

      [

        {

          "property_id":"color_id",

          "value":"Красный"       

        } ...

     ]

  },

  ...

 ],

 "calculate_history":

// [Необязательный]. При выполнении сервер дополняет таблицу начисленными бонусами. Передается в том виде, в котором её вернул метод /calculate_document в свойстве cheque_discounts

 [

  {

   "line_number"        : 1,

   "discount_id"        : "guid",

   "discount_value"     : 100.00,

  }

 ],

  "cheque_bonus": 

  [

    {

      "line_number":      1,

      "discount_id":"7bdedbdb-3eb5-4090-853a-61e43cfd08f6",

      "discount_type":      2,

      "discount_summ":150,

      "gift_list_id":"",

      "discount_name":"rassh",

      "discount_value":10   

    }

  ],

 "level_up":true,

// [Необязательный]. Булево. true false, Если true тогда повысит уровень на новый. Если false тогда оповестит о наличии уровня, на который можно перейти. Работает аналогично функции level_up.

 

 "level_down":true

// [Необязательный]. Булево. true false, Если true тогда понизит уровень. Если false тогда оповестит о наличии уровня, на который можно перейти. Работает аналогично функции level_up.

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

Понижает строго на 1 порядок.

Не понижает уровнеь если:

-    накоплений хватает для текущего уровня

-    на текущем уровне стоит обнуление накоплений

-    нет уровня с более низким приоритетом

 

  "cert_sales": 

  [

    {

      "line_number":      1,

// номер строки

 

      "certificate_id":"certificate_1",

// номер сертификата

 

      "sum":      1000

// Сумма, которая будет начислена на сертификат, если группа сертификатов предполагает произвольную сумму сертификата. Если сумма фиксированная - эта сумма игнорируется   

    } 

  ],

// [Необязательный]. Массив сертификатов для продажи этого документа. При продаже сертификат активируется автоматически.

 

  "cert_payments": 

  [

    {

      "line_number":      1,

// номер строки

 

      "certificate_id":"certificate_1",

// номер сертификата

 

      "sum":      1000   

// Сумма, которая будет списана с сертификата. Оставшаяся часть может сгореть, если группа сертификатов предполагает полное погашение сертификата. Если нет, то остаток останется

    } 

  ]

// [Необязательный]. Массив сертификатов для оплаты этого документа

 

 

// Способы оплаты, прописанные в условиях срабатывания

 "payment_types":

  [

    {

      "type":"cash",

      "sum":100.5   

    },

    {

      "type":"card",

      "sum":      25   

    },

    {

      "type":"certificate",

      "sum":      1   

    }

 

  ]

}

Выходной JSON

 {

"code": 0,

"message": "Операция выполнена",

"bonus_earned": 1000,

// Общее количество начисленных бонусов.

"bonus_spent" : 500,

// Общее количество списанных бонусов.

"card_accum"  : 500,

// Сумма накопления на карте.

"actual_balance": 100

// Актуальный баланс на карте

"transactions_process_bonus":

// Транзакции начисления/списания

 [

  {

    "id": uuid,

    "time": unixtime,

    "type": 0,// 0 - начисление, 1 - списание

    "sum": 100500.99, // Сумма транзакции

  },...

 ]

  "level_up": 

  {

    "level_id":"61fc02f3-cef3-49d1-9150-4369b2a5f6a6",

    "level_name":"1s100k",

    "accum_amount":295466.27,

    "accum_level":100 

  },

  "next_level_up": 

  {

    "level_id":"level_id_1",

    "level_name":"Уровень 1",

    "accum_amount":295466.27,

    "accum_level":150000  

  },

  "level_down": 

  {

    "level_id":"61fc02f3-cef3-49d1-9150-4369b2a5f6a6",

    "level_name":"1s100k",

    "accum_amount":0,

    "accum_level":100 

  },

  "next_level_down": 

  {

    "level_id":"61fc02f3-cef3-49d1-9150-4369b2a5f6a6",

    "level_name":"1s100k",

    "accum_amount":0,

    "accum_level":100 

  }

}

 

Изменение суммы накоплений по продажам на карте

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

            ВНИМАНИЕ! Метод process_bonus автоматически увеличивает сумму накоплений на карте. Повторное накопление не требуется.

           

POST

/organization/card/{id}/accumulate

 

Параметры

id //Идентификатор существующей карты

Заголовки

token // Токен доступа выданный при авторизации

Входной JSON

{

 "reset":false,

// Установить или добавить к сумме накоплений на карте. Если значение reset = false, сумма прибавляется к текущему значению. В противном случае устанавливается в качестве нового значения.

 "sum":100500.99

}

Выходной JSON

{

"code":  0,

"message":"Операция выполнена",

"level_up": // [Необязательный] Возвращается, если начисления по карте достигли порога следующего уровня карты. Если механизм уровней карт не используется(пороги не настроены) - параметр не возвращается.

 {

   "level_id": “ae4ca021-ad18-49e0-ae16-a390f7ba676b”,

 // Идентификатор уровня карты

   "level_name": "Особая карта",

 // Наименование уровня карты

   "accum_amount": 100.99,

 // Сумма накоплений на карте

   "accum_level": 99.99

// Сумма порога для перехода на следующий уровень

 }

}

Проверка и перевод карты на новый уровень

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

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

           

POST

/organization/card/{id}/levelup

 

Параметры

id //Идентификатор существующей карты

Заголовки

token // Токен доступа выданный при авторизации

Входной JSON

{

  "check": true

// Если передан или == true, метод не выполняет автоматический переход, вместо этого возвращает секции с описанием возможности перехода(next_level_up). В противном случае - сервис автоматически переводит карту на следующий уровень, возвращая секцию level_up. Секция next_level_up при этом указывает на условия следуюего уровня.

}

Выходной JSON

{

"code":  0,

"message":"Операция выполнена",

"level_up": // [Необязательный] Возвращается, если начисления по карте достигли порога следующего уровня карты. Если механизм уровней карт не используется(пороги не настроены) - параметр не возвращается.

 {

   "level_id": "ae4ca021-ad18-49e0-ae16-a390f7ba676b",

 // Идентификатор уровня карты

   "level_name": "Особая карта",

 // Наименование уровня карты

   "accum_amount": 100.99,

 // Сумма накоплений на карте

   "accum_level": 99.99

// Сумма порога для перехода на следующий уровень

 }

 

"next_level_up": // [Необязательный]. Если отсутствует - дальнейшее повышение уровня невозможно.

 {

   "level_id": "06fbb3c2-6447-4f4f-a045-a3357d9eee21", // Идентификатор уровня карты, на который был выполнен перевод или следующий уровень.

   "level_name": "VIP-карта",

 // Наименование уровня карты

   "accum_amount": 200.99, // Сумма накоплений на карте

   "accum_level": 199.99 // Сумма порога для перехода на следующий уровень

 }

 

}



Получить историю продаж

GET

/organization/sale_info

 

Параметры в запросе

//[Необязательный]. Идентификатор документа

doc_id // Строка

 

//[Необязательный]. Идентификатор карты

card_id // Строка

 

//[Необязательный]. Идентификатор магазина

shop_id // Строка

 

//[Необязательный]. Дата от которой вести выборку

date_from // Число, unixtime в миллисекундах 1538057266000

 

//[Необязательный]. Дата до которой получить выборку

date_to // Число, unixtime в миллисекундах 1538057266000

 

//[Необязательный]. Дополнительная информация о карте

card_info // Булево true / false

 

//[Необязательный]. Дополнительная информация о клиенте

user_info // Булево true / false

 

//[Необязательный]. Дополнительная информация о транзакциях по документу

transaction_info // Булево true / false

 

//[Необязательный]. Дополнительная информация о транзакциях по документу

operation // Строка “sale”, “refund”

 

//[Необязательный]. Номер страницы которую нужно получить

page

 

//[Необязательный]. Количество строк на страницу, максимум 25

per_page

 

//[Необязательный]. Булево, возвращать расчет пагинации или нет

calculate_count

Заголовки

token // Токен доступа выданный при авторизации

Выходной JSON

{

  "code":  0,

  "message":"Операция выполнена",

  "sales": 

  [

    {

// Номер строки

      "row_number":      1,

 

// Дата продажи

      "date":      1518618728150,

 

// Идентификатор документа продажи

      "doc_id":"fb29e2bb-1193-11e8-a06d-54a05079c2b5",

 

// Идентификатор документа возврата

      "doc_id_refund":"",

// Идентификатор карты

      "card_id":"",

 

// Идентификатор магазина

      "shop_id":"397180fd-e273-4274-9a50-495e6fa1da0f",

 

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

      "cashbox_id":"",

 

// Наименование кассы

      "cashbox_name":"1(2)",

 

// Номер документа продажи

      "check_number":"00ав-000006",

 

// Сумма документа продажи

      "summ":4,

 

// Сумма документа продажи со скидкой

      "summ_with_discount":4,

 

// Операция “sale” || “refund”

      "operation":"sale",

 

// Дата продажи (местная)

      "date_calculate_local":      0,

 

// Краткая информация о карте

      "card":     

      {

        "id":"",

        "code":"",

        "barcode":"",

        "name":"",

        "active":false,

        "blocked":false,

        "card_level_id":"2cc58163-2434-4f39-8c5b-e6704ca18eee"     

      },

 

// Краткая информация о пользователе

      "user":     

      {

        "id":"",

        "name":"",

        "login":"",

        "is_locked":        0,

        "phone":"",

        "email":"",

        "confirmed":        0,

        "recieve_notifications":        0,

        "birthdate":        669081600000

      },

 

// Краткая информация о транзакциях по документу

      "transactions":     

      [

        {

          "id":"8345CC3D-97D4-4BDF-B4BB-BFFC2E13F7F8",

          "time":          1518618731030,

          "sum":4,

          "type":          0       

        }     

      ],

 

// Товары по чеку

      "cheque_items_for_sales":     

      [

        {

          "article_id":"",

          "item_name":"Пополнение карты БС",

          "quantity":1,

          "price":4,

          "discount":0,

          "item_info":""       

        }     

      ]   

    }, … ],

 

// Пагинация

  "pagination": 

      {

         "per_page":    10,    // Количество строк на страницу

         "page"    :    1,     // Номер текущей страницы

         "items"   :    15275, // Всего записей

         "pages"   :    1528   // Всего страниц

     }

}