Ваши комментарии

Соглашусь что в данном случае проще всего решать вопрос через разбиение.
Не обязательно заводить разные виды окладов, как пишет Игорь Шалдин. Это может быть неудобно из-за того что каждый месяц программы могут меняться, надо "множить" строчки окладов. Много строк окладов (вместо одной строки) может приводить к тому что общая сумма оклада будет не равна окладу (на копейки но все же!).

Поэтому вполне подходит тот, вариант который сделали вы - мнимый вид.
Но в этом случае надо стандартные алгоритмы разбиения немного доработать под вас.

Если это не принцииально, то для простоты доработки часы с разбивкой по программам, заносить в этот мнимый вид не в рабочее время а в сумму.
Тогда в стандартное разбиение надо добавить предварительный шаг, на котором оклад будет разбит по этому мнимому виду, а все остальное уже по окладу.

1) Приказ на перевод не должен менять дату приема на работу (это же перевод!). Вы уверены что дата была изменена приказом на перевод?
2) У вас очень хороший пример, который показывает - нельзя брать дату приема из истории в поле кадровой части должность, как вы просите. Потому что конкретно этот человек сначала был договорником, поэтому очень странно для него в качестве даты приема рассматривать 04.02.2016 вместо 01.03.2016

На мой взгляд это лучше всего реализовать через личное общение/звонок клиенту.

Сервис поддержки клиентов работает на платформе UserEcho