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

Расчет за первую половину месяца

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

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

После расчёта за первую половину месяца у клиента обнулились суммы рассчитанных ранее отпусков.

Беру поставочного Астрова, рассчитываю ему отпускные с 28.04 по 10.05:

Image 3978

Далее делаю расчёта за первую половину месяца:

Image 3979

Сумма отпуска за текущий месяц действительно обнулилась. Почему так и как побороть (вариант с "1" в 4 столбце спецТВХ не рассматривается)

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

Добрый день.

Исключите отпуск из столбца, по которому рассчитываете 1/2

В данном случае это невозможно, т.к. для расчёта аванса я нарисовал скрипт:

case 801:  
{
toMatrLS();

//Параметр 1 - столбец ТВХ для выборки начислений

struct Struct_Alg Work;
Get_AlgWithParam(Work,info.ikod);
int stolbec=50;//Столбец по умолчанию
if (Work.Count_Par>0)
{
stolbec = atoi(reinterpret_cast_to_string(Work.List_Par[0]));
}

double n_av, n_pr, nal, ud, ud_pr, av;
var CurProp = GetCurPropCountLS();

n_av = CollectSummPropSimv("1",stolbec-1,0,mrasch, CL_MV | CL_COL | CL_NACH,CurProp); // Начисления для аванса
n_pr = CollectSummPropSimv("2",stolbec-1,0,mrasch, CL_MV | CL_COL | CL_NACH,CurProp); // Прочие начисления 
ud = CollectSummPropSimv("1",stolbec-1,0,mrasch, CL_MV | CL_COL | CL_UD,CurProp); // Удержания
av = CollectSummPropSimv("9",stolbec-1,0,mrasch, CL_MV | CL_COL | CL_UD,CurProp); // Аванс,начисленный ранее
r[2] = dney_v_tab("РЖВ",calm,info.z1,info.z2);//количество отработанный в первой половине месяца дней

ud_pr = n_pr/(n_pr+n_av)*ud;// Удержания с прочих начислений

info.n1=n_av-ud-av+ud_pr;

if(info.n1<0.0001) info.n1 = 0.00;

if(FL_V_ALG && uprc != NO_SCREEN)
{
infolist.add_record("Столбец Т/В",stolbec);
infolist.add_record("Начислено для аванса",n_av);
infolist.add_record("Прочие начисления",n_pr);
infolist.add_record("Аванс,начисленный ранее",av);
infolist.add_record("Всего удержано",ud);
infolist.add_record("Удержания с прочих начислений",ud_pr);
infolist.add_record("Результат",info.n1);
}
return code_MDefault;
}

Поясню зачем этот огород.

Клиенты жалуются, что штатный способ расчёта может сильно занижать сумму аванса, если до момента его начисления уже рассчитаны отпускные, больничный, премия и т.п. и на них начислены НДФЛ, профсоюз, алименты и т.д.

Ну, т.е. исключиать отпуск из столбца, по которому рассчитывается 1/2 ни как нельзя.

Может как-то это всё можно "допилить"?

Можно вместо вашего расчета использовать ras_normzar().

Он сам рассчитает виды, отмеченные в столбце ТВХ ( не придется ничего вычислять)

Пример скрипта: USAVANS.S

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