02.03.2012, 21:51 | #1 |
Участник
|
Ax9 Зарплата Расчет Фондов
Переносили данные из 3.0. По таким сотрудникам Фонды считаются.
Принимаем нового сотрудника и не считается. Смотрю вообще по каким сотрудникам считаются фонды в классе RpayTaxSumCalc. Там есть метод updateFundPeriod. X++: while select rpayFundEmplSumEmpl group by EmplId where (rpayFundEmplSumEmpl.EmplId == _emplId || (_emplId ? false : true)) { if (! _emplId) { operationProgress.setText("@HRP372" + rpayFundEmplSumEmpl.EmplId); operationProgress.incCount(); } for (currentPeriod = _payPeriod; currentPeriod <= dateEndYr(_payPeriod); currentPeriod = endmth(nextmth(currentPeriod))) { this.runFund(currentPeriod,rpayFundEmplSumEmpl.EmplId); } this.createCorrection(rpayFundEmplSumEmpl.EmplId); this.updateSumYearCompensation(year(_payPeriod), rpayFundEmplSumEmpl.EmplId); } Не могу понять, а как же вновь принятые. У них же нет записи в rpayFundEmplSumEmpl. В какой момент по ним должны считаться фонды? |
|
03.03.2012, 01:12 | #2 |
Участник
|
Да, есть такое дело... Сами заменили на следующее:
X++: ... EmplTable emplTable; ; ... while select EmplId from emplTable where emplTable.PayMainEmplId_Ru == emplTable.EmplId && (emplTable.EmplId == _emplId || (_emplId ? false : true)) { if (! _emplId) { operationProgress.setText("@HRP372" + emplTable.EmplId); operationProgress.incCount(); } for (currentPeriod = _payPeriod; currentPeriod <= endmth(openPeriod); currentPeriod = endmth(nextmth(currentPeriod))) { this.runFund(currentPeriod,emplTable.EmplId); } this.createCorrection(emplTable.EmplId); this.updateSumYearCompensation(year(_payPeriod), emplTable.EmplId); } |
|
|
За это сообщение автора поблагодарили: gl00mie (5). |
03.03.2012, 01:59 | #3 |
Участник
|
Спасибо, хотела заменить на таблицу сотрудников, но сомневалась, т.к. странно, что такое неработающее есть в типовом функционале.
А по поводу endmth(openPeriod) спасибо, а то получалось, что если перешли в след период. Там посчитали зарплату. Вернулись назад, пересчитали фонды и они учли в текущем открытом периоде в базе фонда все будущее начисления. |
|
03.03.2012, 22:44 | #4 |
Участник
|
Цитата:
Сообщение от Arahnid
Переносили данные из 3.0. По таким сотрудникам Фонды считаются.
Принимаем нового сотрудника и не считается. Смотрю вообще по каким сотрудникам считаются фонды в классе RpayTaxSumCalc. Там есть метод updateFundPeriod. X++: while select rpayFundEmplSumEmpl group by EmplId where (rpayFundEmplSumEmpl.EmplId == _emplId || (_emplId ? false : true)) { if (! _emplId) { operationProgress.setText("@HRP372" + rpayFundEmplSumEmpl.EmplId); operationProgress.incCount(); } for (currentPeriod = _payPeriod; currentPeriod <= dateEndYr(_payPeriod); currentPeriod = endmth(nextmth(currentPeriod))) { this.runFund(currentPeriod,rpayFundEmplSumEmpl.EmplId); } this.createCorrection(rpayFundEmplSumEmpl.EmplId); this.updateSumYearCompensation(year(_payPeriod), rpayFundEmplSumEmpl.EmplId); } Не могу понять, а как же вновь принятые. У них же нет записи в rpayFundEmplSumEmpl. В какой момент по ним должны считаться фонды?
__________________
Sapere aude Последний раз редактировалось Diman; 03.03.2012 в 22:49. |
|
03.03.2012, 22:49 | #5 |
Участник
|
Цитата:
Сообщение от rusk
Да, есть такое дело... Сами заменили на следующее:
X++: ... EmplTable emplTable; ; ... while select EmplId from emplTable where emplTable.PayMainEmplId_Ru == emplTable.EmplId && (emplTable.EmplId == _emplId || (_emplId ? false : true)) { if (! _emplId) { operationProgress.setText("@HRP372" + emplTable.EmplId); operationProgress.incCount(); } for (currentPeriod = _payPeriod; currentPeriod <= endmth(openPeriod); currentPeriod = endmth(nextmth(currentPeriod))) { this.runFund(currentPeriod,emplTable.EmplId); } this.createCorrection(emplTable.EmplId); this.updateSumYearCompensation(year(_payPeriod), emplTable.EmplId); }
__________________
Sapere aude |
|
05.03.2012, 14:16 | #6 |
Участник
|
Цитата:
Это уже мы модифицировали - изначально используется конструкция currentPeriod <= dateEndYr(_payPeriod); |
|
05.03.2012, 14:28 | #7 |
Участник
|
Цитата:
X++: while select EmplId from emplTable where emplTable.PayMainEmplId_Ru == emplTable.EmplId && (emplTable.EmplId == _emplId || (_emplId ? false : true)) { if(operationProgress) { operationProgress.setText("@HRP372" + emplTable.EmplId); operationProgress.incCount(); } this.createFundTrans(_payPeriod, emplTable.EmplId, _counterUnit); if (!_emplId && !recalc) { this.createCorrection(emplTable.EmplId); } }
__________________
Sapere aude |
|
Теги |
расчет фондов, расчеты с персоналом |
|
|