Здравствуйте! В классе 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. Возникла ситуация, когда суммы отличны в тысячных долях, а стоимости единиц одинаковы, так как были округлены до тысячных. Может что-то не до конца понимаю и не там ищу проблему? Спасибо.