2016-03-04 15:20:55
Краткое описание :
При наличии более 2-х ПЛ в один день неверно суммируется время по ПЛОписание :
Сверка с табелем "Зарплаты"Что измененно :
Если у водителя было более двух ПЛ, итоговая сумма считается неверно.
Ошибку нашел в исходнике mvktab.vip, строка 845
было
----------------------------------------------------------------------
PutVal[Day(PutLst.ExitDn)]:= PutLst.TimeMove + PutLst_Prev.TimeMove
+ if (wtimerep = 1,PutLst.TimeRep,0) + if (wtimerep = 1,PutLst_Prev.TimeRep,0);
----------------------------------------------------------------------
т.е. суммируется время первого и текущего ПЛ.
Надо:
----------------------------------------------------------------------
PutVal[Day(PutLst.ExitDn)]:= PutVal[Day(PutLst.ExitDn)] + PutLst.TimeMove
+ if (wtimerep = 1,PutLst.TimeRep,0);
----------------------------------------------------------------------
Аналогично в стр.855 должно быть:
PutVal[Day(PutLst.ExitDn)]:= PutVal[Day(PutLst.ExitDn)] - (PutLst_Prev.TimeMove + if (wtimerep = 1,PutLst_prev.TimeRep,0)) + (PutLst.TimeMove + if (wtimerep = 1,PutLst.TimeRep, 0));
Дополнительно во вьюхе надо сделать сортировку putlst по дате и времени выезда (чтобы более точно делать проверку на пересечение времени в путевых):
order byDateTime by PUTLST.EXITDN, PUTLST.EXITCH
И сохранять NRec предыдущего ПЛ не только при первой итерации, но и последующих. Для этого после 848 и 857 строчки в вышеуказанном mvktab.vip добавить
Driver.nrecPutlst[Day(PutLst.ExitDn)]:= PutLst.nrec;
Как измененно :
Учитывается более двух путевых на один день при расчете времени. При перекрытии по времени путевых берется наибольшее время из перекрывающихся ПЛ(ранее существоваший функционал).