0
Отвечен

Годовая премия 2024

Волочнева Татьяна 1 месяц назад в Расчеты начислений и удержаний / Алгоритмы обновлен Гашков Николай (Эксперт) 4 недели назад 7

Подскажите, как настроить расчет годовой премии? Формула расчета: Оклад/ГодНормЧас*ГодФактЧас*% по основному месту работы.

ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от Волочнева Татьяна 4 недели назад
На рассмотрении

Добрый день.

Как определяется годовая норма?

фактЧасы  из табеля или из видов? 

"Оклад" - это БЗ или факт?

Добрый день!

Годовая норма определяется из нормативных календарей в часах. ФактЧасы из табеля. Оклад -БЗ.

данные берутся из текущего года?  Факта за декабрь еще нет..

что делать если у сотрудника в течении года меняется календарь?

Данные берутся из текущего года.Зарплату за декабрь уже рассчитали.Если меняется график, брать по последнему 

графику.

Попробуйте такой алгоритм

в оkladCode нужно указать внутренний код вида оклада..

UserAlg777(&info,&r)
{
   double okladCode=4;
   
   int rowkod[ROWMAX];//массив с номерами строк
   int cntrow=poiskosnkodProp(okladCode,rowkod,0, GetCurPropCountLS());//получаем список строк 
   //откидываем недействующие в month строки
   FiltrRowkod(rowkod,cntrow, mrasch,1); 
   //нет оклада
   if(cntrow<1)
   {
      if(FL_V_ALG && uprc != NO_SCREEN)
         infolist.add_record("Оклад",0);
      info.n1=0;
      return code_Break;
   }
   double okladBz=GetBase(rowkod[0]);
   
   char t[20];
   if((info.c=korrv(r,t,0,info.h,flagrow,jf)) != 1)
      return code_ReturnCode;
   double percent=r[2];
   
   var lastDayYear=KDateFromInt_LastDay(GetAbsMonthForEndYear(mrasch));
   
   //график определяем на 31.12.xxxx
   char str[256];
   GetKchValue("grafik",str,10,lastDayYear);
   int calend=atoi(str);
   if (calend<1) 
      calend=1;
   
   double nrv=GetYearNrv(calend,2,lastDayYear.GetYear());
   double frv=GetYearFrv(GetCurPropCountLS().GetCombine(),2,lastDayYear.GetYear());
   if(nrv>0.0001)
      info.n1= (okladBz*percent/100.)*frv/nrv;
   else
      info.n1=0;
   if(FL_V_ALG && uprc != NO_SCREEN)
   {
      infolist.add_record("Оклад",okladBz);
      infolist.add_record("Процент",percent);
      infolist.add_record("calend",calend);
      infolist.add_record("ФРВ год",frv);
      infolist.add_record("НРВ год",nrv);
      infolist.add_record("Результат",info.n1);
   }
   return code_Break;
}

USALG.S

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