Публичный ресурс
Импорт дисконтных карт и анкет клиентов из ERP в SetRetail10
Для чтения визуальной составляющей схемы XSD, а также типами обязательных данных, ознакомьтесь с правилами использования.
Методы веб-сервиса для импорта дисконтных карт и анкет клиентов
Без обратной связи | |
Метод | getCardsCatalog |
URL | http://IP-адрес_сервера:8090/SET-ERPIntegration/SET/WSCardsCatalogImport |
WSDL | http://IP-адрес_сервера:8090/SET-ERPIntegration/SET/WSCardsCatalogImport?wsdl |
Поле | Тип данных | Описание | Обязательное |
Принимаемые параметры | |||
cardsCatalogXML | base64Binary | Справочник карт и анкет клиентов в формате XML, кодированный с помощью base64Binary | Да |
Возвращаемые параметры | |||
return | boolean |
|
C обратной связью | |
Метод | getCardsCatalogWithTi |
URL | http://IP-адрес_сервера:8090/SET-ERPIntegration/SET/WSCardsCatalogImport |
WSDL | http://IP-адрес_сервера:8090/SET-ERPIntegration/SET/WSCardsCatalogImport?wsdl |
Поле | Тип данных | Описание | Обязательное |
Принимаемые параметры | |||
cardsCatalogXML | base64Binary | Справочник карт в формате XML кодированный с помощью base64Binary | Да |
ti | String |
| Нет |
Возвращаемые параметры | |||
return | boolean |
|
Важно
ti
Transaction Id
– является уникальным идентификатором этого пакета в SetRetail10, что накладывает определённые ограничения на повторный импорт пакета и загрузку разных типов данных с одним идентификатором.Начисление бонусных баллов через веб-сервис
Для начисления бонусных баллов из ERP системы используйте веб-сервис и методы из статьи SetRetail10 ◾️ Ручное начисление бонусов.
Импорт карт <cards-catalog>
cards-catalog | |||
Поле | Тип данных | Описание | Обязательное |
internal-card-type | Комплексный | Список типов внутренних карт | Нет |
internal-card | Комплексный | Список внутренних карт | Нет |
bonus-account | Комплексный | Список обновлений бонусных счетов | Нет |
Категории внутренних карт <internal-card-type>
cards-catalog/internal-card-type | |||
Поле | Тип данных | Описание | Обязательное |
guid | Long | Уникальный идентификатор категории внутренних карт. Ключевое поле. | Да |
name | String | Название категории внутренних карт | Да |
color | String | Цвет категории карты из списка:
| Нет |
personalized | Boolean | Признак персональной категории карт, для карт персонализированной категории система будет требовать заполнение анкеты | Нет |
percentage-discount | Double | Процент скидки категории карт Если не размер процента скидки отсутствует, тогда задается значение = 0 | Да |
work-period-start | Date | Дата начала действия категории, по умолчанию устанавливается время импорта | Нет |
work-period-end | Date | Дата окончания действия категории, по умолчанию время срока действия категории карт не ограничен | Нет |
show-card-from-range-notification | Boolean | Информировать кассира о добавлении карты из диапазона Допустимые значения:
| Нет |
deleted | Boolean | Передается true для удаления категории Допустимые значения:
| Нет |
card-range | Комплексный | Список диапазонов карт | Нет |
Диапазон внутренних карт <card-range>
cards-catalog/internal-card-type/card-range | |||
Поле | Тип данных | Описание | Обязательное |
guid | Long | Уникальный идентификатор диапазона внутренних карт. Ключевое поле | Да |
startField | String | Номер первой карты диапазона | Да |
countField | nonNegativeInteger | Количество карт в диапазоне | Да |
deleted | Boolean | Передается true для удаления диапазона | Да |
Экземпляры внутренних карт <internal-card>
cards-catalog/internal-card | |||
Поле | Тип данных | Описание | Обязательное |
number | String | Номер карты | Да |
amount | Double | Сумма накоплений на карте | Нет |
expiration-date | Date | Дата окончания срока действия, более приоритетный срок действия, чем общий срок действия категории карт | Нет |
status | Комплексный | Статус карты из списка
| Да |
deleted | Boolean | Передается true для удаления карты | Да |
card-type-guid | Long | Ссылка на идентификатор категории карт. Поле является обязательным при загрузке нового, ранее не существовавшего в базе данных экземпляра карты. При этом в поле передается идентификатор уже существующей категории карт. | Нет |
percentage-discount | Double | Процент скидки по карте. Заполняется, если не указан Card-type-guid. Карта будет привязана к категории с данным процентом карты | Нет |
attached-to-counterparty | Boolean | Привязка карты к контрагенту (юридическому лицу). Допустимые значения:
| Нет |
client | Комплексный | Привязка карты к клиенту | Нет |
counterparty | Комплексный | Привязка карты к контрагенту (юридическому лицу) | Нет |
purchase-accumulation | Комплексный | Накопления по карте | Нет |
Клиенты внутренних карт <client>
cards-catalog/internal-card/client | ||||
Поле | Размер | Тип данных | Описание | Обязательное |
---|---|---|---|---|
guid | Long | Идентификатор клиента | Да | |
last-name | 128 | String | Фамилия клиента | Нет |
first-name | 128 | String | Имя клиента | Нет |
middle-name | 128 | String | Отчество клиента | Нет |
сlient-type | typeClient | Тип клиента:
| Нет | |
birth-date | Date | Дата рождения клиента | Нет | |
sex | sexType | Пол клиента. По умолчанию не указан.
| Нет | |
marital | Boolean | Семейное положение: Замужем/Женат Допустимые значения:
| Нет | |
auto | Boolean | Наличие автомобиля Допустимые значения:
| Нет | |
pass-number | 12 | String | Номер паспорта | Нет |
pass-serie | 12 | String | Серия паспорта | Нет |
phone | 12 | String | Домашний телефон Обратите внимание, что для передачи мобильного телефона необходимо использовать другой атрибут, а именно | Нет |
128 | String | Электронная почта клиента | Нет | |
city | 128 | String | Название города | Нет |
region | 128 | String | Регион/Область | |
district | 128 | String | Район | Нет |
district-area | 128 | String | Район города | Нет |
zip | 6 | String | Индекс | Нет |
street | 128 | String | Улица | Нет |
house | 6 | String | Номер дома | Нет |
building | 6 | String | Корпус (строение) | Нет |
apartment | 6 | String | Квартира | Нет |
mobile-phone | 128 | String | Мобильный телефон | Нет |
smartphone-type | smartphoneType | Тип мобильного телефона
| Нет | |
mobile-operator | 64 | String | Оператор мобильной связи или выдавший карту | Нет |
children-age | 12 | String | Возраст детей. | Нет |
delivery | 128 | String | Кем выдан? | Нет |
delivery-date | Date | Когда выдан? | Нет | |
send-catalog | Boolean | Согласие на отправку каталога Допустимые значения:
| Нет | |
send-by-sms | Boolean | Согласие на отправку смс Допустимые значения:
| Нет | |
send-by-email | Boolean | Согласие на отправку по электронной почте Допустимые значения:
| Нет | |
shop-number | 5 | Integer | Номер магазина, в котором выдали карту | Нет |
other | 255 | String | Адрес, прочая информация | Нет |
receipt-feedback | receipt-feedbackType | Способ оповещения этого держателя карты о совершенной покупке, а также для отправки электронных чеков ОФД.
| Нет | |
wants-e-card | Booleand | Признак того, что клиент хочет получить электронную карту (отправлять на телефон или e-mail прислали png-изображение с штрих-кодом его номера карты). По умолчанию: false Допустимые значения:
| Нет | |
deleted | Boolean | Признак удаления клиента Допустимые значения:
| Да | |
isCompleted | boolean | Признак заполненности анкеты клиента (по умолчанию false) Допустимые значения:
| Нет |
Контрагенты внутренних карт (юридические лица) <counterparty>
Данная привязка означает, что дисконтная карта будет использоваться юридическим лицом.
cards-catalog/internal-card/counterparty | ||||
Поле | Размер | Тип данных | Описание | Обязательное |
---|---|---|---|---|
inn | 9, 10 или 12 символов | Integer | ИНН контрагента. Ключевое обязательное поле. | Да |
kpp | 9 | Integer | КПП, не обязательное поле так как может отсутствовать у ИП | Да |
name | 255 | String | Наименование Контрагента (короткое) | Да |
full-name | 1024 | String | Полное наименование контрагента. | Нет |
address | 255 | String | Юридический адрес контрагента | Да |
physical-address | 255 | String | Фактический адрес контрагента | Нет |
debitor-number | 128 | String | Идентификатор контрагента (дебитора) во внешней системе. | Да |
debitor-type | String | Тип контрагента (дебитора) во внешней системе
| Да |
<cards-catalog> <internal-card card-type-guid="12621262" number="12620001" expiration-date="2049-12-31T00:00:00" status="ACTIVE" attached-to-counterparty="true"> <counterparty inn="1212121212" kpp="123456789" name="Тестовое юрлицо" full-name="" address="Тестовый адрес" debitor-number="1245648725"/> <client guid = "198116" last-name = "Юридический" first-name = "Роман" middle-name = "Аркадьевич" sex = "MALE" birth-date = "1976-05-01" email="roman@crystals.ru" send-by-email="true" receipt-feedback="BY_EMAIL"/> </internal-card> </cards-catalog>
Привязка дисконтной карты Set10 к контрагенту используется в системе для возможности осуществления продажи юридическим лицам с соблюдением требований законодательства и автоматическим формированием и выдачей соответствующих сопроводительных документов.
Для возможности загрузки данных о контрагенте используется тег counterparty, в котором передаётся информация о самом юридическом лице, его наименовании и адресах – физическом и юридическом.
Привязка контрагента к карте осуществляется за счёт того, что тег <counterparty>
вложен внутрь тега <Internal-card>
.
Также осуществляется дополнительная проверка на то, что если у самой карты установлен атрибут attached-to-counterparty
, то наличие корректного вложенного тега <counterparty>
является обязательным условием импорта данной карты.
Пример возможной связки клиентов, карт и контрагентов:
Накопления по карте <purchase-accumulation>
cards-catalog/internal-card/purchase-accumulation | |||
Поле | Тип данных | Описание | Обязательное |
---|---|---|---|
operation-type | Boolean | Тип операции:
| Да |
shop-number | Integer | Номер магазина | Да |
cash-number | Integer | Номер кассы | Да |
shift-number | Integer | Номер смены | Да |
purchase-number | Integer | Номер чека | Да |
purchase-date | DateTime | Дата чека | Да |
purchase-sum | Integer | Сумма чека | Да |
Бонусный баланс <bonus-account>
Внимание!
- Данное поле не предназначено для импорта и обновления бонусных балансов, для этого используйте веб-сервис по работе с бонусными баллами.
- Поле утратило действие и не используется в структуре импорта подарочных карт.
cards-catalog/bonus-account | |||
Поле | Тип данных | Описание | Обязательное |
---|---|---|---|
guid | Long | Идентификатор клиента | Да |
bonus-update | String | Остаток бонусного счёта | Да |
Особенности импорта данных карт
Обработка данных
Обработка пакета данных в модуле карт подразумевает следующие этапы:
- Сохранение данных категорий карт, их экземпляров карт и клиентов в базе данных сервера SetRetail10 или SetCentrum.
- Отправка данных на кассы (для SetRetail) и подчиненные магазины (для SetCentrum) через уже реализованные механизмы.
Оба этапа выполняются в одной транзакции для избежания потери данных в случае сбоев в работе.
Обработка категорий карт
- В данных категории карт устанавливается свойства, которые наследуются всеми подчиненными ей картами. Наиболее важным из них является процент скидки по карте.
- Важно понимать, что категории карт ввиду своей немногочисленности могут быть заведены непосредственно в SetRetail10. (Рекомендуется создавать категории карт в SetRetail10).
- В процессе импорта из ERP, при получении данных категорий карт в секции
internal-card-type
данные в SetRetail10 перезаписываются безусловно. Идентификатором для перезаписи категории является полеguid
. - При импорте недостающие, но необязательные к загрузке поля заполняются значением по умолчанию.
- В случае отсутствия данных в поле
work-period-end
при импорте новой категории категория карт, их экземпляры становятся бессрочными. - В случае отсутствия необходимых данных для импорта категорий, категория карт будет отклонена системой.
Обработка диапазонов карт
- Каждый диапазон карт привязан к одной категории карт.
- Диапазоны карт используются в случае, когда нет причин вести карты поштучно (отсутствуют анкеты покупателей, не ведутся накопления и бонусные остатки).
- Важно понимать, что диапазоны карт ввиду своей немногочисленности могут быть заведены непосредственно в SetRetail10.
- В процессе импорта из ERP, при получении данных диапазонов карт в секции
card-range
, данные в SetRetail10 перезаписываются безусловно. Идентификатором для перезаписи диапазона карт является полеguid
. - В случае отсутствия необходимых данных для импорта, диапазон карт будет отклонен системой.
Обработка экземпляров карт
- Каждая карта привязана к одной категории карт и наследует свойства категории карты (процент скидки, необходимость заполнения анкеты, общий срок действия).
- В процессе импорта из ERP, при получении данных экземпляров карт в секции
internal-card
, данные в SetRetail перезаписываются безусловно. Идентификатором для перезаписи является полеnumber
. - При импорте, недостающие, но необязательные к загрузке поля, заполняются значением по умолчанию. Поле
createDate
заполняется при создании карты датой проведения импорта. - Привязка экземпляра карты к типу карт осуществляется через атрибут
card-type-guid
. - При загрузке из ERP, карты с
cardTypeGuid
, которых не соответствует ни одномуguid
из списка уже заведенных в SetRetail10 категорий карт, будут отклонены системой.
Альтернативная схема импорта карт:
- В данной схеме в SetRetail10 должен быть загружен процент скидки по каждой карте, а атрибут
card-type-guid
должен отсутствовать, - Карта будет автоматически привязана механизмами SetRetail10, к уже имеющейся, в SetRetail10 категории с соответствующим значением
percentage-discount
. Такие категории карт, предварительно могут быть заведены в SetRetail10.- Если категории с таким
discount-percent
не существует, или одновременно не указанcardTypeGuid
иpercentage-discount
, карта будет отклонена системой.
- Если категории с таким
Обработка накоплений
- Накопления не являются бонусными баллами.
- В основном накопления предназначены для соблюдения условий по переходу из одной категорий карт в другую
- Накопления в SetRetail10 ведутся в разрезе отдельных карт.
- Накопления выгружаются только при первоначальном импорте карт для передачи данных об уже имеющихся накоплениях в SetRetail10 для дальнейшего ведения накопительного дисконта в SetRetail10. Данный функционал требуется для поддержки переноса ведения накопительного дисконта на SetRetail10 от других информационных систем. Данные накоплений загружаются из ERP в составе данных карт в поле amount.
Обработка данных клиентов
- Данные клиентов не являются обязательными данными.
- В случае, если данные не были отправлены, клиент не создается.
- Каждый клиент может являться владельцем нескольких карт, или не иметь ни одной карты вообще.
- При импорте к клиенту привязываются все присланные с ним карты.
- Если с клиентом не отправлено ни одного экземпляра карт, создается клиент, к которому не привязано ни одной карты.
- При получении данных клиентов в секции
сlient
данные перезаписываются безусловно. Идентификатором для перезаписи клиента является полеguid
. - При импорте недостающие поля заполняются значением по умолчанию. В случае отсутствия необходимых данных для импорта клиентов, такие клиенты отклоняются системой.
В Set10 cуществуют две возможности разделения продажи на кассах для физических и юридических лиц.
- Привязка Дисконтной карты к контрагенту (к юрлицу). При этом у клиента могут быть как карты юридического лица, так и обычные дисконтные карты.
- Привязка Клиента – держателя карты к юридическому лицу. При этом все карты этого клиента считаются картами юридического лица.
Для изменения логики работы кассы при продаже товаров по таким картам, необходима дополнительная настройка в шаблонах касс.
Дисконтные карты юридических лиц
Привязка карт к контрагентам
- Для осуществления привязки импортируемой дисконтной карты к контрагенту необходимо при импорте указать вложенную сущность
counterparty
с корректно заполненными атрибутами. - При этом необходимо дополнительно указать в карте, что она должна быть привязана к контрагенту (атрибут карты
attached-to-counterparty
). - При импорте произойдёт проверка наличия вложенного тега
counterparty
и проверка корректности заполнения требуемых полей по контрагенту, таких как ИНН, КПП и т.д. - Информация по контрагенту привязанному к такой карте, будет отображаться на вкладке Юридическое лицо в окне информации по карте в визуализации сервера SetRetail10.
Привязка клиентов к юридическим лицам
- Для осуществления привязки импортируемого клиента карты к юридическому лицу необходимо при импорте клиента указать его тип в атрибуте
сlient-type
. - Возможные значения атрибута:
PRIVATE
– физическое лицо.JURISTIC_PERSON
– юридическое лицо.
- При такой привязке информация о самом юридическом лице указывается в анкетных данных клиента (либо не указывается вообще).
- Сам клиент становится для системы юридическим лицом.
© 1994-2024, ООО "Кристалл Сервис Интеграция".
Все права защищены.