Request

  • tenant - (mandatory) - to which tenant/system to connect, e.g. "zegoal"
  • customer_name - (conditional)
  • account_id - (conditional)
  • external_customer_id - (conditional)
  • create_account - (optional; default true)
  • start_date - (optional; default now())
  • end_date - (optional; default "")
  • order_type - (optional; default "")
  • account_address_id - (optional; mandatory if account exists)
  • tel_num - (optional; default "")
  • email - (optional; default "")
  • address_text - (optional; default "")
  • order_description - (optional; default "")
  • order_status - (optional; default Draft)
  • order_positions - (optional; default [])
    • [0...n]
      • position_type - (optional; default "")
      • product_name - (mandatory if catalog_position_id is not provided)
      • product_code - (optional)
      • quantity - (optional; default 1)
      • unit - (optional; default "шт")
      • price - (mandatory if catalog_position_id is not provided)
      • description - (optional)
      • implementation_comments - (optional)

Универсальный интерфейс для создание заказа. Поддерживает следующие режимы работы:

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

Сценарий 1. Заказ для существующего клиента

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

Для идентификации клиента может быть использован:

  • customer_name
  • account_id
  • external_customer_id

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


Напомним, что многие атрибуты для сущностей сконфигурированы с заполнением "по умолчанию" и будут добавлены в запрос автоматически.

Запрос

{
   "tenant": "orderingtenant885",
   "account_id": 1,
   "account_address_id": 1,
   "tel_num": "11122233344455",
   "email": "newCusmoter@email.com"

}
CODE

Ответ

{
   "processing_result":    {
      "text": "Order is created.",
      "status": "ok",
      "ctx_id": "37GMTPLL:0-dP",
      "code": 0
   },
   "processing_date": "2020-07-03 09:16:31",
   "CreateOrder":    {
      "response":       {
         "tenant": "orderingtenant885",
         "order":          {
            "start_date": "2020-07-03 09:16:30",
            "order_type": "",
            "order_total": 0,
            "order_status": "Draft",
            "order_positions": [],
            "order_num": 3,
            "order_id": 3,
            "order_description": "",
            "end_date": "",
            "customer_name": "NewClient_1",
            "address_text": "",
            "account_id": 1,
            "account_address_id": 1
         },
         "create_account": true,
         "TZ": "Europe/Minsk"
      },
      "request":       {
         "tenant": "orderingtenant885",
         "tel_num": "11122233344455",
         "email": "newCusmoter@email.com",
         "account_id": 1,
         "account_address_id": 1
      },
      "extra_logic": "",
      "enriched_request":       {
         "tenant": "orderingTenant885",
         "tel_num": "11122233344455",
         "start_date": "2020-07-03 09:16:30",
         "order_type": "",
         "order_status": "Draft",
         "order_positions": [],
         "order_description": "",
         "end_date": "",
         "email": "newCusmoter@email.com",
         "create_account": true,
         "address_text": "",
         "account_id": 1,
         "account_address_id": 1
      }
   }
}
CODE

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

  • аккаунт будет идентифицирован по  "customer_name": "name1",
  • переданы конкретные координаты кастомера для этого заказа (телефон и почта)
  • указан конкретный id адреса для заказа
  • В примере указана одна позиция из каталога, а одна добавлена вручную.


Запрос

{
   "tenant": "orderingtenant885",
   "customer_name": "NewClient_1",
   "account_address_id": 1,
   "start_date":"2020-07-03 09:19:58",
   "end_date":"2020-07-06 09:19:58",
   "tel_num": "0012232211",
   "email": "newCusmoter@email.com",
   "address_text":"a big white building",
   "order_description":"order Description",
   "order_status":"Draft",
   "order_type": "OnSite",
   "order_positions": [
   	{
   	 "catalog_position_id": 4
   	},
   	{
   	 "position_type": "Goods",
   	 "product_name": "position #2",
     "price": 200.50,
   	 "product_code":"6205",
   	 "unit":"кг",
   	 "quantity": 1
   	}
   ]  
}
CODE

Ответ

{
   "processing_result":    {
      "text": "Order is created.",
      "status": "ok",
      "ctx_id": "br8NGtHP:0-DL",
      "code": 0
   },
   "processing_date": "2020-07-03 09:22:34",
   "CreateOrder":    {
      "response":       {
         "tenant": "orderingtenant885",
         "order":          {
            "start_date": "2020-07-03 09:19:58",
            "order_type": "OnSite",
            "order_total": 260.5,
            "order_status": "Draft",
            "order_positions":             [
                              {
                  "unit": "шт",
                  "quantity": 2,
                  "product_name": "position #612",
                  "price": 30,
                  "position_type": "Goods",
                  "position_id": 7,
                  "order_id": 4,
                  "catalog_position_id": 4
               },
                              {
                  "unit": "кг",
                  "quantity": 1,
                  "product_name": "position #2",
                  "product_code": "6205",
                  "price": 200.5,
                  "position_type": "Goods",
                  "position_id": 8,
                  "order_id": 4
               }
            ],
            "order_num": 4,
            "order_id": 4,
            "order_description": "order Description",
            "end_date": "2020-07-06 09:19:58",
            "customer_name": "NewClient_1",
            "address_text": "a big white building",
            "account_id": 1,
            "account_address_id": 1
         },
         "create_account": true,
         "TZ": "Europe/Minsk"
      },
      "request":       {
         "tenant": "orderingtenant885",
         "tel_num": "0012232211",
         "start_date": "2020-07-03 09:19:58",
         "order_type": "OnSite",
         "order_status": "Draft",
         "order_positions":          [
            {"catalog_position_id": 4},
                        {
               "unit": "кг",
               "quantity": 1,
               "product_name": "position #2",
               "product_code": "6205",
               "position_type": "Goods",
               "price": 200.5
            }
         ],
         "order_description": "order Description",
         "end_date": "2020-07-06 09:19:58",
         "email": "newCusmoter@email.com",
         "customer_name": "NewClient_1",
         "address_text": "a big white building",
         "account_address_id": 1
      },
      "extra_logic": "",
      "enriched_request":       {
         "tenant": "orderingtenant885",
         "tel_num": "0012232211",
         "start_date": "2020-07-03 09:19:58",
         "order_type": "OnSite",
         "order_status": "Draft",
         "order_positions":          [
            {"catalog_position_id": 4},
                        {
               "unit": "кг",
               "quantity": 1,
               "product_name": "position #2",
               "product_code": "6205",
               "position_type": "Goods",
               "price": 200.5
            }
         ],
         "order_description": "order Description",
         "end_date": "2020-07-06 09:19:58",
         "email": "newCusmoter@email.com",
         "customer_name": "NewClient_1",
         "create_account": true,
         "address_text": "a big white building",
         "account_address_id": 1
      }
   }
}
CODE


