Показать сообщение отдельно
Старый 05.09.2012, 15:53   #1  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Корректировки при закрытии склада
Здравствуйте! В классе InventCostItemDim методе updateReceiptAdjustmentTrans() есть интересное место, а именно:

X++:
...
 if (_receipt.Qty != 0 && _receipt.QtySettled > 0)
    {
        costAmount = Currency::amount((_receipt.costValue() - _adjustmentLater) / _receipt.Qty * _receipt.QtySettled);
        adjustment = costAmount - _receipt.CostAmountSettled;
        if (adjustment &&
            (abs(adjustment) < inventClosing.MinTransferValue ||
             (_receipt.CostAmountAdjustment - _adjustmentLater == 0 &&
              Currency::amount(_receipt.CostAmountSettled / _receipt.QtySettled) == Currency::amount(costAmount / _receipt.QtySettled)))) // вот это условие
        {
            if (! this.financialOpenQty(_receipt))  // Fix HQ-307-902-qc72 Error adjustment must only be done when the transaction is completely settled
                this.createErrorAdjustment(_receipt,-adjustment);

                adjustment  = 0;
        }

        allocateValue   = adjustment;...
Может поясните, зачем сравнивать стоимости единиц, если можно сравнить сразу суммы, а именно:
X++:
Currency::amount(costAmount - _receipt.costAmountSettled) == 0
и можно ли так делать.

Версия DAX 2009. Возникла ситуация, когда суммы отличны в тысячных долях, а стоимости единиц одинаковы, так как были округлены до тысячных. Может что-то не до конца понимаю и не там ищу проблему? Спасибо.