Пример реализации подарочных сертификатов в УТ 10.3

Реализация механизма подарочных сертификатов через автоматические скидки в ут 10.3

Довольно таки часто используемая операция как продажа товара с оплатой подарочным сертификатом определенной суммы, но удобных решений для ут 10.3 я не нашел. Решил реализовать данную задачу через механиз автоматических скидок.

На примере Заказа покупателя: в модуле объект присутсвует функция  

Функция ПересчитатьАвтоматическиеСкидки() Экспорт

Если РассчитыватьАвтоматическиеСкидки() Тогда

СуммаДокументаБезСкидок = Ценообразование.ПолучитьСуммуДокументаБезСкидки(Товары) + Ценообразование.ПолучитьСуммуДокументаБезСкидки(Услуги);

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить(«ВидРеализации» , Перечисления.ВидыСкидок.Оптовая);
СтруктураПараметров.Вставить(«СуммаДокумента» , СуммаДокументаБезСкидок);
СтруктураПараметров.Вставить(«Карта» , ДисконтнаяКарта);
СтруктураПараметров.Вставить(«УчитыватьНДС» , УчитыватьНДС);
СтруктураПараметров.Вставить(«СуммаВключаетНДС» , СуммаВключаетНДС);
СтруктураПараметров.Вставить(«ВалютаРегламентированногоУчета», мВалютаРегламентированногоУчета);
СтруктураПараметров.Вставить(«УчетнаяПолитика» , ПолучитьЗначениеУчетнойПолитики());

ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Товары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров);
ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Услуги, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров);
//процедура расчета скидки за сертификат
ПересчитатьСкидкуЗаСертификат();
// 
Возврат Истина;

Иначе

Возврат Ложь;
КонецЕсли;

КонецФункции

В неё добавляем вызов процедуры ПересчитатьСкидкуЗаСертификат()

Процедура ПересчитатьСкидкуЗаСертификат()

перем УсловиеСкидки;
УсловиеСкидки = Перечисления.УсловияСкидкиНаценки.СкидкаЗаСертификат;
// ищем сертификат на скидку, и прибавляем его если есть
// сертификат определяется по номенклатуре с типом Бонус
Для каждого Деталь Из СоставНабора Цикл
Если Деталь.Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.Бонус Тогда
// нашли, применяем скидку
СуммаСкидки = Деталь.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент;
СтрокаКСкидке = Товары.Найти(Деталь.КлючСтроки, «КлючСтроки»);
РасчетСкидкиПоСумме(СтрокаКСкидке, СуммаСкидки, УсловиеСкидки)
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Для определения скидки за сертификат вводим новый вид номенклатуры, называем его Бонус, затем заводим номенклатуру данного вида. Размер скидки опредеяем коэффициентом единицы измерения, я так сделал что бы лишних реквизитов и сумм не использовать. Так же в перечисление УсловияСкидкиНаценки добавляем СкидкаЗаСертификат, 

В данной конфигурации я использую Набор-комплекты, поэтому сертификат добавляется в СоставНабора, т.е. если в составе набора присутсвует номеклатура вида Бонус, то к Набору-комплекту применяется скидка, скидка расчитывается в процедуре  РасчетСкидкиПоСумме.

 

Функция РасчетСкидкиПоСумме(СтрокаКСкидке, СуммаСкидки, Условие)

ИсходнаяАвтоСкидка = СтрокаКСкидке.ПроцентАвтоматическихСкидок;
СкидкаРучная = СтрокаКСкидке.ПроцентСкидкиНаценки;
Если СтрокаКСкидке.Сумма > 0 Тогда
    ПроцентСкидки = СуммаСкидки / (СтрокаКСкидке.Цена * СтрокаКСкидке.Количество) * 100;
    СтрокаКСкидке.ПроцентАвтоматическихСкидок = ИсходнаяАвтоСкидка + ПроцентСкидки;
    СтрокаКСкидке.УсловиеАвтоматическойСкидки = Условие;
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаКСкидке, ЭтотОбъект);
КонецЕсли;

КонецФункции

Может кому пригодится идея.


6 Comments

  1. borman

    Мне кажется не логичной реализация через скидки. Всегда думал, что сертификат — это такой способ оплаты.

    Reply
  2. PLAstic

    (1) borman, Солидарен. Это по сути зачёт полученного ранее аванса от покупателя. Единственное, что надо будет скорректировать — разрешить проведение чеков с нулевой суммой.

    Reply
  3. vital1c

    (2) PLAstic, это лишь один вариант реализации, я делал для организации, которая подарочные сертификаты раздавала бесплатно в качестве акции, то есть фиксированную скидку на определенную сумму, поэтому была такая реализация. Естественно если подарочный сертификат покупается, то реализация нужна другая.

    Reply
  4. tara84

    если делать как вид оплаты то искусственно увеличиваем прибыль на сумму сертификатов…

    Reply
  5. PLAstic

    (4) tara84, Верно, но в какой момент тогда её зачитывать? Сертификаты срочные, т.е. может быть как момент отоваривания, так и момент просрочки и закрытия сертификата. Тогда надо добавлять документ закрытия сертификатов по сроку действия и подключать его к механизму розничных продаж?

    Reply
  6. tara84

    (5) PLAstic, нам его и так надо подключать, логично использовать справочник сертификатов, в котором указаны срок действия и дата продажи… полезно бывает для анализа когда они были проданы, и когда на них отоварились… позволяет решать некоторые спорные вопросы когда у нас несколько точек… По моему вариант с уменьшением суммы чекаККМ самый оптимальный…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *