Эта сумма вычисляется в классе Tax, метод baseAmountExclTax.
Как известно берутся те налоги, которые входят и в налоговую группу и в налоговую группу номенклатуры.
X++:
while select taxGroupData
where taxGroupData.taxGroup == _taxGroup
join taxOnItem
where taxOnItem.taxItemGroup == _taxItemGroup &&
taxOnItem.taxCode == taxGroupData.taxCode {
tmpTaxWorkTrans
}
далее строки таблицы tmpTaxWorkTrans анализируются в цикле
X++:
while select taxDirection, taxCode
from tmpTaxWorkTrans
where tmpTaxWorkTrans.exemptTax == NoYes::No {
if (tmpTaxWorkTrans.taxDirection== TaxDirection::UseTax) importTax = true
...
if (taxTable.taxBase == TaxBaseType::AmountByUnit)
{
calcTax[counter] = false;
simpleBasis = false;
}
else
{
calcTax[counter] = true;
if (taxTable.taxBase != TaxBaseType::PctPerNet &&
taxTable.taxBase != TaxBaseType::PctGrosOnNet) //OHJ 131299
simpleBasis = false;
...
if (taxCollectLimit &&
taxCollectLimit.taxMin != 0 ||
taxCollectLimit.taxMax != 0)
collectLimits = true;
}
....
select count(taxValue) from taxData
where taxData.taxCode == tmpTaxWorkTrans.taxCode &&
((taxData.taxFromDate <= _taxDate &&
taxData.taxToDate >= _taxDate) ||
! taxData.taxFromDate);
if (taxData.taxValue > 1)
multiplePercentage = true;
else
{
select taxData
where taxData.taxCode == tmpTaxWorkTrans.taxCode &&
((taxData.taxFromDate <= _taxDate &&
taxData.taxToDate >= _taxDate) ||
! taxData.taxFromDate);
if (taxData.taxLimitMin || taxData.taxLimitMax)
simpleBasis = false;
}
}
Допустим дерется два налога, например НДС - 18% и НСП - 5%, причем настроенные разным образом. Тогда получатся, что значение флагов simpleBasis ,
multiplePercentage, collectLimits будут определятся настройками последнего налогового кода.
Вопрос! Разве это правильно? Или это такая особенность взимания европейских налогов?
importTax = true; simpleBasis = false; multiplePercentage = true;