Замовлення


Orders - даний метод дозволяє керувати замовленнями.


Для створення замовлення по API існує 2 варіанти ідентифікації:



1) По глобальному ключу організації

2) По ключу контрагента організації


При використанні "Ключа контрагента організації" усі замовлення будуть створюватися зі складу та у валюті, що були вказані при генеруванні ключа у налаштуваннях контрагента.


Структура моделі замовлення


id (number) - Ідентифікатор замовлення SaleApp

number (number) - Номер замовлення SaleApp

external_id (string) - Зовнішній ідентифікатор замовлення що був переданий при створенні запису по API

status_id (number) - Ідентифікатор статусу замовлення SaleApp

status_name (string) - Найменування статусу замовлення SaleApp

delivery_type_name (string) - Назва типу доставки зі словника deliveryType

delivery_types (number) - Ідентифікатор типу доставки зі словника deliveryType:

  • 1- Самовивіз
  • 2 - Своя доставка
  • 3 - Нова Пошта відділення
  • 5 - Нова Пошта адреса

receiver_name (string) - ПІБ отримувача

receiver_phone (string) - Телефон отримувача

city (string) - Назва міста доставки

city_ref (string) - Ідентифікатор міста доставки у системі перевізника (наприклад REF - Нова Пошта). Поле обов'язкове якщо delivery_types не дорівнює 1 або 2 

addres (string) - Адреса доставки або найменування відділення перевізника

branch_ref (string) - Ідентифікатор відділення доставки у системі перевізника (наприклад REF відділення - Нова Пошта). Поле обов'язкове якщо delivery_types дорівнює 3 

insurance_amount (number) - Сума страхування посилки у компанії перевізника (ціле число)

delivery_amount (number) - Сума післяплати (оплата при отриманні посилки у перевізника - ціле число) 

type (array) - Масив id та найменування тегів замовлень

ttn (string) - Номер документу перевізника

ttn_ref (string) - Ідентифікатор документу перевізника

seats_number (number) - Кількість упакованих місць по замовленню

products (array) - Масив номенклатури товарів у замовленні (структуру масиву описано нижче)

custom_fields (array) - Масив кастомних полів замовлення. Ключем масиву являється "Назва API" кастомного поля у налаштуваннях

funnel (number) - Айді воронки до якої повинно потрапити замовлення для подальшої обробки в системі. Не оброблюється при виконання PUT запиту

funnel_name (string) - Назва воронки

date_entered (datetime) - Дата та час створення

date_update (datetime) - Дата та час останнього редагування


Структура моделі products


id (number) - Ідентифікатор номенклатури SaleApp

external_id (string) - Зовнішній ідентифікатор номенклатури (Завантажується до SaleApp при створенні надходження поле "Зовнішній іден-р") 

supplier_ids (string) - Масив зовнішніх ідентифікаторів номенклатури (Код постачальника у номенклатурі SaleApp) 

name (string) - Найменування товару

sku (string) - Артикул товару

qty (number) - Кількість товару у замовленні

allocated_qty (number) - Кількість товару зарезервовано у замовленні

cost (number) - Ціна за одну шт. товару

discount_percent (number) - Відсоток знижки на дану позицію у замовленні


Параметри GET запиту


client_id (string) - Айді контрагента SaleApp (Не заповнюється при використанні "Ключа контрагента організації") 

id (number) - Внутрішній ідентифікатор SaleApp

number (number) - Внутрішній номер документу SaleApp

external_id (string) - Зовнішній ідентифікатор замовлення що був переданий при створенні запису по API


Пошук проводиться по параметрам idnumber та external_id замовлення у вказаному пріоритеті. Якщо вказані всі параметри, то приорітет пошуку буде надано id. Результатом обробки буде масив даних моделі з даними про знайдені замовлення.


Параметри GET JSON відповіді


error - Наявність помилок при обробці запиту. true - наявні помилки, false - успішно оброблено 

error_description - Опис наявних помилок в обробці запиту

response - Масив даних моделі при успішному виконанні запиту


Параметри POST запиту


client_id (string) - Айді контрагента SaleApp (Не заповнюється при використанні "Ключа контрагента організації") 

curency_id (string) - Айді валюти SaleApp (Не заповнюється при використанні "Ключа контрагента організації") 

warehouse_id (string) - Айді складу SaleApp (Не заповнюється при використанні "Ключа контрагента організації") 

external_id (string) - Зовнішній ідентифікатор замовлення

delivery_types (number) - Ідентифікатор типу доставки зі словника deliveryType:

  • 1 - Самовивіз
  • 2 - Своя доставка
  • 3 - Нова Пошта відділення
  • 5 - Нова Пошта адреса

receiver_name (string) - ПІБ отримувача

receiver_phone (string) - Телефон отримувача (всі символи окрім цифр будуть видалені при збереженні)

city (string) - Назва міста доставки

