0
На рассмотрении
Алгоритм ночных\праздничных от МРОТ
Татьяна Батурина 4 года назад
в Расчеты начислений и удержаний / Алгоритмы
•
обновлен 4 года назад •
5
Добрый день!
Помогите пожалуйста с реализацией алгоритма для расчета Ночных\Праздничных от суммы S1 =>МРОТ
БЗ |
НРВ (168) |
РВ |
Сумма |
|
Оклад (час) |
5000,00 |
168 |
160 |
4761,90 |
Нагрузка |
100% |
4761,90 |
||
S1 |
Оклад+Нагрузка |
S1 = 9523,80 |
||
S2 = Ночные |
Если S1<МРОТ (12130,00), то S2=МРОТ/НРВ * РВ (ночных) |
|||
Если S1>=МРОТ (12130,00), то S2=S1/НРВ * РВ (ночных) |
считаем пока без сравнения с МРОТ.
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день.
Пример алгоритма:
USALG.S
Спасибо большое. В процессе внедрения выяснилось:
Если S1<МРОТ, то S2 (ночных) = МРОТ/НРВ * БЗ(ночных,%) * РВ (ночных);
Если S1>МРОТ, то S2 (ночных) = S1/РВ (106-Оклад/час) * БЗ(ночных,%) * РВ (ночных)
как определить РВ по 106:Оклад/час
info.n1 = (summ < mrot) ?
mrot*info.bz/100.*r[2]/norm(2):
summ*info.bz/100.*r[2]/norm(2); - norm(2) заменить на РВ (106-вида)
Добрый день!
РВ по 106 виду можно определить с помощью, например, ф-ции rvvid()
rvvid("*тек",6.,0,n2);
Переменную n2 надо выше описать, как
double n2;
Спасибо большое, получилось.
Получилось так:
UserAlg444(&info,&r)
{
struct Struct_Alg Work;
Get_AlgWithParamEx(Work, info.ikod, "25,86,0");
//-- параметр 1 - столбец таблицы входимости (по умолчанию 25)
int stolbec =25;
int param=atoi(reinterpret_cast_to_string(Work.List_Par[0]));
if ( param>0 && param<=99 ) stolbec=param;
//-- параметр 2 - Номер сетки для МРОТ (по умолчанию 86)
int numberSet=86;
param=atoi(reinterpret_cast_to_string(Work.List_Par[1]));
if ( param>0 ) numberSet = param;
//-- параметр 3 - Номер строки в сетке (по умолчанию 0)
int rowSet=0;
param=atoi(reinterpret_cast_to_string(Work.List_Par[2]));
if ( param > 0 && param <= 999) rowSet=param;
//сумма выборки
double summ=0.;
s100("н",0,stolbec-1,summ);
//определение РВ по 106 виду - Оклад/час
double n2;
rvvid("*тек",6.,0,n2);
//МРОТ
double mrot=0.;
int CodOrg = GetOrgForPodr(GetPodrOfCod(info.kod));
if (Value_For_Table_CodO(numberSet, CodOrg, rowSet, data, mrot) == EOF) mrot=info.bz;
char t[20];
if((info.c=korrv(r,t,0,info.h,flagrow,jf)) != 1)
return code_ReturnCode;
info.n1 = (summ < mrot) ?
mrot*info.bz/100.*r[2]/norm(2):
summ*info.bz/100.*r[2]/n2;
// Заполним таблицу уже найденными значениями
if(FL_V_ALG && uprc != NO_SCREEN)
{
infolist.add_record("Столбец выборки",stolbec);
infolist.add_record("Сумма выборки",summ);
infolist.add_record("МРОТ",mrot);
infolist.add_record("НРВ",norm(2));
infolist.add_record("РВ (106)",n2);
infolist.add_record("БЗ праздничных",info.bz);
infolist.add_record("Праздничные часы",r[2]);
infolist.add_record("Результат",info.n1);
}
return code_Break;
}