Ручное начисление с помощью веб-сервисов
ВАЖНО!
Функционал начисления реализован в версии сервера 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 и заполняем данные для начисления:
<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. Выполняем запрос
7. Проверяем,что бонусы успешно зачислены
Ручное начисление с помощью SQL-скриптов
ВАЖНО!
Скрипты предназначены для версии сервера 10.0.1.52_4
Выполнять на базе set_loyal сервера Retail (независимо от топологии)
1. Создаем фиктивную транзакцию
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. В этой фиктивной транзакции начисляются бонусы:
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. Добавление ссылки на карту
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 лояльности с начислением бонусов в обработку:
INSERT INTO loy_out_bonus_document (objectid, transaction_time) SELECT id, transaction_time FROM loy_transaction ORDER BY id limit 1;