14.10.2009, 17:07 | #1 |
Участник
|
Ошибка округления при сопоставлении операций в разных валютах
Всем привет.
DAX 4.0 ЕЕ SP 2. Такая ситуация: Банк = Поставщик, основная валюта гривня. Операции проводятся на одну и ту же дату. Курсы валют на дату: Доллары: 798,5000 Рубли: 24,9740 1. Создаем 2 операции: Поставщик - Расчетный счет, операция в рублях Сумма: 148506 (37087,89 грн) Расчетный счет - Поставщик, операция в долларах Сумма: 4670 (37289,95 грн) 2. Сопоставляем операции, получается остаток в долларах Сумма: 25,30 (202,06 грн) 3. Относим сумму остатка (в грн по курсу системы) на доход: Создаем операцию в грн. Поставщик - счет ГК (Доход) Сумма: 202,06 грн 4. Сопоставляем сумму остатка в долларах с операцией по отнесению на доход в грн. 25,30 долларов с 202,06 гривнами В результате система рассчитывает курсовую разницу (доход) 0.04 грн, что на самом деле является ошибкой округления, при расчёте суммы сопоставления. X++: if (custVendTransCredit.CurrencyCode != custVendTransDebet.CurrencyCode && ! isConfigurationkeyEnabled(configurationkeynum(CRSECIS))) { if (invoiceExchRate) settleAmountMSTCredit = Currency::amount(-settleAmountCur * invoiceExchRate); else settleAmountMSTCredit = -settleAmountMSTDebet; } else { // Выполняется этот код settleAmountMSTCredit = Currency::amount(-(settleAmountCur / paym2Invoice) / custVendTransCredit.AmountCur * custVendTransCredit.AmountMST); } Подскажите, пожалуйста, каким образом можно избежать таких ситуаций? И какие есть варианты решения, данной ситуации (кроме сторнирования через операцию в Общем журнале)? |
|