====== Работа с дисконтно-бонусными картами ====== Дисконтно-бонусная карта, далее карта -- это идентификатор покупателя в процессинге, с которым взаимодействует модуль менеджера оплат с индексом [[менеджер_оплат:подключение:свойства: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]], либо выполняется операция "Учёт покупки", но с отрицательной суммой.