# Импорт заказов

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

METHOD POST
URI /v1/order/import/
AUTH Bearer <token>

# Параметры

[order, order...] где order имеет следующие атрибуты

Название Тип Обязательный Описание
id string(255) true Идентификатор в экспортирующей системе
external_id integer(11) false Идентификатор в принимающей системе
status range in 'new', 'approved', 'completed', 'removed' true Статус заказа
new - новый неразобранный заказ
approved - назначен курьер для доставки (заказ обработан оператором)
completed - доставлено
removed - отменено (диспетчером или клиентом)
created_at datetime false Дата создания
total float true Сумма заказа (стоимость доставки включена)
delivery_cost float false Стоимость доставки
coins float false Кол-во баллов, которые использовались для оплаты заказа
payment_type range false Способ оплаты, возможные варианты можно посмотреть здесь
shipping_date_from datetime true Время доставки от
shipping_date_to datetime true Время доставки до
comment string false Комментарий
ask_for_checkout range in 'bill', 'agreement' false Запрос документов
bill - запрос счёта
agreement - запрос договора
count_of_returned_bottles integer false Кол-во бутылей к возврату
order_item_list array true Массив из заказанных позиций
client object true Объект содержащий клиента
shipping_address object true Объект содержащий адрес доставки

Атрибуты объекта клиент client, если он существует в системе можно посмотреть здесь

Атрибуты объекта клиент client, если заказ от не зарегистрированного пользователя

Название Тип Обязательный Описание
username string(255) true Имя клиента
phone string(12) true Телефон клиента, например +79191991919
email string(255) false Электронная почта клиента

Атрибуты объекта адрес доставки shipping_address

Название Тип Обязательный Описание
user_address_id integer(11) false Идентификатор в принимающей системе
city string(255) true Город
street string(255) true Улица
house string(10) true Дом
entrance string(10) false Подъезд
floor string(10) false Этаж
room string(10) false Номер квартиры или офиса
str string(255) true Адрес не структурировано, а единой строкой

Массив из заказанных позиций order_item_list включает в себя заказанные позиции [order_item, order_item...] со следующими атрибутами

Название Тип Обязательный Описание
product_id string(255) true Идентификатор продукта в экспортирующей системе
price decimal(10,2) true Цена продукта
quantity integer(11) true Кол-во заказанных продуктов
order_product_id integer(11) false Идентификатор позиции продукта в заказе в системе Aqua-delivery
id string(255) false Идентификатор позиции заказа в экспортирующей системе
name string(255) false Название продукта

# Ключевые моменты

***

  1. Если не будет найден продукт в нашей системе по items.product_id, то в заказ он не будет добавлен

  2. Те продукты, которые не будут найдены в нашей системе по items.product_id будут удалены из заказа

  3. Так же если не будет заполнено какое-то из required полей, то данный заказ или пользователь будет проигнорирован для импорта, а в ответ вернётся сообщение об ошибке.

  4. id - идентификатор отправляющей системы, external_id - идентификатор внешней системы.

  5. Если внешний идентификатор (external_id) ещё не сохранён, то атрибут можно не выводить или оставлять пустым. Но после импорта его обязательно необходимо сохранять и выгружать для избежания дублирования.

  6. order_product_id - нужен для тех случаев когда один и тот же товар представлен в наборах, например клиент заказал 1 набор с водой и еще дополнительно воду. В наборе вода стоит дешевле и представлена отдельной позицией в заказе

Например:

1С выгружает:
id - идентификатор клиента в 1С
external_id - идентификатор клиента AquaDelivery, сохранённый в 1С

AquaDelivery выгружает:
id - идентификатор клиента в AquaDelivery
external_id - идентификатор клиента 1С, сохранённый в AquaDelivery

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

  2. Изменить атрибут coins в заказе невозможно

# Ответ при импорте нескольких заказов

Ответ будет содержать объект обработанных заказов либо сообщение об ошибке ключами этого объекта будут Идентификаторы в экспортирующей системе external_id и под каждым ключом будет описание что произошло, если при импорте не будет ошибок, то атрибут success будет содержать true, а в атрибуте data будет массив с объектом который был импортирован, если при импорте произошла ошибка, то атрибут success будет содержать false, а в атрибуте data будут указаны ошибки

Например так

