Импорт заказов на сайт - XML файл

На данной странице описана структура содержимого XML файла, использующегося для импорта заказов на сайт на платформе komiz.io из системы бухгалтерского учета, например «1C».

Ниже приведен сокращенный пример файла имеющего описываемый формат (полный пример приведен далее).

<?xml version="1.0" encoding="utf-8"?>
<orders amount="2">                                            <!-- Содержит теги заказов -->
    <order code="12345678">                                    <!-- Содержит информацию об одном заказе -->
        <time_unixtime>1469606160</time_unixtime>              <!-- Одно из полей заказа -->
        ...
        <offers amount="3">                                    <!-- Содержит теги товаров в заказе -->
            <offer article="art1" asId="">                     <!-- Содержит информацию об одном товаре в заказе -->
                <title>Товар1</title>                          <!-- Одно из полей товара в заказе -->
                ...
            </offer>
            <offer article="art2" asId="">
                ...
            </offer>
            <offer article="art3" asId="">
                ...
            </offer>
        </offers>
    </order>
    <order code="87654321">
        ...
    </order>
</orders>

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

Данные в файле содержатся в кодировке UTF-8.

Ниже перечислены основные особенности структуры файла.

  • Коренным тегом XML документа является orders. Он является контейнером списка заказов, каждому из которых соответствует дочерний тег order.
  • Тег order в дочерних тегах и атрибутах содержит информацию о самом заказе, а также информацию о товарах в данном заказе.
  • Тег offers (который находится в теге order) содержит информацию о товарах в текущем заказе.
  • Информация о каждом товаре в заказе заключена в тег offer являющимся дочерним для offers.
  • Каждой «сущности» в системе соответствует ее «уникальный идентификатор». Для заказа - это «код заказа» (содержится в атрибуте code тега order); для товара - это «артикул» (содержится в атрибуте article тега offer).

ОБРАТИТЕ ВНИМАНИЕ!

  • Все атрибуты тегов должны обязательно присутствовать.
  • Большинство тегов могут отсутствовать. Исключением являются дочерние теги для тега offer и коренной тег orders. Если необязательного тега не передается, то соответствующее ему данное либо не изменяется (при существовании заказа в базе данных сайта), либо заполняется «пустым значением» (в случае отсутствия заказа в базе данных сайта).
  • Нужно учесть, что количество повторяемых тегов варьируется относительно количества отображаемых ими «сущностей». Например, количество тегов order равно количеству заказов в данном файле (т.е. может быть равным нулю). А, например, количество тегов offer равно количеству товаров в конкретном заказе (т.е. может быть равно нулю).
  • Если заказ уже существует в базе данных сайта, то отсутствие тега offers означает, что изменение информации о товарах в заказе не будет производиться. Для того, чтобы удалить все товары в заказе, нужно передать данный тег и указать ноль в его атрибуте amount.

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

