1. В план видов характеристик ДополнительныеРеквизитыИСведения добавляем предопределенное значение ТорговыйАгент (ссылка на Партнеры)
2. Создаем независимый периодический (в пределах дня) регистр сведений РазмерыКомиссииАгентов с одним ресурсом Процент.
3.Создаем статью расходов "ВознаграждениеТорговымАгентам" предопределенный-ПВХ_СтатьиРасходов с вариантом распределения "На направления деятельности", аналитика расходов – Партнер.
4. Создаем регистр накопления РасчетыСАгентами. Вид регистра - Остатки. Регистраторы: РеализацияТоваровУслуг и РКО.
Измерения:
- партнер;
Ресурсы:
- сумма;
5. Создаем подписку на событие проведения документов РеализацияТоваровУслуг.
Процедура апПриПроведенииРеализацииПоАгентуОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если Не Отказ Тогда
ОтразитьРасчетыПоАгенту(Источник);
КонецЕсли;
КонецПроцедуры
Процедура ОтразитьРасчетыПоАгенту(Источник) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугДополнительныеРеквизиты.Значение КАК Агент,
| РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка.СуммаДокумента * апРазмерыКомиссииАгентовСрезПоследних.Процент / 100 КАК СуммаВознаграждения
|ИЗ
| Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты,
| РегистрСведений.апРазмерыКомиссииАгентов.СрезПоследних(&НаДату, ) КАК апРазмерыКомиссииАгентовСрезПоследних
|ГДЕ
| РеализацияТоваровУслугДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)
| И РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.УстановитьПараметр("НаДату", Источник.Ссылка.Дата);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СуммаВознаграждения = Выборка.СуммаВознаграждения;
Если СуммаВознаграждения > 0 Тогда
Источник.Движения.апРасчетыСАгентами.Записывать = Истина;
Источник.Движения.апРасчетыСАгентами.БлокироватьДляИзменения = Истина;
Движение = Источник.Движения.апРасчетыСАгентами.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Источник.Дата;
Движение.Партнер = Выборка.Агент;
Движение.Сумма = СуммаВознаграждения;
Источник.Движения.Записать();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
6. Заполнение РКО по остаткам задолженности. Для отображение кнопки Подобрать по остаткам в модуле ДенежныеСредстваСервер.УстановитьВидимостьПодбораПоОстаткамРасчетов добавить строку:
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПрочиеРасходы);
Затем в модуле формы документа
&НаКлиенте
Процедура ПодборПоОстаткам(Команда)
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПрочиеРасходы") Тогда
ЗаполнитьПоОстаткамЗадолженностиТП();
Объект.СуммаДокумента = Объект.РасшифровкаПлатежа.Итог("Сумма");
Иначе
//Код который был
КонецЕсли;
&НаСервере
Процедура ЗаполнитьПоОстаткамЗадолженностиТП()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| РасчетыСТорговымиАгентамиОстатки.Партнер КАК АналитикаРасходов,
| РасчетыСТорговымиАгентамиОстатки.СуммаОстаток КАК Сумма,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиРасходов.АгентскиеВыплаты) КАК СтатьяРасходов,
| РасчетыСТорговымиАгентамиОстатки.Партнер.ОсновнойМенеджер.ТекущееПодразделение КАК Подразделение
|ИЗ
| РегистрНакопления.РасчетыСАгентами.Остатки(, Партнер = &Партнер) КАК РасчетыСТорговымиАгентамиОстатки");
Запрос.УстановитьПараметр("Партнер", Объект.Контрагент.Партнер);
Результат = Запрос.Выполнить();
Объект.РасшифровкаПлатежа.Загрузить(Результат.Выгрузить());
КонецПроцедуры
7.
8. Создаем подписку на событие обработки заполнения документа РеализацияТоваровУслуг на основании документа ЗаказКлиента, чтобы автоматически заполнить по заказу в реализации значение доп. реквизита “Торговый агент”.
Процедура ПодпискаНаСобытие1ОбработкаЗаполнения(Источник, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗаказКлиентаДополнительныеРеквизиты.Свойство,
| ЗаказКлиентаДополнительныеРеквизиты.Значение,
| ЗаказКлиентаДополнительныеРеквизиты.ТекстоваяСтрока
|ИЗ
| Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
|ГДЕ
| ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &Ссылка
| И ЗаказКлиентаДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НовСтрока = Источник.ДополнительныеРеквизиты.Добавить();
ЗаполнитьЗначенияСвойств(НовСтрока, Выборка);
КонецЦикла;
КонецПроцедуры
2. Создаем независимый периодический (в пределах дня) регистр сведений РазмерыКомиссииАгентов с одним ресурсом Процент.
3.Создаем статью расходов "ВознаграждениеТорговымАгентам" предопределенный-ПВХ_СтатьиРасходов с вариантом распределения "На направления деятельности", аналитика расходов – Партнер.
4. Создаем регистр накопления РасчетыСАгентами. Вид регистра - Остатки. Регистраторы: РеализацияТоваровУслуг и РКО.
Измерения:
- партнер;
Ресурсы:
- сумма;
5. Создаем подписку на событие проведения документов РеализацияТоваровУслуг.
Процедура апПриПроведенииРеализацииПоАгентуОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если Не Отказ Тогда
ОтразитьРасчетыПоАгенту(Источник);
КонецЕсли;
КонецПроцедуры
Процедура ОтразитьРасчетыПоАгенту(Источник) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугДополнительныеРеквизиты.Значение КАК Агент,
| РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка.СуммаДокумента * апРазмерыКомиссииАгентовСрезПоследних.Процент / 100 КАК СуммаВознаграждения
|ИЗ
| Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты,
| РегистрСведений.апРазмерыКомиссииАгентов.СрезПоследних(&НаДату, ) КАК апРазмерыКомиссииАгентовСрезПоследних
|ГДЕ
| РеализацияТоваровУслугДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)
| И РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.УстановитьПараметр("НаДату", Источник.Ссылка.Дата);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СуммаВознаграждения = Выборка.СуммаВознаграждения;
Если СуммаВознаграждения > 0 Тогда
Источник.Движения.апРасчетыСАгентами.Записывать = Истина;
Источник.Движения.апРасчетыСАгентами.БлокироватьДляИзменения = Истина;
Движение = Источник.Движения.апРасчетыСАгентами.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Источник.Дата;
Движение.Партнер = Выборка.Агент;
Движение.Сумма = СуммаВознаграждения;
Источник.Движения.Записать();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
6. Заполнение РКО по остаткам задолженности. Для отображение кнопки Подобрать по остаткам в модуле ДенежныеСредстваСервер.УстановитьВидимостьПодбораПоОстаткамРасчетов добавить строку:
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПрочиеРасходы);
Затем в модуле формы документа
&НаКлиенте
Процедура ПодборПоОстаткам(Команда)
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПрочиеРасходы") Тогда
ЗаполнитьПоОстаткамЗадолженностиТП();
Объект.СуммаДокумента = Объект.РасшифровкаПлатежа.Итог("Сумма");
Иначе
//Код который был
КонецЕсли;
&НаСервере
Процедура ЗаполнитьПоОстаткамЗадолженностиТП()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| РасчетыСТорговымиАгентамиОстатки.Партнер КАК АналитикаРасходов,
| РасчетыСТорговымиАгентамиОстатки.СуммаОстаток КАК Сумма,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиРасходов.АгентскиеВыплаты) КАК СтатьяРасходов,
| РасчетыСТорговымиАгентамиОстатки.Партнер.ОсновнойМенеджер.ТекущееПодразделение КАК Подразделение
|ИЗ
| РегистрНакопления.РасчетыСАгентами.Остатки(, Партнер = &Партнер) КАК РасчетыСТорговымиАгентамиОстатки");
Запрос.УстановитьПараметр("Партнер", Объект.Контрагент.Партнер);
Результат = Запрос.Выполнить();
Объект.РасшифровкаПлатежа.Загрузить(Результат.Выгрузить());
КонецПроцедуры
7.
8. Создаем подписку на событие обработки заполнения документа РеализацияТоваровУслуг на основании документа ЗаказКлиента, чтобы автоматически заполнить по заказу в реализации значение доп. реквизита “Торговый агент”.
Процедура ПодпискаНаСобытие1ОбработкаЗаполнения(Источник, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗаказКлиентаДополнительныеРеквизиты.Свойство,
| ЗаказКлиентаДополнительныеРеквизиты.Значение,
| ЗаказКлиентаДополнительныеРеквизиты.ТекстоваяСтрока
|ИЗ
| Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
|ГДЕ
| ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &Ссылка
| И ЗаказКлиентаДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент)";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НовСтрока = Источник.ДополнительныеРеквизиты.Добавить();
ЗаполнитьЗначенияСвойств(НовСтрока, Выборка);
КонецЦикла;
КонецПроцедуры
Комментариев нет:
Отправить комментарий