13.05.2009, 09:36 | #1 |
Участник
|
Сопоставление, авансовая и курсовая разницы в DAX 4.0
DAX 4.0 SP2 FP1 EE + проект PS_37376_39274.
Этот проект - дополнения по отмене суммовой разницы и добавлению авансовых разниц. В процедуре сопоставлений появился следующий алгоритм: Если (не передан первый параметр или в этом параметре поле "Накладная" заполнено) и в одной из проводок сопоставления отмечена галка "Предоплата", то работаем с авансовой разницей, иначе - с курсовой (см. CustVendExchAdjustment_W::isAdvanceAdjustment). При сопоставлении первый параметр передается, при рассопоставлении - нет. Получаем следующую проблему: 1. При сопоставлении поле "накладная" не заполнено, получаем курсовую разницу. 2. При рассопоставлении по факту анализируем только галку "Предоплата", получаем тип разницы - авансовая и пытаемся отсторнировать только ее. 3. В итоге в таблице "Журнал разноски по клиентам и поставщикам" (не безызвестная CustVendTransPostingLog_RU, см., например, Баг на форме "Проводки по сопоставлению") остается строка по курсовой разнице, хотя проводки рассопоставлены. 4. При попытке сопоставить проводку заново - выдается ошибка, причина которой - наличие строки из п.3. Мне кажется, что это - баг. Прошу совета - как лучше поправить? Предложение всегда заполнять поле "Накладная" будет рассматриваться в самую последнюю очередь.
__________________
Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 13.05.2009 в 09:43. Причина: опечатки |
|
13.05.2009, 13:06 | #2 |
Участник
|
Поясню, указанный проект выложен вот здесь: https://mbs.microsoft.com/partnersou...rintpage=false (партнерсорс, нужен доступ).
__________________
Ivanhoe as is.. |
|
15.05.2009, 10:59 | #3 |
Участник
|
UP!
Никто что ли не ведет в 4.0 учет по РСБУ??
__________________
Ivanhoe as is.. |
|
26.05.2009, 17:29 | #4 |
Участник
|
up, что же делать?
__________________
Ivanhoe as is.. |
|
26.05.2009, 19:42 | #5 |
Microsoft Dynamics
|
Если хотите, чтобы Вам помогли, опишите пожалуйста входные условия в терминах операций (напр. операции какого типа сопоставляются, даты и пр.), а не фрагментов кода, которые Вы возможно истолковали неверно.
Авансовая разница возникает при сопоставлении накладных с предоплатами и является по сути "продолжением" накладной.
__________________
You should use Bing before asking dumb questions. |
|
26.05.2009, 20:25 | #6 |
Участник
|
Делаю фильтр по первому посту =)
0.Настраиваем авансовые разницы, как описано в руководстве по хот-фиксу. 1. Сопоставляем начисление (поле накладная не заполнено) и предоплату (галка "Предоплата" стоит). 2. Формируется курсовая разница (можем посмотреть ее по кнопке "Проводки по сопоставлению" в форме "Операции" по поставщику). 3. Рассопоставляем операции, в проводках по сопоставлению ОСТАЛАСЬ строка с курсовой разницей. 4. При попытке сопоставить исходные операции заново - ошибка про книги покупок (на самом деле ругается на ОСТАВШУЮСЯ строку).
__________________
Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 26.05.2009 в 20:31. |
|
|
За это сообщение автора поблагодарили: sukhanchik (3). |
26.05.2009, 20:28 | #7 |
Участник
|
Цитата:
Мне кажется что это ошибка, и про это просто не подумали.
__________________
Ivanhoe as is.. |
|
27.05.2009, 01:00 | #8 |
Microsoft Dynamics
|
Ну, во-первых, проводки из таблицы "Проводки по сопоставлению" (CustVendTransPostingLog_RU) не всегда удаляются при реверсе, - например при рассопоставлении на другую дату они не удаляются, а помечаются признаком "Отменено". Во-вторых, не совсем понятно, что Вы подразумеваете под термином "начисление", - какая это конкретно операция и каким образом формируется?
И наконец, почему Вы решили что при рассопоставлении ищется именно авансовая разница? Отмена сопоставления по постинг логу выполняется в методе CustVendReversePostingLog_RU.doReverse(), условие выглядит следующим образом: X++: if ((transPostingLog.AccountNum || transPostingLog.AccountNumOffset || transPostingLog.TaxRefId || (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::AdvanceAdjustment && moduleCustVend == ModuleCustVend::Vend)) && (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::VATTransit ? _postVATTransit : true)) {
__________________
You should use Bing before asking dumb questions. |
|
27.05.2009, 10:20 | #9 |
Участник
|
Для начала, благодарю, что проявили активность, остальные молчат
Цитата:
Сообщение от Jabberwocky
Ну, во-первых, проводки из таблицы "Проводки по сопоставлению" (CustVendTransPostingLog_RU) не всегда удаляются при реверсе, - например при рассопоставлении на другую дату они не удаляются, а помечаются признаком "Отменено". Во-вторых, не совсем понятно, что Вы подразумеваете под термином "начисление", - какая это конкретно операция и каким образом формируется?
Начисление - проводка в общем журнале ГК с типом счета "Поставщик"/"Клиент", поле "накладная" НЕ заполнено. Цитата:
Сообщение от Jabberwocky
И наконец, почему Вы решили что при рассопоставлении ищется именно авансовая разница? Отмена сопоставления по постинг логу выполняется в методе CustVendReversePostingLog_RU.doReverse(), условие выглядит следующим образом:
X++: if ((transPostingLog.AccountNum || transPostingLog.AccountNumOffset || transPostingLog.TaxRefId || (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::AdvanceAdjustment && moduleCustVend == ModuleCustVend::Vend)) && (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::VATTransit ? _postVATTransit : true)) { \Classes\CustVendExchAdjustment_W\isAdvanceAdjustment \Classes\CustVendReversePosting\reverseExchAdjustment_RU \Classes\CustVendReversePosting\restoreCustVendTrans \Classes\CustVendReversePosting\updateNow \Data Dictionary\Tables\VendTrans\Methods\reverseTransact \Classes\FormButtonControl\Clicked Обратите внимание на последний метод - в нем все дело. А тот код, который вы привели - он ничего не делает, так как туда передается ПУСТАЯ выборка, потому что система "не знает", что нужно сторнировать КУРСОВУЮ.
__________________
Ivanhoe as is.. |
|
27.05.2009, 21:05 | #10 |
Microsoft Dynamics
|
Ок, привожу полный код метода CustVendExchAdjustment_W.isAdvanceAdjustment():
X++: public static boolean isAdvanceAdjustment(CustVendTrans _firstCustVendTrans, CustVendTrans _custVendTransDebet, CustVendTrans _custVendTransCredit) { boolean isAmountDiff = _custVendTransDebet.CurrencyCode != CompanyInfo::standardCurrency() && _custVendTransDebet.Invoice && _custVendTransCredit.CurrencyCode == CompanyInfo::standardCurrency() && ! _custVendTransCredit.Invoice; if (isAmountDiff && AmountDiffParameters_RU::find().Active) { return false; } if (((! _firstCustVendTrans && (_custVendTransDebet.Invoice || _custVendTransCredit.Invoice)) || _firstCustVendTrans.Invoice) && (_custVendTransDebet.Prepayment || _custVendTransCredit.Prepayment) && LedgerParameters::find().AdvanceAdjustment_W) { return true; } return false; } А насчет doReverse() - Вы не правы, не буду спорить, просто пройдитесь дебаггером.
__________________
You should use Bing before asking dumb questions. |
|
|
За это сообщение автора поблагодарили: Ivanhoe (2). |
28.05.2009, 10:50 | #11 |
Участник
|
Замечательно!
Спасибо за код метода. У меня не так: X++: public static boolean isAdvanceAdjustment(CustVendTrans _firstCustVendTrans, CustVendTrans _custVendTransDebet, CustVendTrans _custVendTransCredit) { boolean isAmountDiff = _custVendTransDebet.CurrencyCode != CompanyInfo::standardCurrency() && _custVendTransDebet.Invoice && _custVendTransCredit.CurrencyCode == CompanyInfo::standardCurrency() && ! _custVendTransCredit.Invoice; if (isAmountDiff && AmountDiffParameters_RU::find().Active) { return false; } // ОТЛИЧИЯ В УСЛОВИЯХ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 if ((! _firstCustVendTrans || _firstCustVendTrans.Invoice) && (_custVendTransDebet.Prepayment || _custVendTransCredit.Prepayment) && LedgerParameters::find().AdvanceAdjustment_W) { return true; } return false; } PS_37376_39274 PS_46620
__________________
Ivanhoe as is.. |
|
28.05.2009, 15:41 | #12 |
Microsoft Dynamics
|
Этот хотфикс еще не вышел
__________________
You should use Bing before asking dumb questions. |
|
28.05.2009, 23:39 | #13 |
Administrator
|
А в этом хотфиксе кроме данного метода еще что-то есть и он выйдет? Или этот хотфикс является "личным" ?
__________________
Возможно сделать все. Вопрос времени |
|
29.05.2009, 11:26 | #14 |
Microsoft Dynamics
|
Выйдет в составе DAX 2009 Eastern Europe. Для решения проблемы автора поста, полагаю, приведенных изменений будет достаточно.
__________________
You should use Bing before asking dumb questions. |
|
Теги |
авансовая разница, курсовая разница, ошибка, сопоставление, ax4.0 |
|
|