28.06.2007, 11:07 | #1 |
Участник
|
внебюджетные фонды
Axapta 3.0 sp4
я новичок в Аксапте и мне бы хотелось узнать, как заставить Внебюджетный фонд (от травматизма) делать расчет по-месячно, а не нарастающе, как ЕСН. Я знаю, что это счетчик и вероятно он один для этих фондов. А ситуация в том, что в марте появилкся инвалид и по закону мы должны отчислять 60% от ставки этого фонда, через "группы зарплат" настроили, расчитывает правильно, но конечный результат с учетом предыдущих месяцев, т.е. нарастающе, занижает. У меня вопрос, как это можно исправить "програмируя" или через последовательность счетчиков ? |
|
28.06.2007, 12:24 | #2 |
Участник
|
Не программируя никак
Можно сделать следующее: 1. Добавьте в таблицу RPayCounterTable поле TaxPeriod с типом RPayFundTaxPeriod Ну и на форму RPayTaxFund заодно. При настройке надо будет выбрать период "Месяц" или "Год". 2. Замените метод calcFundAmount() класса RPayTaxSumCalc на X++: private RPayAmount calcFundAmount(RPayCounterUnit _counterUnit,RPayPeriod _payPeriod,EmplId _emplId) { RpayAmount fundTotalAmount, baseTotalAmount, fundTotalAmountPrev; RpayRateTable rpayRateTable; // ---> KSU #0075 RPayCounterTable rPayCounterTable = RPayCounterTable::find(_counterUnit); // <--- KSU #0075 ; // ---> KSU #0075 rpayRateTable = RpayRateTable::Find(rPayCounterTable.PayRate); if (rPayCounterTable.TaxPeriod == RPayFundTaxPeriod::Year) { baseTotalAmount = RpayFundEmplSum::GetFundBaseAmount(_emplId,_counterUnit,endMth(dateStartYr(_payPeriod)),_payPeriod); fundTotalAmountPrev = RpayFundEmplSum::GetFundAmount(_emplId,_counterUnit,endMth(dateStartYr(_payPeriod)),endMth(PrevMth(_payPeriod))); fundTotalAmount = rPayRateTable.GetValue(_payPeriod,_emplId,baseTotalAmount) * ((rpayRateTable.CritValueType || rPayRateTable.RateValueType == RPayRateValueType::CounterValue)? 1 : baseTotalAmount/100); fundTotalAmount = currency::amount(fundTotalAmount); return fundTotalAmount - fundTotalAmountPrev; } else if (rPayCounterTable.TaxPeriod == RPayFundTaxPeriod::Month)// ?? ????? { baseTotalAmount = RpayFundEmplSum::GetFundBaseAmount(_emplId,_counterUnit,_payPeriod,_payPeriod); fundTotalAmount = rPayRateTable.GetValue(_payPeriod,_emplId,baseTotalAmount) * ((rpayRateTable.CritValueType || rPayRateTable.RateValueType == RPayRateValueType::CounterValue)? 1 : baseTotalAmount/100); fundTotalAmount = currency::amount(fundTotalAmount); return fundTotalAmount; } /* baseTotalAmount = RpayFundEmplSum::GetFundBaseAmount(_emplId,_counterUnit,endMth(dateStartYr(_payPeriod)),_payPeriod); fundTotalAmountPrev = RpayFundEmplSum::GetFundAmount(_emplId,_counterUnit,endMth(dateStartYr(_payPeriod)),endMth(PrevMth(_payPeriod))); rpayRateTable = RpayRateTable::Find(RpayCounterTable::Find(_counterUnit).PayRate); fundTotalAmount = rPayRateTable.GetValue(_payPeriod,_emplId,baseTotalAmount) * ((rpayRateTable.CritValueType || rPayRateTable.RateValueType == RPayRateValueType::CounterValue)? 1 : baseTotalAmount/100); fundTotalAmount = currency::amount(fundTotalAmount); return fundTotalAmount - fundTotalAmountPrev; */ // <--- KSU #075 } |
|
Теги |
ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
расчеты с персоналом (внебюджетные фонды) | 2 | |||
Расчеты с персоналом: Внебюджетные фонды | 8 | |||
зарплата - внебюджетные фонды | 4 |
|