Постановка задачи:
На основании модификации, полученной из офиса Колумбуса, изменить механизм расчета налогов при проведении накладной для повышения производительности.
Модификация:
В классе Tax изменен метод adjustAmount
PHP код:
void adjustAmount(ExchRate _exchRate,
ExchRate _exchrateSecondary)
{
if (_exchRate)
{
ttsbegin;
while select forupdate taxWorkTrans
where taxWorkTrans.headingRecId == headingRecId &&
taxWorkTrans.exemptTax == NoYes::No
// Оптимизация расчета налогов (c) KURA -->
&& taxWorkTrans.SourceRecId == this.sourceRecId()
// Оптимизация расчета налогов (c) KURA <--
{
...
Что мне известно по этой теме:
Действительно, при расчете налогов по многострочным заказам (закупкам) класс Tax делает очень много пересчетов суммы налогов. Особенно хорошо это видно, если на данную операцию натравить профайлер - Аксапта "уйдет в себя" на продолжительное время. Данная модификация должна решить эту проблему, но есть вопросы.
Вопросы:
1. Какой выигрыш в производительности может дать такое изменение кода?
2. Как это скажется на потомках Tax-а и на расчете "withoutSource"?
1+2 Стоит ли игра свеч, а результат труда (с учетом анализа своих потомков Tax-а)?
3. Кто-дь использует у себя такую оптимизацию?
4. Если все хорошо, то почему ее нет в SP и HF?
P.S. Не знаю как эта тема согласуется с авторскими правами.
P.S.S. Сам еще на занимался плотным анализом механизмов класса Tax и потомков. Поэтому, будет интересна любая инфа по теме.