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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2016, 12:05   #1  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Ax2012. TaxWorkRegulation не чистится после разноски накладной по продаже
Всем привет!

Если разнести из заказа на продажу накладную по кнопке накладная (это важно), а не счет фактура, предварительно скорректировав налог, случается сабж.

Это нормально? Или это бага какая то стандартная? Или фича? При накоплении полумиллиона записей в этой таблице корректировка налога начинает адско подтормаживать.

Фишка вот в чем
\Classes\TaxRegulation\newTaxRegulation
X++:
if (SysCountryRegionCode::isLegalEntityInConsolidatedCountryRegion() && _tax.getTaxAdjustmentTypes().in(TaxAdjustmentType::Detail))
    {
        taxRegulation = TaxRegulationDetail::construct();
    }
    else
    {
    taxRegulation = new TaxRegulation();
    }
Если вызывается корректировка налога из формы разноски накладной, то выполняется IF и ссылке в этой табличке на SalesLine, если из формы разноски фактуры - выполняется ELSE и ссылки в этой табличке на SalesTable

При этом в
\Classes\TaxSalesInvoice\deleteTaxRegulation

X++:
void deleteTaxRegulation()
{
    TaxWorkRegulation taxWorkRegulation;
    ;
    delete_from taxWorkRegulation
    where taxWorkRegulation.HeadingTableId == origHeadingTableId
       && taxWorkRegulation.HeadingRecId == origHeadingRecId;
}
origHeadingTableId = SalesTable

То есть фишка в том, что если разносить по кнопке счет фактура - все чиститься корректно, если по кнопке накладная - то не чистится. При этом тестировал - разнес накладную(с корректировкой налога), удалил все записи в TaxWorkRegulation, разнес затем фактуру - все корректно, налоги везде верные.
Если разнести накладную, потом фактуру, то записи тоже не чистятся.

Мне кажется тут что то не так...


Заранее спасибо!

Последний раз редактировалось Sada; 29.03.2016 в 12:25.
Старый 29.03.2016, 17:52   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от Sada Посмотреть сообщение
При этом в
\Classes\TaxSalesInvoice\deleteTaxRegulation

X++:
void deleteTaxRegulation()
{
    TaxWorkRegulation taxWorkRegulation;
    ;
    delete_from taxWorkRegulation
    where taxWorkRegulation.HeadingTableId == origHeadingTableId
       && taxWorkRegulation.HeadingRecId == origHeadingRecId;
}
origHeadingTableId = SalesTable
Опечатался
\Classes\TaxCalculationAdjustment\deleteTaxRegulation

X++:
public static void deleteTaxRegulation(Tax _tax)
{
    TaxWorkRegulation taxWorkRegulation;
    ;

    ttsbegin;
    delete_from taxWorkRegulation
        where taxWorkRegulation.HeadingTableId == _tax.origHeadingTableId()
           && taxWorkRegulation.HeadingRecId == _tax.origHeadingRecId();
    ttscommit;
}
origHeadingTableId = SalesTable
Старый 01.04.2016, 23:16   #3  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
А вы смотрели как заполняется Set getTaxAdjustmentTypes() ?
Просто, если проанализировать заполнение, то можно найти вот такой код в методе SalesCalcTax_ParmTrans\useDetailsSalesTaxAdjustmentType

X++:
/// </returns>
public boolean useDetailsSalesTaxAdjustmentType()
{
    boolean useDetailSalesTaxAdjustmentType;

    // Detailed level sales tax adjustments only applies when the tax calculation uses sales tax adjustments.
    Debug::assert(this.useSalesTaxAdjustments());

    if (SysCountryRegionCode::isLegalEntityInConsolidatedCountryRegion())
    {
        if (documentStatus == DocumentStatus::Invoice)
        {
            useDetailSalesTaxAdjustmentType = true;
        }
    }

    return useDetailSalesTaxAdjustmentType;
}
Сдается мне, что локализаторы просто забыли добавить в этот метод условие по фактуре, отсюда и различное поведение.
__________________
Sergey Nefedov
Старый 02.04.2016, 08:34   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от SRF Посмотреть сообщение
А вы смотрели как заполняется Set getTaxAdjustmentTypes() ?
Просто, если проанализировать заполнение, то можно найти вот такой код в методе SalesCalcTax_ParmTrans\useDetailsSalesTaxAdjustmentType

X++:
/// </returns>
public boolean useDetailsSalesTaxAdjustmentType()
{
    boolean useDetailSalesTaxAdjustmentType;

    // Detailed level sales tax adjustments only applies when the tax calculation uses sales tax adjustments.
    Debug::assert(this.useSalesTaxAdjustments());

    if (SysCountryRegionCode::isLegalEntityInConsolidatedCountryRegion())
    {
        if (documentStatus == DocumentStatus::Invoice)
        {
            useDetailSalesTaxAdjustmentType = true;
        }
    }

    return useDetailSalesTaxAdjustmentType;
}
Сдается мне, что локализаторы просто забыли добавить в этот метод условие по фактуре, отсюда и различное поведение.
Да смотрел. Вот хочу понять что это. Бага или фича?) Лично я прикрутил очистку TaxWorkRegulation для SalesLine и VendInvoiceInfoLine после разносок накладных

Последний раз редактировалось Sada; 02.04.2016 в 08:37.
Теги
ax2012, tax, taxworkregulation

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX2012 and AX2009 or AX4 side by side - AOS performance counters overwritten Blog bot DAX Blogs 0 13.03.2012 18:11
Сторнирование накладной в заказе на продажу yahenz DAX: Программирование 7 17.02.2012 20:20
ukax: Microsoft Dynamics AX2012 - Partner Update Briefing Blog bot DAX Blogs 0 23.07.2011 20:15
Очистить память после разноски журнала ОС npokypatop DAX: Программирование 7 25.06.2008 17:03
Коррекция при разноски накладной заказа Daisy DAX: Функционал 6 02.05.2006 16:07
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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