Показать сообщение отдельно
Старый 15.03.2004, 14:24   #1  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Расчет суммы по строке заказа (закупки) без налогов
Эта сумма вычисляется в классе 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;