====== Работа с дисконтно-бонусными картами ======
Дисконтно-бонусная карта, далее карта -- это идентификатор покупателя в процессинге, с которым взаимодействует модуль менеджера оплат с индексом [[менеджер_оплат:подключение:свойства:PayType|PayType]].
Работа с картами производится в несколько этапов:\\
1. Получение информации о карте (процент скидки и остаток средств) и применение скидки к чеку.\\
2. Списание средств с карты ((Опционально. Выполняется если карта имеет доступный для списания остаток и покупатель заявил о желании оплаты части чека средствами с карты.)) -- [[менеджер_оплат:подключение:сценарии:оплата|Оплата]].\\
3. Учет покупки в процессинге.\\
===== Получение информации о карте =====
Выполняется функция [[менеджер_оплат:подключение:методы:GetDiscountCardInfo|GetDiscountCardInfo]]. В случае успешного выполнения модифицируются свойства [[менеджер_оплат:подключение:свойства:Amount|Amount]] и [[менеджер_оплат:подключение:свойства:Discount|Discount]], содержащие остаток на карте и процент скидки по карте соответственно.
Если МенеджерОплат.GetDiscountCardInfo() = 1 Тогда
ПроцентСкидки = МенеджерОплат.Discount / 100;
СуммаБонусовНаКарте = МенеджерОплат.Amount / 100;
Если ПроцентСкидки <> 0 Тогда
ПрименитьСкидку(ПроцентСкидки);
КонецЕсли;
КонецЕсли;
===== Учёт покупки в процессинге =====
Перед закрытием кассового чека требуется сообщить процессигру о том, что чек закрывается с использованием карты. Рекомендуется выполнять эту операция непосредственно перед закрытием чека в ККМ. При успешном закрытии чека в ККМ, при необходимости, производится операция подтверждения. При не успешном закрытии чека в ККМ производится отмена операции.
**Учёт покупки:**
МенеджерОплат.PayType = МенеджерОплат.GetPayTypeIndex(Идентификатор);
МенеджерОплат.CardNumber = Трэк2;
МенеджерОплат.CardInputType = 0;
МенеджерОплат.Amount = ИтогЧека * 100;
МенеджерОплат.CashNumber = НомерКассы;
МенеджерОплат.CheckNumber = НомерЧека;
МенеджерОплат.DiscountAmount = СуммаСкидки * 100;
Результат = МенеджерОплат.CorrectDiscountCard();
Если результат "0", продолжать дальнейшее закрытие чека не рекомендуется. Если результат "1", запоминаются свойства [[менеджер_оплат:подключение:свойства:AuthCode|AuthCode]] и [[менеджер_оплат:подключение:свойства:RRN|RRN]]. Их значения могут потребоваться вдальнейшем.
**Подтверждение:**
МенеджерОплат.CardNumber = Трэк2;
МенеджерОплат.CardInputType = 0;
МенеджерОплат.CashNumber = НомерКасы;
МенеджерОплат.CheckNumber = НомерЧека;
МенеджерОплат.AuthCode = AuthCode;
МенеджерОплат.RRN = RRN;
МенеджерОплат.Amount = ИтогЧека * 100;
МенеджерОплат.DiscountAmount = СуммаСкидки * 100;
Результат = МенеджерОплат.Commit();
Выполнение сценария продолжается независимо от результата. Но в случае результата равного "0", рекомендуется сообщить кассиру об ошибке.
**Отмена опрерации:**
Если операция "Учёт покупки" выполнилась и не трабует подтверждения, а чек в ККМ не закрылся, необходимо отменить операцию учёта покупки. В зависимости от возможностей процессинга выполняется либо метод [[менеджер_оплат:подключение:методы:CancelLastTransaction|CancelLastTransaction]], либо выполняется операция "Учёт покупки", но с отрицательной суммой.