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
Просмотров: 251
Размер:	22.0 Кб
ID:	9195  

Последний раз редактировалось Aquarius; 27.02.2015 в 17:49.
Старый 27.02.2015, 18:34   #2  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Сопоставление по клиентам на копейку

перед сопоставлением меняете параметр, потом возвращаете.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.03.2015, 11:28   #3  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Спасибо за ответ. Но мне кажется у нас другая ситуация.
поле "Максимально допустимое расхождение" у нас уже стоит 0.
т.е. в соответствии с этой ссылкой у нас просто должна остаться открытая проводка на 0,01 копейку в валюте проводки ( рублях)
Но у нас выдается ошибка:"Обновление операции ED-AA01577 отменено во избежание избыточного сопоставления. Сопоставляемое сальдо поставщика или клиента не должно превышать суммы проводки при данной проводке."
Мы по возможности хотели бы избежать проводки по списанию копейки на системный счет.
Я заметила, что в другом случае, если есть полностью открытые проводки -5,01 и 5,02 в рублях ( валюта компании доллар, курс проводок одинаковый), то они успешно сопоставляются между собой полностью:
не остается открытой суммы 0,01 рубля
нет никаких доп проводок по списанию 0,01 рубля на системный счет.

Старый 02.03.2015, 18:51   #4  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Добрый день,
подскажите ,пожалуйста, как еще можно исправить мою ситуацию?

Я попробовала выставить поле "Максимально допустимое расхождение" 0,01 в параметрах модуля Расчеты с клиентами,как посоветовали.
восстановила условие if (custVendTransCredit.AmountMST
==
custVendTransCredit.SettleAmountMST + custVendTransCredit.ExchAdjustmentRealized + roundedSettleAmountMst) //

в классе CustVendSettle в методе calcSettleAmountCurForCredit
Для случая, описанного в сообщении 1 ничего не изменилось,
все также выдается сообщение об ошибке
"Обновление операции ED-AA01577 отменено во избежание избыточного сопоставления. Сопоставляемое сальдо поставщика или клиента не должно превышать суммы проводки при данной проводке."
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное Периодическое и Ручное Сопоставление проводок клиента в Акс 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, время: 12:00.