city_ref (string) - Ідентифікатор міста доставки у системі перевізника (наприклад REF - Нова Пошта). Поле обов'язкове якщо delivery_types не дорівнює 1 або 2 

addres (string) - Адреса доставки або найменування відділення перевізника

branch_ref (string) - Ідентифікатор відділення доставки у системі перевізника (наприклад REF відділення - Нова Пошта). Поле обов'язкове якщо delivery_types дорівнює 3 

insurance_amount (number) - Сума страхування посилки у компанії перевізника (ціле число)

delivery_amount (number) - Сума післяплати (оплата при отриманні посилки у перевізника - ціле число) 

type (string) - id тегів замовлень (модель OrdersTags) вказані через кому (приклад 1,3,5) 

custom_fields (array) - Масив кастомних полів замовлення у json_encode. Ключем масиву являється "Назва API" кастомного поля у налаштуваннях

funnel (string) - Айді воронки до якої повинно потрапити замовлення для подальшої обробки в системі. Не оброблюється при виконання PUT запиту

products (array) - json_encode Масив найменувань товарів у замовленні (структуру масиву описано у Поля json_encode(products))  


Поля json_encode(products)


id (number) - Ідентифікатор номенклатури SaleApp

external_id (string) - Зовнішній ідентифікатор номенклатури (Завантажується до SaleApp при створенні надходження поле "Зовнішній іден-р") Проводиться пошук по полю лише при використанні "Глобального ключа організації" 

supplier_id (string) - Зовнішній ідентифікатор номенклатури (Код постачальника у номенклатурі SaleApp). Проводиться пошук по полю лише при використанні "Ключа контрагента організації" 

sku (string) - Артикул товару

qty (number) - Кількість товару у замовленні

cos (tnumber) - Ціна за одну шт. товару

discount_percent (number) - Відсоток знижки на дану позицію у замовленні


При створенні замовлення, пошук товарів проводится по полям моделі products, а саме idexternal_idsupplier_id та sku, з пріорітетністю у вказаній послідовності (в межах дозволених ключем апі що використовується). Спершу система проводить пошук по id, якщо товар не буде знайдено то пошук буде проведно по external_id або supplier_id (в залежності від типу ключа апі) і після цього по sku.

За результатами успішності виконання запиту, буде створено нове замовлення та повернуто у відповіді ідентифікатор створеного запису create_id.


Параметри PUT запиту


id (number) - Внутрішній ідентифікатор SaleApp (Використовується лише для пошуку замовлення)

external_id (number) - Зовнішній ідентифікатор що був переданий при створенні запису по API (Використовується лише для пошуку замовлення)

client_id (string) - Айді контрагента SaleApp (Не оброблюється при використанні "Ключа контрагента організації"). Заповнення даного поля буде корисним у випадку пошуку замовлення по external_id та наявності однакового значення external_id у замовленнях різних клієнтів

curency_id (string) - Айді валюти SaleApp (Не оброблюється при використанні "Ключа контрагента організації") 

warehouse_id (string) - Айді складу SaleApp (Не оброблюється при використанні "Ключа контрагента організації") 

delivery_types (number) - Ідентифікатор типу доставки зі словника deliveryType. Обовязкове для заповнення при зміні міста, відділення та адреси доставки замовлення

  • 1 - Самовивіз
  • 2 - Своя доставка
  • 3 - Нова Пошта відділення
  • 5 - Нова Пошта адреса

receiver_name (string) - ПІБ отримувача

receiver_phone (string) - Телефон отримувача (всі символи окрім цифр будуть видалені при збереженні)

city (string) - Назва міста доставки

city_ref (string) - Ідентифікатор міста доставки у системі перевізника (наприклад REF - Нова Пошта). Поле обов'язкове якщо delivery_types не дорівнює 1 або 2 

addres (string) - Адреса доставки або найменування відділення перевізника

branch_ref (string) - Ідентифікатор відділення доставки у системі перевізника (наприклад REF відділення - Нова Пошта). Поле обов'язкове якщо delivery_types дорівнює 3 

insurance_amount (number) - Сума страхування посилки у компанії перевізника (ціле число)

delivery_amount (number) - Сума післяплати (оплата при отриманні посилки у перевізника - ціле число) 

type (string) - id тегів замовлень (модель OrdersTags) вказані через кому (приклад 1,3,5) 

products (array) - json_encode Масив найменувань товарів у замовленні (структуру масиву описано нижче) 


 Поля json_encode(products)


id (number) - Ідентифікатор номенклатури SaleApp

external_id (string) - Зовнішній ідентифікатор номенклатури (Завантажується до SaleApp при створенні надходження поле "Зовнішній іден-р") Проводиться пошук по полю лише при використанні "Глобального ключа організації" 