{
    "success": true,
    "data": {
        "external_id_1": {
          "success": true,
          "data": {}
        },
        "external_id_2": {
          "success": false,
          "data": {}
        }
    }
}

# Пример

Запрос

[
    {
        "id": "657f9553-ff97-11e9-80d3-001e4f377cd7",
        "external_id": null,
        "payment_type": "cash",
        "comment": "comment",
        "shipping_date_from": "2019-11-06T11:00:00Z",
        "shipping_date_to": "2019-11-06T18:00:00Z",
        "status": "new",
        "total": 710,
        "delivery_cost": 30,
        "coins": 710,
        "order_item_list": [
            {
                "name": "Вода 19 л. Ваш бренд",
                "id": "78e66cef-ae2c-11e6-9bf1-f8a9634f667f",
                "external_id": 1,
                "product_id": "78e66cef-ae2c-11e6-9bf1-f8a9634f667f",
                "price": 355,
                "quantity": 2,
                "order_product_id": 1435
            }
        ],
        "shipping_address": {
            "city": "Сыктывкар",
            "street": "Кутузова",
            "house": "19",
            "entrance": null,
            "floor": null,
            "room": null,
            "str": "город Сыктывкар улица Кутузова дом 19"
        },
        "client": {
            "id": "jqLbQR3be8jlJZIh4dBrUCyyIhFzuAKK",
            "external_id": 68,
            "account_number": 68,
            "type": "fiz",
            "username": "Василий Тестовый",
            "addresses": [
                {
                    "id": "78e66cef-ae2c-11e6-9bf1-f8a9634f667f",
                    "external_id": null,
                    "city": "Сыктывкар",
                    "street": "Кутузова",
                    "house": "19",
                    "entrance": null,
                    "floor": null,
                    "room": null,
                    "str": "город Сыктывкар улица Кутузова дом 19"
                }
            ]
        }
    }
]

Ответ

{
    "success": true,
    "data": {
        "657f9553-ff97-11e9-80d3-001e4f377cd7": {
            "success": true,
            "data": [
                {
                    "id": "50894",
                    "external_id": "657f9553-ff97-11e9-80d3-001e4f377cd7",
                    "status": "approved",
                    "client": {
                        "id": 68,
                        "external_id": "jqLbQR3be8jlJZIh4dBrUCyyIhFzuAKK",
                        "username": "Василий Тестовый",
                        "comment": null,
                        "email": "ognev@baitek.org",
                        "account_number": 68,
                        "type": "fiz",
                        "phones": [
                            "9083280832"
                        ],
                        "addresses": [
                            {
                                "id": 2647,
                                "external_id": null,
                                "name": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар – Орбита ближняя (Париж)",
                                "city": "Сыктывкар",
                                "street": "Кутузова",
                                "house": "21",
                                "room": "1",
                                "entrance": "2",
                                "floor": "1",
                                "district_id": 1,
                                "str": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар   Орбита ближняя (Париж)"
                            }
                        ],
                        "requisites": {
                            "bank_account": {
                                "inn": "1234512345",
                                "kpp": "1234512345",
                                "account_number": "1234512345",
                                "correspondent_account": "1234512345",
                                "bik": "1234512345",
                                "bank_name": "1234512345"
                            }
                        },
                        "legal_address": [
                            "г. Сыктывкар,ул. Кутузова,д. 21"
                        ],
                        "product_price_list": {
                            "36": {
                                "product_id": 36,
                                "external_product_id": null,
                                "price": "101.00",
                                "active": false
                            }
                        },
                        "coins_amount": 90,
                        "loyalty_system_is_active": true
                    },
                    "account_number": 68,
                    "total": 710,
                    "delivery_cost": 30,
                    "coins": 710,
                    "payment_type": "cash",
                    "created_at": "2019-11-07 00:54:05",
                    "shipping_address": null,
                    "shipping_date_from": "2019-11-06 14:00:00",
                    "shipping_date_to": "2019-11-06 21:00:00",
                    "order_item_list": [
                        {
                            "name": "Вода 19 л. Ваш бренд",
                            "quantity": 2,
                            "price": 355,
                            "product_id": 28,
                            "order_product_id": 1435
                        }
                    ],
                    "comment": "comment",
                    "ask_for_checkout": null,
                    "count_of_returned_bottles": 0
                }
            ]
        }
    }
}