AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.06.2007, 11:07   #1  
ZAX is offline
ZAX
Участник
 
1 / 10 (1) +
Регистрация: 12.05.2006
внебюджетные фонды
Axapta 3.0 sp4
я новичок в Аксапте и мне бы хотелось узнать,
как заставить Внебюджетный фонд (от травматизма)
делать расчет по-месячно, а не нарастающе, как ЕСН.
Я знаю, что это счетчик и вероятно он один для этих фондов.
А ситуация в том, что в марте появилкся инвалид и по закону мы должны отчислять 60% от ставки этого фонда, через "группы зарплат" настроили,
расчитывает правильно, но конечный результат с учетом предыдущих месяцев,
т.е. нарастающе, занижает.
У меня вопрос, как это можно исправить "програмируя" или через последовательность счетчиков ?
Старый 28.06.2007, 12:24   #2  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Не программируя никак

Можно сделать следующее:
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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
расчеты с персоналом (внебюджетные фонды) Laura DAX: Функционал 2 21.07.2006 10:53
Расчеты с персоналом: Внебюджетные фонды rus_stas DAX: Функционал 8 22.03.2006 13:48
зарплата - внебюджетные фонды Ser DAX: Функционал 4 18.08.2004 11:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:11.