Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 579 Откуда: Москва
|
Добавлено: Чт Июн 24, 2010 18:52 Заголовок сообщения: Компенсация при увольнении |
|
|
Прием 26.10.2009 увольнение 03.06.2010
Доп. отпусков в ШР нет.
PR_LEAVE_DAYS_15 = 1
Периодов исключаемых из стажа нет.
Ниже даты отпусков, период, кол-во дней и остаток из списка отпусков работника.
очередной отпуск Ежегодный отпуск 01.03.2010 07.03.2010 7 7 26.10.2009 25.10.2010 7 7 21
очередной отпуск Ежегодный отпуск 10.05.2010 16.05.2010 7 7 26.10.2009 25.10.2010 7 7 14
В диалоге увольнения компенсация 1.94
Скажите, как программа получила это число??? |
|
Вернуться к началу |
|
|
olya_gran
Зарегистрирован: 01.10.2008 Сообщения: 70
|
Добавлено: Чт Июл 08, 2010 07:49 Заголовок сообщения: |
|
|
Честно говоря, не совсем поняла вопрос. Мне кажется, что за счет округления вполне могла оказаться такая цифра. Все равно расчет будет за целые дни. Таким образом из 1,94 будет 2 дня. Если посчитать самим, то за 12 месяцев работник заработает 28 дней. Со дня нового периода отпуска (26.10.2009) до даты увольнения (03.06.2010) прошло 7 месяцев. Значит 12мес/28дней*7мес=16,3333 дня. Работник уже использовал 14 дней. Остается 2,333, все равно округляем до целого и получаем 2 дня. Вроде все правильно? |
|
Вернуться к началу |
|
|
Vitaly Большой шоколадный орден
Зарегистрирован: 29.07.2008 Сообщения: 281 Откуда: Санкт-Петербург
|
Добавлено: Чт Июл 08, 2010 09:13 Заголовок сообщения: |
|
|
Мне тоже кажется, что в расчёте всё нормально |
|
Вернуться к началу |
|
|
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Чт Авг 19, 2010 13:50 Заголовок сообщения: |
|
|
Прогнал пример с указанными Вами данными, получил ожидаемые 2.28
Судя по информации из таблички отпусков, они были предоставлены при значении переменной PR_LEAVE_DAYS_15 = 0
При предоставлении отпусков с переменной =0, а увольнении =1, получилось 1.94, как и у Вас.
Если очень интересно, можно алгоритм поковырять, понять что там где происходит... |
|
Вернуться к началу |
|
|
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 579 Откуда: Москва
|
Добавлено: Пт Авг 20, 2010 10:58 Заголовок сообщения: |
|
|
Поковырял алгоритм и получил следующее:
Количество дней в году всегда 360, это нормировочный к-т. Почему я не знаю.
Количество неиспользованных дней в последнем отпуске 14, последний отпуск предоставлялся за период 2009-10-26 по 2010-10-26
Программа в соответствии с проставлением 1930 года округляет месяц приема и увольнения.
Дата приема 2009-10-26 – значит нужно отбросить 5 дней
Дата увольнения 2010-06-03 – значит нужно отбросить 3 дня
Итого отбрасывает 8 дней, программа вычитает их из даты увольнения и получаем 2010-05-25
Далее программа находит количество положенных дней компенсации между 2010-05-25 и 2010-10-26 – периодом за который отпуск предоставлялся – а значит эти дни нужно вычесть из остатка, пробитого в последнем отпуске.
Количество дней от 2010-05-25 до 2010-10-26 = 155
14 – 155*28/360=1.94
... и попробуй объяснить пользователю что от куда взялось...
сейчас пытаюсь разработать протокол расчета дней компенсации. Странно что разработчик этим не озадачился... |
|
Вернуться к началу |
|
|
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Пт Авг 20, 2010 11:57 Заголовок сообщения: |
|
|
Ну так как раз проблема в том, что Вы в процессе работы изменили системную переменную, что и повлияло на результат расчета, данные то в БД уже не корректные... |
|
Вернуться к началу |
|
|
|