Тег Контекст Содержимое Атрибуты Описание
additionalField offer Строка
0-4294967296
name - [строка: 1-255] - Значение поля «Имя в интерфейсе» для данного дополнительного поля. «Дополнительное поле» товара
additionalReceiver order Строка
0-255
Поле заказа «Дополнительный получатель»
adminComment order Строка
0-255
Поле заказа «Комментарий оператора»
amount offer Целое число
1-2147483647
Поле товара в заказе «Количество». Количество этого товара в заказе. Не путать с атрибутом amount тега offers
apartment order Строка
0-255
Поле заказа «Квартира»
building order Строка
0-255
Поле заказа «Дом»
bulk order Строка
0-255
Поле заказа «Корпус»
city order Строка
0-255
Поле заказа «Нас. пункт»
code offer Строка, состоящая из двух натуральных чисел разделенных «тире»
Длина: 3-255
Поле товара в заказе «Код».
Первое число - это «идентификатор товара», второе - «идентификатор модификации» (могут быть равны). Пример: 123-987
customCity order Строка
0-255
Поле заказа «Другой нас. пункт» (указывается как дополнительное поле, если «Нас. пункт» будет указан как «[Другой нас. пункт]», иначе содержит пустую строку)
country order Строка
0-255
Поле заказа «Страна»
time order Строка
Длина: 19
Формат: ISO 8601
Поле заказа «Время создания» в формате ISO 8601 (но без буквы Т).
Время создания заказа. Пример: 2016-07-27 17:05:30.
ВНИМАНИЕ! Игнорируется, в случае, если заказ существует на сайте
ВНИМАНИЕ! Игнорируется, в случае, если передается тег time_unixtime.
time_unixtime order Целое число
0-2147483647
Поле заказа «Время создания» в формате UNIXTIME.
Время создания заказа. Пример: 495546300.
ВНИМАНИЕ! Игнорируется, в случае, если заказ существует на сайте.
dateSend order Строка
0 или 10
Формат: ISO 8601
Поле заказа «Дата отправки».
Дата отправки заказа. Пустая строка, если не указано. Пример: 2014-12-31
dateDelivery order Строка
0 или 10
Формат: ISO 8601
Поле заказа «Дата доставки».
Дата доставки заказа. Пустая строка, если не указано. Пример: 2014-12-31
deliveryServiceCode order Строка
0-255
Поле заказа «Код заказа в системе службы доставки»
deliveryStatus order Строка
1-255
Поле заказа «Статус доставки»
deliveryType order Строка
0-255
Поле заказа «Тип доставки»
discount order Дробное число, разделитель «точка», максимум два символа после точки, если она есть
От 0 до 100.00
Поле заказа «Скидка на заказ», в процентах
district order Строка
0-255
Поле заказа «Район»
email order Строка
0-255
Поле заказа «Email»
firstName order Строка
0-255
Поле заказа «Имя»
offer offers Дочерние теги article - [строка: 1-255] - Артикул - уникальный идентификатор товара. Учитывается только, если не передается атрибут asId
asId - [строка: 1-255] - Идентификатор товара в системе бухгалтерского учета (accounting system id)
Содержит информацию о товаре. Всей группе одинаковых товаров соответствует один этот тег. Количество таких товаров указано в дочернем теге amount
offers order Дочерние теги amount - [Целое число 0-2147483647] - Количество разных товаров в заказе. Соответствует количеству дочерних тегов offer (если равно нулю, значит их нет) Контейнер тегов offer, которые содержат информацию о товарах в заказе, если таковые имеются
lastName order Строка
0-255
Поле заказа «Фамилия»
middleName order Строка
0-255
Поле заказа «Отчество»
order orders Дочерние теги code - [строка: 1-255] - Код заказа - уникальный идентификатор заказа Информация о заказе, включая информацию о товарах в заказе. Если передается заказ с несуществующим кодом, то он будет создан на сайте
orders Коренной Дочерние теги Является контейнером для тегов заказов (order)
payStatus order Строка
1-255
Поле заказа «Статус оплаты»
payType order Строка
0-255
Поле заказа «Тип оплаты»
postIndex order Строка
0-255
Поле заказа «Почтовый индекс»
price offer Дробное число, разделитель «точка», максимум два символа после точки, если она есть
От 0 до 99999999.99
Поле товара в заказе «Цена за один (без учета скидки)»
region order Строка
0-255
Поле заказа «Область»
status order Строка
1-255
Поле заказа «Статус»
storeAddress order Строка
0-255
Поле заказа «Адрес склада»
street order Строка
0-255
Поле заказа «Улица»
telephone order Строка
0-255
Поле заказа «Телефон»
userComment order Строка
0-255
Поле заказа «Комментарий пользователя»
userAsId order Строка
0-255
Идентификатор пользователя в системе бухгалтерского учета, к которому привязан заказ
userId order Целое число
1-2147483647
Идентификатор пользователя, к которому привязан заказ. Если равно 1 (единица), то это специальный пользователь (так называемый «незарегистрированный»). Учитывается только если не передается userAsId.

<?xml version="1.0" encoding="utf-8"?>
<orders amount="1">
    <order code="2145386259">
        <status>test</status>
        <payStatus>Оплачен</payStatus>
        <deliveryStatus>Получен</deliveryStatus>
        <time>2016-08-03 20:11:35</time>
        <time_unixtime>1470244295</time_unixtime>
        <orderPriceAll>20.10</orderPriceAll>
        <orderPriceResult>20.10</orderPriceResult>
        <orderPrice>22.33</orderPrice>
        <discount>10.00</discount>
        <userDiscount>0.00</userDiscount>
        <userId>7035</userId>
        <userAsId></userAsId>
        <telephone>011111111, 02222222</telephone>
        <email>user@site.com</email>
        <lastName>Иванов</lastName>
        <firstName>Петр</firstName>
        <middleName>Николаевич</middleName>
        <userComment></userComment>
        <adminComment>Клиент хочет, чтобы заказ доставили с 16:00 до 17:00 по указанному адресу</adminComment>
        <country>Австрия</country>
        <city>Вена</city>
        <deliveryType>Транспортной компанией Австрия-Экспресс</deliveryType>
        <payType>Налично при получении заказа</payType>
        <orderDeliveryPrice>0.00</orderDeliveryPrice>
        <orderDeliveryPriceName></orderDeliveryPriceName>
        <dateSend>2018-02-16</dateSend>
        <dateDelivery>2018-02-17</dateDelivery>
        <deliveryServiceCode></deliveryServiceCode>
        <storeAddress></storeAddress>
        <additionalReceiver></additionalReceiver>
        <postIndex>123123</postIndex>
        <region></region>
        <district></district>
        <street>Лесная</street>
        <building>8</building>
        <bulk></bulk>
        <apartment>9</apartment>
        <offers amount="1">
            <offer article="35130944" asId="" action="0">
                <offerId>5325</offerId>
                <amount>1</amount>
                <code>5325-6261</code>
                <title>Видеопроектор BIG VP2000</title>
                <size></size>
                <color></color>
                <material></material>
                <weight>0</weight>
                <price>22.33</price>
                <priceAll>22.33</priceAll>
                <priceResult>20.10</priceResult>
                <priceResultAll>20.10</priceResultAll>
            </offer>
        </offers>
    </order>
</orders>