AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2015, 17:47   #1  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Сопоставление проводок по клиенту. Странная Ошибка
Уважаемые господа, добрый день,
У нас возникла следующая проблема.
Акс 2009. Sp 5.

При ручном (или автоматическом) сопоставлении проводок по клиенту в валюте рубль ( при основной валюте доллар) с разным курсом возникает ошибка:
"Обновление операции ED-AA01577 отменено во избежание избыточного сопоставления. Сопоставляемое сальдо поставщика или клиента не должно превышать суммы проводки при данной проводке."
Проводки по клиенту см приложение
Сначала успешно сопоставляются проводки ED-AA01577 и ED-AA01576 (с разными курсами валют) ,но при сопоставлении оставшейся открытой части проводки ED-AA01577 и ED-AA01578(с разными курсами валют) возникает вышеуказанное сообщение об ошибке
Обнаружили что в в классе CustVendSettle в методе calcSettleAmountCurForCredit
При обработке сопоставления открытых проводок ED-AA01577 и ED-AA01578 не выполняется условие, и именно из-за него возникает ошибка
if (custVendTransCredit.AmountMST //-0.15 для нашего случая
==
custVendTransCredit.SettleAmountMST + custVendTransCredit.ExchAdjustmentRealized + roundedSettleAmountMst) //-0.08+0+-0.08 для нашего случая

Пришли к выводу что для правильной работы нужно в условии" >= " вместо "=="
if (custVendTransCredit.AmountMST
>=
custVendTransCredit.SettleAmountMST + custVendTransCredit.ExchAdjustmentRealized + roundedSettleAmountMst)
Проверили как работает сопоставление на этом и других случаях.Вроде все отрабыватывает корректно.
Правильно ли сделано ли такое исправление? Есть ли случаи, когда важно было чтобы в данном условии был именно знак равенства?

protected AmountCur calcSettleAmountCurForCredit(AmountCur _settleAmountCurDebit)
{
AmountCur settleAmountCur;
AmountCur roundedSettleAmountCur;
AmountCur remainingAmount;
AmountMST settleAmountMst;
AmountMST roundedSettleAmountMst;
CurrencyExchHelper currencyHelper;
;
settleAmountCur = -(_settleAmountCurDebit / paymToInvoiceRate);
currencyHelper = CurrencyExchHelper::newCurrency(custVendTransCredit.company(), custVendTransCredit.CurrencyCode);
roundedSettleAmountCur = currencyHelper.roundAmount(settleAmountCur);
remainingAmount = custVendTransCredit.AmountCur - custVendTransCredit.SettleAmountCur - roundedSettleAmountCur;//remainingAmount =0.01 длянашегослучая
if (remainingAmount != 0)
{
// when not fully settled in transaction currency, check if it will be fully settled in mst
settleAmountMst = this.calcSettleAmountMstForCredit(settleAmountCur, false);
currencyHelper.parmCurrency(creditCompanyCurrency);
roundedSettleAmountMst = currencyHelper.roundAmount(settleAmountMst);
if (custVendTransCredit.AmountMST //-0.15 для нашего случая
==
custVendTransCredit.SettleAmountMST + custVendTransCredit.ExchAdjustmentRealized + roundedSettleAmountMst) //-0.08+0+-0.08 для нашего случая
{
// The remaining amount is converted to mst and then rounded, and if it is then equal to zero,
// adjust the settleAmountCur to be equal to the unsettled amount.
currencyHelper.parmCurrency(custVendTransCredit.CurrencyCode);
currencyHelper.parmExchRate(custVendTransCredit.exchRateCurToMst());
currencyHelper.parmIsTriangulated(UnknownNoYes::No);
remainingAmount = currencyHelper.calculateAmountCurToMst(remainingAmount, true);
if (remainingAmount == 0)
{
settleAmountCur = custVendTransCredit.AmountCur - custVendTransCredit.SettleAmountCur;
}
}
}

return settleAmountCur;
}
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 252
Размер:	22.0 Кб
ID:	9195  

Последний раз редактировалось Aquarius; 27.02.2015 в 17:49.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное Периодическое и Ручное Сопоставление проводок клиента в Акс 2009 Aquarius DAX: Функционал 3 17.05.2012 01:53
сопоставление по клиенту с учетом финансовых аналитик? Aquarius DAX: Функционал 3 20.12.2008 10:05
"Сопоставление фактур с оплатами" и "Сопоставление открытых проводок" chel DAX: Функционал 2 16.09.2004 12:03
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
сопоставление открытых проводок - 'коррекция' в основной валюте фирмы sguryev DAX: База знаний и проекты 0 18.12.2001 15:14

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:13.