Задача № 2.41 Вознаграждение агентов

1. В план видов характеристик ДополнительныеРеквизитыИСведения добавляем предопределенное значение ТорговыйАгент (ссылка на Партнеры)
2. Создаем независимый периодический (в пределах дня) регистр сведений РазмерыКомиссииАгентов с одним ресурсом Процент.
3.Создаем статью расходов  "ВознаграждениеТорговымАгентам" предопределенный-ПВХ_СтатьиРасходов  с вариантом распределения "На направления деятельности", аналитика расходов – Партнер.
4. Создаем регистр накопления РасчетыСАгентами. Вид регистра - Остатки. Регистраторы: РеализацияТоваровУслуг и РКО.
Измерения:
- партнер;
Ресурсы:
- сумма;
5. Создаем подписку на событие проведения документов РеализацияТоваровУслуг.
Процедура апПриПроведенииРеализацииПоАгентуОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

Если Не Отказ Тогда
ОтразитьРасчетыПоАгенту(Источник);
КонецЕсли;

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

Процедура ОтразитьРасчетыПоАгенту(Источник) Экспорт

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
  | РеализацияТоваровУслугДополнительныеРеквизиты.Значение КАК Агент,
  | РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка.СуммаДокумента * апРазмерыКомиссииАгентовСрезПоследних.Процент / 100 КАК СуммаВознаграждения
  |ИЗ
  | Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты,
  | РегистрСведений.апРазмерыКомиссииАгентов.СрезПоследних(&НаДату, ) КАК апРазмерыКомиссииАгентовСрезПоследних
  |ГДЕ
  | РеализацияТоваровУслугДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)
  | И РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.УстановитьПараметр("НаДату", Источник.Ссылка.Дата);

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
  СуммаВознаграждения = Выборка.СуммаВознаграждения;

  Если СуммаВознаграждения > 0 Тогда  
Источник.Движения.апРасчетыСАгентами.Записывать = Истина;  
Источник.Движения.апРасчетыСАгентами.БлокироватьДляИзменения = Истина;
Движение =  Источник.Движения.апРасчетыСАгентами.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Источник.Дата;                        
Движение.Партнер = Выборка.Агент;
Движение.Сумма = СуммаВознаграждения;

Источник.Движения.Записать();
  КонецЕсли;
КонецЕсли;

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

6. Заполнение РКО по остаткам задолженности. Для отображение кнопки Подобрать по остаткам в модуле ДенежныеСредстваСервер.УстановитьВидимостьПодбораПоОстаткамРасчетов добавить строку:
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПрочиеРасходы);
Затем в модуле формы документа
&НаКлиенте

Процедура ПодборПоОстаткам(Команда)

Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПрочиеРасходы") Тогда
ЗаполнитьПоОстаткамЗадолженностиТП();
Объект.СуммаДокумента = Объект.РасшифровкаПлатежа.Итог("Сумма");
Иначе
//Код который был
КонецЕсли;


&НаСервере
Процедура ЗаполнитьПоОстаткамЗадолженностиТП()

Запрос = Новый Запрос(
"ВЫБРАТЬ
| РасчетыСТорговымиАгентамиОстатки.Партнер КАК АналитикаРасходов,
| РасчетыСТорговымиАгентамиОстатки.СуммаОстаток КАК Сумма,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиРасходов.АгентскиеВыплаты) КАК СтатьяРасходов,
| РасчетыСТорговымиАгентамиОстатки.Партнер.ОсновнойМенеджер.ТекущееПодразделение КАК Подразделение
|ИЗ
| РегистрНакопления.РасчетыСАгентами.Остатки(, Партнер = &Партнер) КАК РасчетыСТорговымиАгентамиОстатки");
Запрос.УстановитьПараметр("Партнер", Объект.Контрагент.Партнер);
Результат = Запрос.Выполнить();
Объект.РасшифровкаПлатежа.Загрузить(Результат.Выгрузить());

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

7.

8. Создаем подписку на событие обработки заполнения документа РеализацияТоваровУслуг на основании документа ЗаказКлиента, чтобы автоматически заполнить по заказу в реализации значение доп. реквизита “Торговый агент”.

Процедура ПодпискаНаСобытие1ОбработкаЗаполнения(Источник, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              | ЗаказКлиентаДополнительныеРеквизиты.Свойство,
              | ЗаказКлиентаДополнительныеРеквизиты.Значение,
              | ЗаказКлиентаДополнительныеРеквизиты.ТекстоваяСтрока
              |ИЗ
              | Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
              |ГДЕ
              | ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &Ссылка
              | И ЗаказКлиентаДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл  
НовСтрока = Источник.ДополнительныеРеквизиты.Добавить();

ЗаполнитьЗначенияСвойств(НовСтрока, Выборка);
КонецЦикла;

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

Комментариев нет:

Отправить комментарий