Пример реализации подарочных сертификатов в УТ 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 не будет опубликован. Обязательные поля помечены *