Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Ручное начисление с помощью веб-сервисов

Примечание
titleВАЖНО!

Функционал начисления реализован в версии сервера 10.2.5.0

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

1. Скачайте актуальную версию SOAP UI.

2. Устанавливаем программу и запускаем

3. В главном окне создаем новый проект File - New soapUI Project и заполняем адрес WSDL http://{host}:8090/SET-Cards/SET/Cards/ExternalSystemCardsProcessing?wsdl

4. Для начисления используем WS метод chargeOnBonusAccount

5. Открываем запрос Request и заполняем данные для начисления:

Блок кода
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:proc="http://processing.cards.crystals.ru/">
   <soapenv:Header/>
   <soapenv:Body>
      <proc:chargeOnBonusAccount>
         <!--Optional:-->
         <cardNumber>780014086178</cardNumber> --номер карты
         <!--Optional:-->
         <bonusAccountType>1203</bonusAccountType> --id бонусного счета (см.в базе SET.cards_bonusaccountstype.bonusaccounttypecode)
         <!--Optional:-->
         <shopNum>99</shopNum> --номер магазина
         <!--Optional:-->
         <cashNum>99</cashNum> --номер кассы
         <!--Optional:-->
         <shiftNum>1</shiftNum>--номер смены
         <!--Optional:-->
         <checkNum>2</checkNum>--номер чека
         <!--Optional:-->
         <chargeSum>10000</chargeSum>--сумма к начислению в копейках
         <!--Optional:-->
         <activatingDate>2015-03-26</activatingDate>--дата активации бонусов
         <!--Optional:-->
         <expirationDate>2055-03-02</expirationDate>--дата сгорания бонусов
      </proc:chargeOnBonusAccount>
   </soapenv:Body>
</soapenv:Envelope>

6. Выполняем запрос

Image Removed

7. Проверяем,что бонусы успешно зачислены

Image Removed

Ручное начисление с помощью SQL-скриптов

Примечание
titleВАЖНО!

Скрипты предназначены для версии сервера 10.0.1.52_4

Выполнять на базе set_loyal сервера Retail (независимо от топологии)

1. Создаем фиктивную транзакцию

Блок кода
languagesql
INSERT INTO loy_transaction(
id, 
purchase_number,
cash_number, 
sent_to_server_status,
shift_number, 
shop_number,
sale_time, 
transaction_time,
operation_type,
status,
discountvalue)
VALUES (
CASE WHEN (SELECT min(id) FROM loy_transaction) IS NULL THEN 0 ELSE (SELECT min(id) FROM 
loy_transaction) -1 END, -- id
CASE WHEN (SELECT min(purchase_number) FROM loy_transaction) IS NULL THEN 0 ELSE (SELECT 
min(purchase_number) FROM loy_transaction) -1 END, -- номер чека - лучше явно левый
0, -- номер кассы - всегда 0
null, --всегда NULL
0, -- номер смены - всегда 0
0, -- номер магазина - всегда 0
(SELECT now()-cast('1 hours' as interval)), -- дата продажи не важно 
(SELECT now()-cast('1 hours' as interval)), -- время создания транзакции не важно
true, -- операция: продажа
0, -- Статус транзакции. 0 – Подтверждена, 2 – Отменена
0 -- Общая сумма скидки по чеку - неважно
);

2. В этой фиктивной транзакции начисляются бонусы:

Блок кода
languagesql
INSERT INTO loy_bonus_transactions(
id, 
bonus_account_type, 
bonus_amount, 
bonus_period_finish, 
bonus_period_start,
discount_card, 
advert_act_guid, 
transaction_id,
sum_amount) 
VALUES (
CASE WHEN (SELECT min(id) FROM loy_bonus_transactions) IS NULL THEN 0 ELSE (SELECT min(id) FROM 
loy_bonus_transactions) - 1 END, -- id, 
1366, -- ВАЖНО! код типа бонусного счета, на который начислить баллы. -см.,базе центрума SET.cards_bonusaccountstype.bonusaccounttypecode
5000000, -- Сумма начисленных баллов(умноженная на 100)
'2015-07-17', -- окончание действия бонусов с этого счета; null - нельзя! 
'2014-06-11', -- начало действия бонусов с этого счета; null - нельзя! 
'180000', -- ВАЖНО! номер карты, на которую начисляем бонусы
(SELECT min(guid) FROM loy_adv_action_in_purchase),-- GUID сработавшей РА
(SELECT min(id) FROM loy_transaction), -- ссылка на TX лояльности, что создали в п.1
0);

3. Добавление ссылки на карту

Блок кода
languagesql
INSERT INTO loy_discount_cards(
id, 
card_number,
card_type,
transaction_id,
advert_act_guid) 
VALUES (
CASE WHEN (SELECT min(id) FROM loy_transaction) IS NULL THEN 0 ELSE (SELECT min(id) FROM
loy_transaction) -1 END, -- id
'180000', -- ВАЖНО! номер карты, на которую начисляем бонусы
'InternalCard', --тип карты,всегда так
(SELECT min(id) FROM loy_transaction),
(SELECT min(guid) FROM loy_adv_action_in_purchase)
);

4. Отправляем эту TX лояльности с начислением бонусов в обработку:

...

languagesql

...

Смотрите в разделе интеграционной документации Управление бонсными баллами на примере SOAP UI.