Сценарий 2, заказ для нового клиента

Для данного сценария интерфейсу требуется ряд атрибутов для создание собственно нового аккаунта:

  • customer_name
  • external_customer_id

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


Запрос

{
   "tenant": "orderingtenant885",
   "external_customer_id":"2",
   "customer_name": "NewClient_2",
   "start_date":"2020-07-03 09:26:53",
   "end_date":"2020-07-06 09:26:53",
   "tel_num": "1112223334",
   "email": "newCusmoter2@email.com",
   "address_text":"a big white building",
   "order_description":"order Description",
   "order_status":"Draft",
   "order_type": "OnSite",
   "order_positions": [
   	{
   	 "catalog_position_id": 1
   	},
   	{
   	 "catalog_position_id": 2
   	},
   	{
   	 "catalog_position_id": 3
   	}
   ]
   
   
}
CODE

Ответ

{
   "processing_result":    {
      "text": "Order is created.",
      "status": "ok",
      "ctx_id": "M72r2hJ6:0-LH",
      "code": 0
   },
   "processing_date": "2020-07-03 09:28:08",
   "CreateOrder":    {
      "response":       {
         "tenant": "orderingtenant885",
         "order":          {
            "start_date": "2020-07-03 09:26:53",
            "order_type": "OnSite",
            "order_total": 238.6,
            "order_status": "Draft",
            "order_positions":             [
                              {
                  "unit": "шт",
                  "quantity": 3,
                  "product_name": "position #552",
                  "price": 23.1,
                  "position_type": "Goods",
                  "position_id": 9,
                  "order_id": 5,
                  "catalog_position_id": 1
               },
                              {
                  "unit": "шт",
                  "quantity": 3,
                  "product_name": "position #340",
                  "price": 23.1,
                  "position_type": "Goods",
                  "position_id": 10,
                  "order_id": 5,
                  "catalog_position_id": 2
               },
                              {
                  "unit": "шт",
                  "quantity": 2,
                  "product_name": "position #296",
                  "price": 50,
                  "position_type": "Goods",
                  "position_id": 11,
                  "order_id": 5,
                  "catalog_position_id": 3
               }
            ],
            "order_num": 5,
            "order_id": 5,
            "order_description": "order Description",
            "end_date": "2020-07-06 09:26:53",
            "customer_name": "NewClient_2",
            "address_text": "a big white building",
            "account_id": 2,
            "account_address_id": 2
         },
         "create_account": true,
         "TZ": "Europe/Minsk"
      },
      "request":       {
         "tenant": "orderingtenant885",
         "tel_num": "1112223334",
         "start_date": "2020-07-03 09:26:53",
         "order_type": "OnSite",
         "order_status": "Draft",
         "order_positions":          [
            {"catalog_position_id": 1},
            {"catalog_position_id": 2},
            {"catalog_position_id": 3}
         ],
         "order_description": "order Description",
         "external_customer_id": "2",
         "end_date": "2020-07-06 09:26:53",
         "email": "newCusmoter2@email.com",
         "customer_name": "NewClient_2",
         "address_text": "a big white building"
      },
      "extra_logic": "",
      "enriched_request":       {
         "tenant": "orderingtenant885",
         "tel_num": "1112223334",
         "start_date": "2020-07-03 09:26:53",
         "order_type": "OnSite",
         "order_status": "Draft",
         "order_positions":          [
            {"catalog_position_id": 1},
            {"catalog_position_id": 2},
            {"catalog_position_id": 3}
         ],
         "order_description": "order Description",
         "external_customer_id": "2",
         "end_date": "2020-07-06 09:26:53",
         "email": "newCusmoter2@email.com",
         "customer_name": "NewClient_2",
         "create_account": true,
         "address_text": "a big white building"
      }
   }
}
CODE


Алгоритм валидации атрибутов

Логика анализа атрибутов для решения создавать-не создавать аккаунт:


  • ожидаем account_id или external_customer_id или customer_name и ищем у нас аккаунт. Если есть - используем его и все остальные атрибуты запроса не обязательные.
  • если не найден то проверяем параметр create_account.
    • Если true (по умолчанию true) то валидируем все атрибуты для создания аккаунта (customer_name, external_customer_id) и создаем его.
    • Если false то отдаем ошибку что по такому external_customer_id или customer_name аккаунт не найден.


account_id имеет выше приоритет над другими атрибутами. Если его прислали то сразу ищем аккаунт и возвращаем ошибку если не нашли.При получении external_customer_id и customer_name то external_customer_id приоритетней.