supplier_id (string) - Зовнішній ідентифікатор номенклатури (Код постачальника у номенклатурі SaleApp). Проводиться пошук по полю лише при використанні "Ключа контрагента організації" 

sku (string) - Артикул товару

qty (number) - Кількість товару у замовленні

cos (tnumber) - Ціна за одну шт. товару

discount_percent (number) - Відсоток знижки на дану позицію у замовленні


Пошук запису для оновлення проводиться по id або external_id тому для успішності виконання, повинен обов'язково бути вказаний один з цих параметрів. Якщо вказані обидва параметри, то приорітет пошуку буде надано id.


Параметри DELETE запиту


id (number) - Внутрішній ідентифікатор SaleApp

external_id (number) - Зовнішній ідентифікатор що був переданий при створенні запису по API


Видалення замовлень по апі дозволено лише у статусах:

  • 0 - Новий
  • 1 - Повністю зарезервований
  • 2 - Частково зарезервований


Пошук запису для видалення проводиться по id або external_id тому для успішності виконання, повинен обов'язково бути вказаний один з цих параметрів. Якщо вказані обидва параметри, то приорітет пошуку буде надано id.

Разом з повідомленням про успішність або не успішність виконання операції видалення, буде повернуто масив з даними deleted про ідентифікатори замовлень які було видалено.


Параметри POST PUT DELETE JSON відповіді


error - Наявність помилок при обробці запиту. true - наявні помилки, false - успішно оброблено 

error_description - Опис наявних помилок у обробці запиту

create_id - Ідентифікатор створеного запису (повертається лише при надсиланні POST запиту) 

deleted - Масив з ідентифікаторами видалених замовлень (повертається лише при надсиланні DELETE запиту)


[ 
  'id' => '', 
  'number' => '', 
  'external_id' => '' 
] 


Приклад використання php


# Приклад php curl запиту отримання даних про замовлення

$post = [
  'method_type' => 'GET',
  'client_id' => 50,
  'id' => 66,
  'number' => 1056,
  'external_id' => 100222312,
];
$ch = curl_init(".../Orders?secret_key={Ключ}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
curl_close($ch);

# JSON відповідь

{
  "error":"false",
  "error_description":"",
  "response"::[
    {
      "id":"74",
      "number":"1057",
      "external_id":"100222312",
      "status_id":"1",
      "delivery_type_name":"Нова Пошта відділення",
      "delivery_types":"3",
      "receiver_name":"Борис Вапненко",
      "receiver_phone":"380678976756",
      "city":"Київ",
      "city_ref":"8d5a980d-391c-11dd-90d9-001a92567626",
      "addres":"Відділення №2: вул. Бережанська, 9 (Оболонь Лугова)",
      "branch_ref":"7b422fbe-e1b8-11e3-8c4a-0050568002cf",
      "insurance_amount":"300",
      "delivery_amount":"290",
      "type_ids":"8",
      "date_entered":"2022-09-04 20:17:34",
      "date_update":"2022-09-04 20:17:34",
      "type":[
        {
         "id":"8",
         "name":"Спец умови"
        }],
      "products":[
        {
         "id":"40",
         "name":"Test 4",
         "sku":"UA23",
         "external_id":"0",
         "qty":"1",
         "allocated_qty":"1",
         "cost":"12.98",
         "discount_percent":"0",
         "supplier_ids":[
           {
            "code":"232334",
            "supplier_id":"39"
           }]
        }
      ],
      "status_name":"Повністю зарезервований"
    }
  ]
}

# Приклад php curl запиту на створення замовлення

$post = [
  'method_type' => 'POST',
  'client_id' => 50, //в залешності від ключа авторизаці
  'curency_id' => 6, //в залешності від ключа авторизаці
  'warehouse_id' => 7, //в залешності від ключа авторизаці
  'external_id' => 100222312,
  'delivery_types' => 3,
  'receiver_name' => 'Борис Вапненко',
  'receiver_phone' => '380678976756',
  'city' => 'Київ',
  'city_ref' => '8d5a980d-391c-11dd-90d9-001a92567626',
  'addres' => 'Відділення №2: вул. Бережанська, 9 (Оболонь Лугова)',
  'branch_ref' => '7b422fbe-e1b8-11e3-8c4a-0050568002cf',
  'insurance_amount' => 300,
  'delivery_amount' => 290,
  'type' => '8,3',
  'products' => json_encode([
    [
     'id' => 42,
     'external_id' => 232336, //в залешності від ключа авторизаці
     'supplier_id' => 234561, //в залешності від ключа авторизаці
     'sku' => 'UA25',
     'qty' => 1,
     'cost' => 49.79,
     'discount_percent' => 1,
    ]
  ]),
];
$ch = curl_init("https://apps.conwix.com/server/api/Orders?secret_key={Ключ}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
curl_close($ch);

# JSON відповідь

{
  "error":"false",
  "error_description":"Документ успішно створено!",
  "create_id":134
}