Ahiless написал(а):
По очень простой логике: берём начисленный оклад (АМТ из 0010), делим на кол-во отработанных дней (NUM из 0010) и умножаем на кол-во рабочих дней в периоде(GASOLL). Так получаем оклад, который сотрудник должен получить. Из него вычитаем АМТ из 0010 и АМТ больничного(4300). И всё замечательно работает.
Сомнительно, что этот алгоритм работать замечательно. Скажем, если сотрудник сначала был в отпуске, а потом заболел, и за месяц у него не было ни одного дня оплаченного по окладу, то как он будет работать?
Цитата:
По сути, нужно вытянуть как-то, сколько рабочих дней периода пришлось на старый оклад, а сколько на новый, умножить на соответствующую дневную ставку (по сплитам) и сложить.
Для этой задачи нет нужны считать гипотетический оклад за весь месяц. Достаточно посчитать только ту часть, которая пришлась на больничный. Для этого нужно знать сколько рабочих дней пришлось на период больничного.
Это довольно легко сделать. Нужно в оценке отсутствий (ракурс V_T554C) для больничного наряду с ВО самого больничного (4300) указать дополнительный ВО для доплаты с оценкой в рабочих днях (значение RT). Тогда, на выходе из PAB для больничного будет 2 ВО: сам больничный, с оценкой в календарных днях, и ВО для доплаты в рабочих днях. Причем у этих ВО будет одинаковое значение сплита AB, по которому в дальнейшем эти ВО можно сопоставлять. Если во время больничного будет смена оклада (или тому подобное, например, смена графика работы), то будет дополнительное разделение по сплиту AP (по wpbp).
Больничный считаете как обычно, ВО для доплаты – как оклад по соответствующей дневной ставки с учетом сплита AP.
После того, как эти величины будут подсчитаны, необходимо сгруппировать эти ВО по сплиту AB. Получится 2 величины: оплата больничного по среднему и оплата за это же время по окладу. Вычитая второе из первого, получится размер доплаты.