0
Отвечен

Как изменить алгоритм оклада

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

Здравствуйте.

Вид "оклад" (алгоритм 4) имеет допреквизит "Поправочный коэффициент к должностному окладу" (псевдоним "kfs"). Как стандартный скрипт четвёртого алгоритма заставить умножать сумму оклада на значение в допреквизите, предварительно проанализировав:

- если допреквизит = 0 (пустой), умножать на 1

- если допреквизит != 0, умножать на значение допреквизита

Например вот так:

UserAlg904(&info,&r)
{
   char st[256]; double koff;
   StartRkv(GetCode(info.crow));
   ReadRkv("kfs",st);
   FinishRkv();
      koff=atof(st);           //коэффициент из доп рекв.
      if (!koff) koff = 1;
   
   worktime(info.crow,info.b3,0);
   char t[20];
   if((info.c=korrv(r,t,0,info.h,flagrow,jf)) != 1)
      return code_ReturnCode;
   info.n1=r[2]*info.bz/norm(1)*koff;
   // Выводим информацию по расчету
   if(FL_V_ALG && uprc != NO_SCREEN)
   {
      infolist.add_record("Рабочее время",r[2]);
      infolist.add_record("Норма дней",norm(1));
      infolist.add_record("Коэффициент",koff);
      infolist.add_record("Оклад",info.bz);
      infolist.add_record("Результат",info.n1);
   }
   return code_Break;
}

Не берёт РВ из табеля. Но не суть...

Нужно было вот это:

char st[256]; double koff;
   StartRkv(GetCode(info.crow));
   ReadRkv("kfs",st);
   FinishRkv();
      koff=atof(st);           //коэффициент из доп рекв.
      if (!koff) koff = 1;

СПАСИБО!

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

Нехорошо сравнивать double  с нулем...

Лучше поправить так:

char st[256]; 
StartRkv(GetCode(info.crow));
ReadRkv("kfs",st);
FinishRkv();
double koff=atof(st);           //коэффициент из доп рекв.
if (koff<0.00001) koff = 1;

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