29.03.2016, 12:05 | #1 |
Программатор
|
Ax2012. TaxWorkRegulation не чистится после разноски накладной по продаже
Всем привет!
Если разнести из заказа на продажу накладную по кнопке накладная (это важно), а не счет фактура, предварительно скорректировав налог, случается сабж. Это нормально? Или это бага какая то стандартная? Или фича? При накоплении полумиллиона записей в этой таблице корректировка налога начинает адско подтормаживать. Фишка вот в чем \Classes\TaxRegulation\newTaxRegulation X++: if (SysCountryRegionCode::isLegalEntityInConsolidatedCountryRegion() && _tax.getTaxAdjustmentTypes().in(TaxAdjustmentType::Detail)) { taxRegulation = TaxRegulationDetail::construct(); } else { taxRegulation = new TaxRegulation(); } При этом в \Classes\TaxSalesInvoice\deleteTaxRegulation X++: void deleteTaxRegulation() { TaxWorkRegulation taxWorkRegulation; ; delete_from taxWorkRegulation where taxWorkRegulation.HeadingTableId == origHeadingTableId && taxWorkRegulation.HeadingRecId == origHeadingRecId; } То есть фишка в том, что если разносить по кнопке счет фактура - все чиститься корректно, если по кнопке накладная - то не чистится. При этом тестировал - разнес накладную(с корректировкой налога), удалил все записи в TaxWorkRegulation, разнес затем фактуру - все корректно, налоги везде верные. Если разнести накладную, потом фактуру, то записи тоже не чистятся. Мне кажется тут что то не так... Заранее спасибо! Последний раз редактировалось Sada; 29.03.2016 в 12:25. |
|
29.03.2016, 17:52 | #2 |
Программатор
|
Цитата:
Сообщение от Sada
При этом в
\Classes\TaxSalesInvoice\deleteTaxRegulation X++: void deleteTaxRegulation() { TaxWorkRegulation taxWorkRegulation; ; delete_from taxWorkRegulation where taxWorkRegulation.HeadingTableId == origHeadingTableId && taxWorkRegulation.HeadingRecId == origHeadingRecId; } \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; } |
|
01.04.2016, 23:16 | #3 |
Участник
|
А вы смотрели как заполняется 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 |
Программатор
|
Цитата:
Сообщение от 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; } Последний раз редактировалось Sada; 02.04.2016 в 08:37. |
|
Теги |
ax2012, tax, taxworkregulation |
|
|