...
- Полные выгрузки внешняя система делает либо по расписанию, либо при ручной выгрузке. «Загруженность» предыдущих порций информации СМ внешняя система не проверяет.
Правила обработки информации сервером УКМ 4
...
Структура данных, передаваемых из внешней системы в УКМ 4
Свойства товаров (весь справочник) (в СуперМаг - справочник "Размеры")
...
, в Супермаг Плюс – справочник «Размеры»):
<Properties fullness=”F”>
<version=””>
<Property> // minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
<PropertyValue>
<value></value>
</PropertyValue>
</Property>
</Properties>
Налоговые группы (весь справочник):
<taxes
...
fullness=”F”>
...
<version=””>
...
<group>//
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
<id></id>
<code></code> (в Супермаг Плюс – Тип группы – украинские группы А,B,C…)
...
<tax>
...
//
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
<id></id>
...
<name></name>
...
<sequence></
...
sequence> (в Супермаг Плюс – Приоритет начисления налога)
<percent></percent>
...
</tax>
...
</group>
...
<taxes/>
Структура магазинов (отделы) (весь справочник):
<stocks
...
fullness=”F”>
...
<version=””>
...
<store
...
storeId=””>
...
//
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
<stock> //
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
<id></id> (код магазина в Супермаг Плюс)
<name></name>
</stock>
</store>
</stocks>
Классификатор товаров (весь справочник):
<classif
...
fullness=”F”>
...
<version=””>
...
<group> //
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
<id></id>
<owner></owner>
<name></name>
</group>
</classif>
Товары (может быть весь справочник или только изменения):
<updateItems
...
fullness=”F/I”>
...
<version=””>
...
<item>//
...
minOccurs=”0”
...
maxOccurs="unbounded"
...
Скидка «Персональная скидка на классификатор (СМ+)» (может быть весь справочник или только изменения)
<discountPersonal fullness=”F/I”>
<program>// minOccurs=”0” maxOccurs="unbounded"
<id></id> (идентификатор вида цены в СМ)
<name></name> (название вида цены в СМ)
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded" (перечень магазинов, для которых действует данный экземпляр скидки)
</storeDiscount>
<card>// minOccurs=”0” maxOccurs="unbounded"
<number></number> (номер карты, в т.ч. префикс)
<block></block> (признак блокировки карты)
<type></type> (1 – совместная применимость, 0 – не применимость)
<name></name> (имя клиента в чеке)
<classifId></classifId> (ссылка на узел классификатора)
<discount></discount>
</card>
</program>
</discountPersonal>
Для каждой карты всегда выгружается полный перечень узлов классификатора, на которые должна быть предоставлена скидка.
Скидка на классификатор (СМ+) (весь справочник)
<classifDiscount fullness=”F”>
<program>// minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
</storeDiscount>
<classif classifId=””> // minOccurs=”0” maxOccurs="unbounded"
<discount></discount>
<classif>
</program>
</classifDiscount>
Скидка на сумму чека (СМ+) (весь справочник)
<receiptDiscount fullness=”F”>
<program>// minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
</storeDiscount>
<receipt> // minOccurs=”0” maxOccurs="unbounded"
<amountFrom></amountFrom>
<timeFrom></timeFrom>
<discount></discount>
</receipt>
</program>
</receiptDiscount>
Скидка на кол-во товара (СМ+) (весь справочник)
<quantityDiscount fullness=”F”>
<program>// minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
</storeDiscount>
<item article=””> // minOccurs=”0” maxOccurs="unbounded"
<threshold> // minOccurs=”0” maxOccurs="unbounded"
<quantity></quantity>
<discount></discount>
</threshold>
</item>
</program>
</quantityDiscount>
Розничные цены магазина (может быть весь справочник или только изменения)
<storePrices fullness=”F/I” storeId=””>
<version=””>
<item article=””>// minOccurs=”0” maxOccurs="unbounded"
<price> // minOccurs=”0” maxOccurs="1"
<value></value>
<minprice></minprice> (минимальная цена продажи в ден.единицах, а не в процентах)
</price>
</item>
</storePrices>
Продавцы магазина (весь справочник)
<storeSellers fullness=”F” storeId=””>
<version=””>
<seller> // minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
</seller>
</storeSellers>
Назначение товаров на отделы магазина (весь справочник)
<itemStoreStock fullness=”F” storeId=””>
<version=””>
<item article=””>
<stockId></stockId> // minOccurs=”0” maxOccurs="1"
</item>
</itemStoreStock>
Продавцы магазина (весь справочник)
<storeCashiers fullness=”F” storeId=””> (код магазина в СМ+ (целое число). Мапируется в настройках конвертора в магазин в УКМ)
<version=””>
<cashier> // minOccurs=”0” maxOccurs="unbounded"
<id></id> (целое число больше 0, используется в УКМ как идентификатор (код) кассира)
<name></name> (символьная строка – 40 символов)
<password></password> (символьная строка – 15 символов. Выгружается без шифрования)
</cashier>
</storeCashiers>
Коды немаркированных акцизных товаров для магазина (весь справочник)
<storeEGAIS fullness=”” storeId=””> (код магазина в СМ+ (целое число). Мапируется конвертером в магазин в УКМ 4)
<version></version>
<item> // minOccurs=”0” maxOccurs="unbounded"
<article></article> (символьная строка – 40 символов)
<NOPDF></NOPDF> (символьная строка – 255 символов)
</item>
</storeEGAIS>
<NOPDF> может содержать поля:
* code – код вида алкогольной продукции;
* price – цена товара;
* bname – наименование товарной позиции;
* alc – крепость;
* volume – объем продукции;
* ean – EAN-продукта;
* count– количество единиц пивной продукции данного вида.
Значение параметра <NOPDF> передается в виде:
<article="ХХХХХ" code="ХХХ" bname="ХХХ ХХХ" alc="ХХХ" volume="ХХХ" />
Если внутри значения атрибута bname используются кавычки, то они заменяются по следующим правилам:
если для указания значения атрибута используются двойные кавычки, такие же кавычки внутри значения атрибута заменяются на сущность "
если для указания значения атрибута используются одинарные кавычки, такие же кавычки внутри значения атрибута заменяются на сущность '
можно использовать двойные кавычки внутри значений атрибутов, заключенных в одинарные кавычки, и наоборот.
Например:
<article="005356" code="123" bname="Пиво "Балтика"" alc="4,6" volume="0,5" />
или
<article="005356" code="123" bname=”Пиво 'Балтика'" alc="4,6" volume="0,5" />
Загрузка информации для пивного чека
...
<article></article>
<name></name>
<measure></measure> (Сокращение)
<measprec></measprec> (Точность – 1, 0.001, 0.01, 0.1)
<groupId></groupId> (ссылка на узел классификатора)
<egaisType></egaisType> ((int), признак акцизного товара; 0 – неакцизный товар, 1 – маркированный товар, 2 – немаркированный)
<propertyId></PropertyId> (в Супермаг Плюс – Свойство, в Супермаг Плюс к товару может быть привязано только одно Свойство)
<taxgroupId></taxgroupId>
<addProperty> // minOccurs=”0” maxOccurs="unbounded"
<id></id> (код доп.характеристики в Супермаг Плюс)
<value></value>
</addProperty>
<barcode> // minOccurs=”0” maxOccurs="unbounded"
<id></id> (сам штрихкод)
<PropertyValue></PropertyValue>
<quantity></quantity> (в Супермаг Плюс – Количество для штрихкода)
</barcode>
</item>
</updateItems>
PropertyId привязывается к товару в УКМ 4, как тип свойства (используется для выбора значения на кассе при продаже по артикулу ).
<PropertyValue> из <barcode> привязывается к штрих-коду товара как значение.
<addProperty> хранится как денормализованный справочник.
Значение параметра <NOPDF> должно быть в виде:
<nopdf article="ХХХХХ" code="ХХХ" bname="ХХХ ХХХ" alc="ХХХ" volume="ХХХ"/>
В общем запись о маркировке товара должна выглядеть таким образом:
<NOPDF> <nopdf article="ХХХХХ" code="ХХХ" bname="ХХХ ХХХ" alc="ХХХ" volume="ХХХ"/> </NOPDF>.
Если внутри значения атрибута bname необходимо использовать кавычки, то заменять их по следующим правилам:
- если для указания значения атрибута используются двойные кавычки, такие же кавычки внутри значения атрибута заменяются на сущность ".
- если для указания значения атрибута используются одинарные кавычки, такие же кавычки внутри значения атрибута заменяются на сущность '.
- можно использовать двойные кавычки внутри значений атрибутов, заключенных в одинарные кавычки, и наоборот.
Наборы - (может быть весь справочник или только изменения)
<kit fullness=”F/I”>
<version=”1.0”>
<item article =””> // minOccurs=”0” maxOccurs="unbounded"
<subItem> // minOccurs=”0” maxOccurs="unbounded"
<article></article> (артикул товара, входящего в набор)
<quantity></quantity> (количество товара, десятичное число)
</subItem >
</item>
</kit>
Скидка «Персональная скидка на классификатор (СМ+)» (может быть весь справочник или только изменения):
<discountPersonal IdPrice=”” fullness=”F/I”>(идентификатор вида цены в СМ)
<version=””>
<name></name> (название вида цены в СМ)
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
(перечень магазинов, для которых действует данный экземпляр скидки. Перечень магазинов всегда передаётся полный)
</storeDiscount>
<card>// minOccurs=”0” maxOccurs="unbounded"
<number></number> (номер карты, в т.ч. префикс)
<block></block> (признак блокировки карты)
<type></type> (1 – совместная применимость, 0 – не применимость)
<name></name> (имя клиента в чеке)
<classDisc> (перечень узлов классификатора, на которые в СМ+ определена величина скидки. Перечень всегда выгружается полный. При этом, выгружаются только те узлы, для которых в СМ+ указаны значения скидки, т.е. вопрос наследования значений скидки по иерархии узлов классификатора решается УКМом))
<classifId></classifId> (ссылка на узел классификатора)
<discount></discount>
</classDisc>
</card>
</discountPersonal>
Для каждой карты всегда выгружается полный перечень узлов классификатора, на которые должна быть предоставлена скидка.
Скидка на классификатор (СМ+) (весь справочник):
<classifDiscount IdPrice=”” fullness=”F”>(идентификатор вида цены в СМ)
<version=””>
<name></name> (название вида цены в СМ)
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
(перечень магазинов, для которых действует данный экземпляр скидки Перечень магазинов всегда передаётся полный))
</storeDiscount>
<classif classifId=””> // minOccurs=”0” maxOccurs="unbounded" (выгружаются только те узлы, для которых в СМ+ указаны значения скидки, т.е. вопрос наследования значений скидки по иерархии узлов классификатора решается УКМом)
<discount></discount>
<classif>
</classifDiscount>
Скидка на сумму чека (СМ+) (весь справочник):
<receiptDiscount IdPrice=”” fullness=”F”>(идентификатор вида цены в СМ)
<version=””>
<name></name> (название вида цены в СМ)
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
(перечень магазинов, для которых действует данный экземпляр скидки. Перечень магазинов всегда передаётся полный))
</storeDiscount>
<receipt> // minOccurs=”0” maxOccurs="unbounded"
<amountFrom></amountFrom>
<timeFrom></timeFrom>
<discount></discount>
</receipt>
</receiptDiscount>
Скидка на кол-во товара (СМ+) (весь справочник):
<quantityDiscount IdPrice=”” fullness=”F”>(идентификатор вида цены в СМ)
<version=””>
<name></name> (название вида цены в СМ)
<storeDiscount>
<store storeId=””/> //minOccurs=”0” maxOccurs="unbounded"
(перечень магазинов, для которых действует данный экземпляр скидки. Перечень магазинов всегда передаётся полный))
</storeDiscount>
<item article=””> // minOccurs=”0” maxOccurs="unbounded"
<threshold> // minOccurs=”0” maxOccurs="unbounded"
<quantity></quantity>
<discount></discount>
</threshold>
</item>
</quantityDiscount>
Розничные цены магазина (может быть весь справочник или только изменения):
<storePrices fullness=”F/I” storeId=””>
<version=”1.1”>
<item article=””>// minOccurs=”0” maxOccurs="unbounded"
<price> // minOccurs=”0” maxOccurs="1"
<value></value>
<minprice></minprice> (минимальная цена продажи в ден.единицах)
<MRC> // minOccurs=”0” maxOccurs="unbounded"
<MRCValue> </MRCValue> (значение цен из истории)
</MRC>
</price>
</item>
</storePrices>
Если в теге значения цены и мин.цены пропущены (то есть только теги <price> </price>), то соответствующая запись в прайс-листе в УКМ должна быть удалена.
Флаг полной выгрузки приводит к тому, что УКМ удаляет текущее содержание прайс-листа и загружает его новое содержимое.
Продавцы магазина (весь справочник):
<storeSellers fullness=”F” storeId=””>
<version=””>
<seller> // minOccurs=”0” maxOccurs="unbounded"
<id></id>
<name></name>
</seller>
</storeSellers>
Назначение товаров на отделы магазина (весь справочник):
<itemStoreStock fullness=”F” storeId=””>
<version=””>
<item article=””>
<stockId></stockId> // minOccurs=”0” maxOccurs="1"
</item>
</itemStoreStock>
Кассиры магазина (весь справочник):
<storeCashiers fullness=”F” storeId=””>
<version=””>
<cashier> // minOccurs=”0” maxOccurs="unbounded"
<id></id> (целое число больше 0)
<name></name> (символьная строка – 40 символов)
<password></password> (символьная строка – 15 символов. Выгружается без шифрования)
</cashier>
</storeCashiers>
Акцизные немаркированные товары по магазинам (весь справочник):
Функционал не реализован. Зарезервировано на будущее.
<storeEGAIS fullness=”” storeId=””> (код магазина в СМ+ (целое число))
<version></version>
<item> // minOccurs=”0” maxOccurs="unbounded"
<article></article> (символьная строка – 40 символов)
<NOPDF></NOPDF> (символьная строка – 255 символов)
</item>
</storeEGAIS>
Значение параметра <NOPDF> передается в виде:
<nopdf article="ХХХХХ" code="ХХХ" bname="ХХХ ХХХ" alc="ХХХ" volume="ХХХ"/>.
Передача информации из УКМ 4 в СуперМаг
...