Ця стаття стосується Microsoft Dynamics NAV для всіх країн і всіх мов.
Ознаки
Припустімо, що ви клацніть, щоб встановити прапорець попередження про допуску до оплати в діалоговому вікні Загальний ledger інсталяції в Microsoft Dynamics NAV. Коли ви публікуєте клієнт оплати журналу або постачальника оплати журналу, який має допуск до оплати знижка і допуск платежів, дебетовий обліковий запис А комп'ютера або кредитний рахунок до оплати допуску і оплати знижки використовується неправильно в загальних книга записи. У деяких випадках сума допуску оплати реєструється для дебетовий рахунок, незважаючи на те, що кредитний рахунок має використовуватися в записах головна книга.
Ця проблема виникає в таких продуктах:
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 5.0
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, радимо дочекатися наступного пакета оновлень Microsoft Dynamics NAV або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.
Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть допомогти пояснити функціональність певної процедури, але вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.
Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.
Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:
- Дозвіл на змінення об'єкта, який буде змінюватися.
- Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:
Змініть код у функції PostDtldVendLedgEntries у функції Gen. Jnl.-Post Line codeunit (12) наступним див.
Наявний код 1… DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance": BEGIN IF GLSetup."Pmt. Disc. Tolerance Posting" = GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts" THEN BEGIN IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc."; END; END ELSE IF GLSetup."Pmt. Disc. Tolerance Posting" = GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts" THEN BEGIN IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc."; …Код заміни 1
… DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance": BEGIN IF GLSetup."Pmt. Disc. Tolerance Posting" = GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts" THEN BEGIN IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc."; END; END ELSE IF GLSetup."Pmt. Disc. Tolerance Posting" = GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts" THEN BEGIN IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc."; …Наявний код 2
… DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance": BEGIN IF GLSetup."Payment Tolerance Posting" = GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts" THEN BEGIN IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc."; END; END ELSE IF GLSetup."Payment Tolerance Posting" = GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts" THEN BEGIN IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc."; …Код заміни 2
… DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance": BEGIN IF GLSetup."Payment Tolerance Posting" = GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts" THEN BEGIN IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc."; END; END ELSE IF GLSetup."Payment Tolerance Posting" = GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts" THEN BEGIN IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc."; …Змініть код у функції AutoEntrForDtldVendLedgEntries у функції Gen. Jnl.-Post Line codeunit (12) наступним див.
Наявний код 1… DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance": BEGIN CASE GLSetup."Pmt. Disc. Tolerance Posting" OF GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts": BEGIN IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); AccNo := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); AccNo := VendPostingGr."Payment Tolerance Credit Acc."; END; END; GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts": BEGIN IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); AccNo := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); AccNo := VendPostingGr."Payment Disc. Credit Acc."; …Код заміни 1
… DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance": BEGIN CASE GLSetup."Pmt. Disc. Tolerance Posting" OF GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts": BEGIN IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); AccNo := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); AccNo := VendPostingGr."Payment Tolerance Credit Acc."; END; END; GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts": BEGIN IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); AccNo := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); AccNo := VendPostingGr."Payment Disc. Credit Acc."; …Наявний код 2
… DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance": BEGIN CASE GLSetup."Payment Tolerance Posting" OF GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts": BEGIN IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); AccNo := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); AccNo := VendPostingGr."Payment Tolerance Credit Acc."; END; END; GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts": BEGIN IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); AccNo := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); AccNo := VendPostingGr."Payment Disc. Credit Acc."; …Код заміни 2
… DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance": BEGIN CASE GLSetup."Payment Tolerance Posting" OF GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts": BEGIN IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc."); AccNo := VendPostingGr."Payment Tolerance Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc."); AccNo := VendPostingGr."Payment Tolerance Credit Acc."; END; END; GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts": BEGIN IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN VendPostingGr.TESTFIELD("Payment Disc. Debit Acc."); AccNo := VendPostingGr."Payment Disc. Debit Acc."; END ELSE BEGIN VendPostingGr.TESTFIELD("Payment Disc. Credit Acc."); AccNo := VendPostingGr."Payment Disc. Credit Acc."; …
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати один із таких продуктів:
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 5.0
Відомості про видалення
Не можна видалити це виправлення.
Щоб отримати додаткові відомості, клацніть номер статті в базі знань база знань Microsoft:
981697 неправильний обліковий запис А комп'ютера Г/Л використовується під час публікації оплати, щоб застосувати рахунок-фактуру, де "Повний ПДВ" було використано, якщо параметр "Змінити для оплати знижка" увімкнуто у формі "Загальний ledger інсталяції" в Microsoft Dynamics NAV 2009
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .