Расчёт премии

Vladimir

Администратор
Команда форума
Заявка от Unit.
Задача: установить взаимосвязь между сотрудником, выполняемым им заказом, и ролью, в которой он выступает в заказе. Всего 3 менеджера и две роли (операционный и по продажам), которые они могут выполнять в заказе.
В существующем проекте для заказа назначался один менеджер, который выполнял обе роли и определялся процент для каждой из них. Сейчас возникла необходимость определять для заказа нескольких менеджеров, где для каждого назначается роль и процент.
Изначально был предложен такой вариант: ведение заказа и назначение процентов в разных формах. Сначала формируется заказ (в котором определяются доходы и расходы), а после его завершения в другой форме заказу назначается один или несколько менеджеров со своими ролями и процентами. Но в силу того, что заказов много и менеджеры включаются в работу в процессе исполнения заказа, данный вариант был отвергнут.
Второй вариант проекта включает дополнительный блок в заказе, где для каждого менеджера, в случае его участия, сразу назначается исполняемая им роль и определяется процент, который можно впоследствии изменить. Вариант с назначением дополнительной премии сохранён и включён в общий расчёт.
Случай с участием одного менеджера в двух ролях не включён, так как он уже был реализован. Также не добавлялись з/п и НДФЛ.

Элементы программы:
- Объект сотрудников: должен быть недоступен при сетевом использовании для изменения самими сотрудниками, так как в заказе жёстко определяется их список. В случае изменения необходимо менять и форму заказа.
- Объект года: необходим для выборки в форме отчёта, так как формируется отчёт-таблица для всего года целиком по месяцам. Для следующего года необходимо делать аналогичную форму.
- Объект заказов: не имеет ничего лишнего кроме того, что требуется для реализации поставленной задачи.
- Объект дополнительных премий.
- Форма итога для расчёта начисленных премий за год по месяцам.

В объекте заказа определён список менеджеров организации, который может быть размещён на другой вкладке. На 8-ую вкладку вынесены служебные поля, участвующие в расчётах.
Список менеджеров для заказа.png Служебные поля на 8-ой вкладке.png
При задании роли менеджеру, открывается группа полей: процент и расчётная сумма премии.
Назначение роли процента и расчёт премии менеджеру.png
Скрытие неиспользуемых данных производится при помощи поля группы, для которого задаётся условие на отображение полей группы [1_Роль]=нет. Поле группы назначается нужным полям процента и суммы премии.
Для обнуления суммы премии при отсутствии роли используется составное поле с формулой [String(1_Роль=нет?0:1)], значение которого передаётся в дополнительное числовое поле "1_Значение роли". Это поле используется в расчёте премии по формуле [Сумма]*[1_процент]/100*[1_Значение роли].

В объекте дополнительной премии указывается заказ, менеджер, его роль и рассчитывается процент премии. Выборка месяца и года производится также как и в объекте заказа: при помощи формул в составном поле [monthW(Дата)] и [Year(Дата)].

В форме итогов, в результирующих полях, определены формулы для каждого месяца:
Список месяцев в результирующих полях формы итогов.png
Для каждого месяца задаётся четыре расчёта:
- один из объекта доп. премии;
- три из объекта заказа для каждого менеджера.

Небольшое пояснение работы расчёта в результирующем поле:
Расчёт для менеджера в заказе.png
Программа обходит все записи объекта "Заказ" и проверяет поле "1_Менеджер". Если его значение совпадает с записью объекта "Сотрудник" (на базе которого создана форма), то берётся значение из поля "1_Премия" и прибавляется/отнимается от общего результата. Дополнительные условия по значению фильтруют значения для участия в расчётах.

Конечный расчёт начислений по каждому сотруднику за год содержит формулу [январь]+[февраль]+[март]+[апрель]+[май]+[июнь]+[июль]+[август]+[сентябрь]+[октябрь]+[ноябрь]+[декабрь].

Результат работы формы итогов по начисленным премиям за год:
Форма итога по начисленным премиям за год.png
Отображается сумма премии для каждого сотрудника помесячно, а также сумма премий для всех за месяц и за год.

Примечание: форму итогов можно было упростить, определив максимум два менеджера, участвующих в заказе (при этом можно назначать одному менеджеру две роли). Но так как в будущем планируется участие всех трёх менеджеров, то выбран вариант определения сразу всех сотрудников для уменьшения операций назначения их участия в заказе.

См. также:
 

Вложения

Сверху Снизу