DAX 5.0 SP1
Класс TaxJournalSpec метод taxSpec()
Исходный код (уже исправленный, баги выделены комментариями)
X++:
boolean taxSpec()
{
TaxWriteSelection taxWriteSelection;
TaxGroup lastTaxGroup;
InventTransId lastInventTransId;
LedgerAccount lastOperationAccount;
Set taxSpecCodeSet;
;
if (released == NoYes::No)
{
// BP Deviation Documented
taxSpecTmp.setTmp();
lastTaxGroup = '';
lastInventTransId = '';
lastOperationAccount = '';
taxSpecCodeSet = this.initTaxSpecCodeSet();
...
if (!taxJournalTrans.ExemptCode && taxJournalTrans.TaxPrintDetail != TaxPrintDetail::TaxGroup)
{
taxWriteSelection = TaxTable::find(taxJournalTrans.TaxCode).TaxWriteSelection;
if (taxWriteSelection == TaxWriteSelection::PrintCode)
{
if(taxJournalTrans.PrintCode)
{
taxSpecTmp.PrintCode = taxJournalTrans.PrintCode;
}
else
{
taxSpecTmp.PrintCode = TaxTable::printCode(taxJournalTrans.TaxCode);
}
}
if (taxWriteSelection == TaxWriteSelection::TaxRate & /* баг - & вместо &&*/ taxJournalTrans.TaxValue)
{
taxSpecTmp.PrintCode = strfmt("%1",taxJournalTrans.TaxValue);
}
}
}
}
select
sum(TaxBaseQty),
sum(SourceTaxAmountCur),
sum(SourceBaseAmountCur),
sum(SourceRegulateAmountCur),
sum(TaxAmount),
sum(TaxBaseAmount)
from taxSpecTmp
group by TaxSpecCode, TaxDirection, ExemptTax, ExemptCode, SourceCurrencyCode, TaxAutoGenerated, TransDate, euroTriangulation /* баг - забыли PrintCode */
where taxSpecTmp.TransTableId == sourceTableId &&
taxSpecTmp.TransRecId == sourceRecId;
}
else
{
next taxSpecTmp;
}
released = NoYes::Yes;
if (taxSpecTmp)
{
taxCode = taxSpecTmp.TaxSpecCode;
taxDirection = taxSpecTmp.TaxDirection;
taxWriteCode = taxSpecTmp.PrintCode; /* используем невыбранный PrintCode*/
taxExemptTax = taxSpecTmp.ExemptTax;
taxExemptCode = taxSpecTmp.ExemptCode;
currencyCode = taxSpecTmp.SourceCurrencyCode;
taxExemptDescription = '';
...
}
Для сравнения можно посмотреть класс TaxInvoiceSpec метод taxSpec(), который выполняет аналог. функции и не содержит этих багов.
Как получить из стандарта: Распечатать подтверждение заказа (отчет salesConfirm) - не будут напечатаны налоговые коды (если они были заданы), при печати накладной коды печатаются.