0
На рассмотрении

Доплата (с учетом среднемесячной нормы часов за квартал)

Алексей П 4 недели назад в Расчеты начислений и удержаний / Алгоритмы обновлен Гашков Николай (Эксперт) 3 недели назад 5

Добрый день!

Возник вопрос.

Есть ли какой-то подобный алгоритм:

суммы фактического заработка за текущий месяц (выборка по столбцу)

 --------------------------------------------------------------------------------------------------------     х РВ(ч)   х  БЗ (в %)
                среднемесячное знач. часов (за квартал)

При этом среднемесячное знач в часах (за квартал) - это норма часов за предшествующие 3 месяца деленное на 3

К примеру январь (136ч) + февраль (160ч) + март (167ч) =  463ч / 3 = 154

На рассмотрении

1) "за квартал" и "за предшествующие 3 месяца" это не одно и тоже.
Если считаем в феврале - РВ за какие месяцы выбирать? декабрь-октябрь? январь-ноябрь?
(но это так, уточнения к постановке задачи).
2) если график менялся или был составным - норму какого графика берем?
3) всегда ли берем график человека, или в каких-то случаях придется брать "стандартную пятидневку" например?
4) если человек был принят в течении "квартала" - все равно делим на 3, или делим на те месяцы, когда он был устроен на работу, или на полные месяцы работы?

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

Уточнили по этим вопросам:

1) Эта Доплата планируется выплачиваться только раз в квартал.

По такому принципу:

в апреле (и с учетом нормы за янв-фев-март)

в июле (апр-май-июнь)

в октябре (июль-авг-сент)

и в декабре (окт-нояб-дек)

2)3)  будет браться не график, а стандартная пятидневка у всех, независимо от графика, и независимо менялся или нет. Норма часов исходя из стандартной пятидневки (40 часовой)

4) те кто не отработал полностью 3 предыдущих месяца - не будут получать эту доплату. У них не будут в принципе считать этот вид. Если устроен был сотрудник к примеру в марте,  то доплата будет только в июле (с учетом нормы апр-май-июнь)

те кто не отработал полностью 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..

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