0
На рассмотрении
Доплата (с учетом среднемесячной нормы часов за квартал)
Алексей П 5 месяцев назад
в Расчеты начислений и удержаний / Алгоритмы
•
обновлен Гашков Николай (Эксперт) 5 месяцев назад •
5
Добрый день!
Возник вопрос.
Есть ли какой-то подобный алгоритм:
суммы фактического заработка за текущий месяц (выборка по столбцу)
-------------------------------------------------------------------------------------------------------- х РВ(ч) х БЗ (в %)
среднемесячное знач. часов (за квартал)
При этом среднемесячное знач в часах (за квартал) - это норма часов за предшествующие 3 месяца деленное на 3
К примеру январь (136ч) + февраль (160ч) + март (167ч) = 463ч / 3 = 154
Сервис поддержки клиентов работает на платформе UserEcho
1) "за квартал" и "за предшествующие 3 месяца" это не одно и тоже.
Если считаем в феврале - РВ за какие месяцы выбирать? декабрь-октябрь? январь-ноябрь?
(но это так, уточнения к постановке задачи).
2) если график менялся или был составным - норму какого графика берем?
3) всегда ли берем график человека, или в каких-то случаях придется брать "стандартную пятидневку" например?
4) если человек был принят в течении "квартала" - все равно делим на 3, или делим на те месяцы, когда он был устроен на работу, или на полные месяцы работы?
Но по исходному вопросу - нет, ничего подобного в поставке нет. Но скриптами такой алгоритм вроде несложно должно быть написать.
Уточнили по этим вопросам:
1) Эта Доплата планируется выплачиваться только раз в квартал.
По такому принципу:
в апреле (и с учетом нормы за янв-фев-март)
в июле (апр-май-июнь)
в октябре (июль-авг-сент)
и в декабре (окт-нояб-дек)
2)3) будет браться не график, а стандартная пятидневка у всех, независимо от графика, и независимо менялся или нет. Норма часов исходя из стандартной пятидневки (40 часовой)
4) те кто не отработал полностью 3 предыдущих месяца - не будут получать эту доплату. У них не будут в принципе считать этот вид. Если устроен был сотрудник к примеру в марте, то доплата будет только в июле (с учетом нормы апр-май-июнь)
Те, кто был на БЛ или в отпуске, сдавал кровь и т.д. тоже будут лишены надбавки?
На скриптах писать умеете?
Разбейте весь алгоритм на подзадаче и напишите расчет..
Если какой то этап вызывает сложности- пишите, поможем.
Загвоздка в основном только в "среднемесячное знач. часов (за квартал)"
Как правильно прописать скрипт, чтобы брало время
Пример расчета
KvartalNrv(scheduleNumber,absMonth) { //расчет выполняем только для месяцев, в которых начинается следующий квартал. //для января берем в расчет период[октябрь;декабрь], для апреля берем [январь;март] и т.д. var kdate=KDateFromInt(absMonth); if( kdate.GetMonth()!=1 && kdate.GetMonth()!=4 && kdate.GetMonth()!=7 && kdate.GetMonth()!=10 ) return 0; double nrv=0; //цикл по месяцам квартала for(int m=GetAbsMonthForBegKvartal(absMonth-1);m<=GetAbsMonthForEndKvartal(absMonth-1);m++) nrv+=NrvByScheduleNumber(scheduleNumber,m,true); return nrv; } NrvByScheduleNumber(scheduleNumber,absMonth,bHours) { int tmpMrasch = mrasch; s50(absMonth); //грузим нужный график rwnorma(scheduleNumber,0); s118(); double nrv= bHours ? norm(2) : norm(1); if ( mrasch!=tmpMrasch ) s50(tmpMrasch); return nrv; }Использовать так
return KvartalNrv(1,KDateFromStr("10.2024").GetAbs()); //return KvartalNrv(1,mrasch);Остается полученное значение поделить на 3..