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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.06.2011, 12:56   #1  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Фиксированный курс в накладной по закупке и сумма налога
DAX2009 SP1 RU6
Закупка в валюте. При разноске накладной по закупке задаю фиксированный курс, обрабатываю, вываливаются ошибки про несбалансированный документ ГК, анализ показывает, что сумма НДС в рублях пересчитана не по фиксированному, а по текущему на дату курсу. Все остальные суммы (по 10-ке и 60-му) пересчитаны верно по фиксированному курсу.

Кто-нибудь сталкивался с этим? Как заставить систему пересчитывать сумму НДС также по фикс. курсу?
За это сообщение автора поблагодарили: Logger (3).
Старый 14.06.2011, 14:01   #2  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Это оказывается не всегда происходит, повторить сходу не получилось, будем разбираться.
Старый 14.06.2011, 14:35   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,946 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Bega Посмотреть сообщение
Это оказывается не всегда происходит, повторить сходу не получилось, будем разбираться.
Мы пользуемся курсом на дату, но такого поведения не замечали.
Стоит RU5
Либо бага нет, либо не всегда (редко) воспроизводится.
За это сообщение автора поблагодарили: Bega (3).
Старый 14.06.2011, 16:38   #4  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Вроде разобрался. В методе TaxPurch::calc() где идет расчет суммы налога, происходит следующее:
1. Рассчитываются суммы налога.
2. Если это валютная накладная, вызывается adjustAmount, где сумма в рублях рассчитывается по фиксированному курсу.
3. Выясняется, сходится ли формула Сумма без НДС + Сумма НДС = Сумма с НДС.
В моем случае накладная включает НДС и получается разница в 1 копейку в валюте.
Система запускает коррекцию сумм в валюте и при этом пересчитывает сумму в рублях не по фиксированному курсу, а по текущему (метод adjustPennyDiff).
X++:
if (amountsInclTaxExist)
    {
        while select sum(SourceTaxAmountCur)
        from taxWorkTrans
        group by SourceRecId
        where taxWorkTrans.SourceTableId   == purchLineTableId       &&
              taxWorkTrans.TaxDirection    != TaxDirection::UseTax   &&
              taxWorkTrans.TaxOrigin       != TaxOrigin::TaxReversed
        {
            amountInclTax.insert(taxWorkTrans.SourceRecId, sourceCurrency.amount_Instance(amountInclTax.lookup(taxWorkTrans.SourceRecId)));

            if (amountInclTax.lookup(taxWorkTrans.SourceRecId) &&
                amountExclTax.lookup(taxWorkTrans.SourceRecId) + taxWorkTrans.SourceTaxAmountCur != amountInclTax.lookup(taxWorkTrans.SourceRecId))
            {
                counterMax++;
                adjustRecId[counterMax] = taxWorkTrans.SourceRecId;
                pennyDiff[counterMax] = amountExclTax.lookup(taxWorkTrans.SourceRecId) +
                                     taxWorkTrans.SourceTaxAmountCur -
                                     amountInclTax.lookup(taxWorkTrans.SourceRecId);

            }
        }
        if (counterMax)
        {
            for (counter = 1; counter <= counterMax; counter++)
                this.adjustPennyDiff(pennyDiff[counter], adjustRecId[counter]);
        }

    }
4. Если бы налог считался целиком для накладной, а не размазывался на строки, то система запустила бы еще раз коррекцию сумм в рублях:
X++:
if (taxCalculateTotal)
    {
        if (purchFormLetter.exchRate(taxDate)           != Currency::exchRate(sourceCurrencyCode, taxDate)          ||
            purchFormLetter.exchRateSecondary(taxDate)  != Currency::exchRateSecond(sourceCurrencyCode, taxDate)    ||
            purchFormLetter.triangulation(taxDate)      != Currency::triangulation(sourceCurrencyCode, taxDate))
        {
            this.adjustAmount(purchFormLetter.exchRate(taxDate),purchFormLetter.exchRateSecondary(taxDate));
        }

        this.adjustTaxInCostPrice(0);
    }
Однако в моем случае, она просто идет дальше и сумма в рублях оказывается некорректной. Понятно, что такой случай каждый день не возникает.

РЕШЕНИЕ мое такое:
нужно в вышеприведенном коде закоментировать строку if (taxCalculateTotal):
X++:
//TODO 
//if (taxCalculateTotal)
    {
        if (purchFormLetter.exchRate(taxDate)           != Currency::exchRate(sourceCurrencyCode, taxDate)          ||
            purchFormLetter.exchRateSecondary(taxDate)  != Currency::exchRateSecond(sourceCurrencyCode, taxDate)    ||
            purchFormLetter.triangulation(taxDate)      != Currency::triangulation(sourceCurrencyCode, taxDate))
        {
            this.adjustAmount(purchFormLetter.exchRate(taxDate),purchFormLetter.exchRateSecondary(taxDate));
        }

        this.adjustTaxInCostPrice(0);
    }

Последний раз редактировалось Bega; 14.06.2011 в 16:41.
Старый 30.06.2011, 12:02   #5  
Cathome is offline
Cathome
Участник
Аватар для Cathome
 
54 / 23 (1) +++
Регистрация: 10.11.2010
Адрес: Москва
Посмотрите, настроены ли у вас системные счета, на которые относятся ошибки округлений.
__________________
"казалось бы, зачем виртуализировать виртуализаторы виртуализаторов виртуальных ява-машин, но Оракл было уже не остановить..." © Башорг
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сторнирование накладной по закупке с накладными расходами bes DAX: Функционал 9 13.02.2015 17:29
Фиксированный курс в журнале ГК. Вторичная валюта. concigliory DAX: Функционал 3 24.02.2014 15:15
Сторнирование накладной по закупке с накладными расходами. ena_ax DAX: Функционал 13 25.03.2010 22:05
Обнуление налога в накладной по закупке. DiZ DAX: Функционал 10 11.01.2010 06:54
Корректировка суммы налога в закупке Anders DAX: Функционал 4 09.08.2005 18:46
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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