Ця стаття стосується Microsoft Dynamics NAV для всіх країн і всіх мов.
Ознаки
Коли ви опублікуйте рахунок-фактуру для замовлення на продаж після того, як опублікувати оплати рахунку замовлення в Microsoft Dynamics NAV 2009 з пакетом оновлень 1 (SP1), з'являється таке повідомлення про помилку:
Примітка.
Prepmt Amt to deduct cannot be more than NN.NN in sales document.
У цьому повідомленні про помилку NN.NN – це покажчик місця заповнення, який представляє фактичну суму.
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо зачекати на наступний пакет оновлень Microsoft Dynamics NAV або наступної версії, яка містить це виправлення.
Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть допомогти пояснити функціональність певної процедури, але вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.
Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.
Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:
- Дозвіл на змінення об'єкта, який буде змінюватися.
- Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб інсталювати це виправлення, змініть код у продажу рядок таблиці (37) і придбання рядок таблиці (39) наступним чином:
Додайте локальну змінну у функції CalcPrepaymentToDeduct у таблиці Sales Line (37), як показано нижче.
- Ім'я: Валовий обсяг
- Тип даних: десяткове число
Змініть код у функції CalcPrepaymentToDeduct у таблиці "Рядок продажів" (37), як показано нижче.
Наявний код//Code.Remove.begin IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetSalesHeader; IF SalesHeader."Prices Including VAT" THEN "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") * (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") ELSE "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * "Prepayment %" / 100 ,Currency."Amount Rounding Precision") END ELSE "Prepmt Amt to Deduct" := 0 //Code.Remove.endКод заміни
//Code.Add.begin IF ((Quantity - "Quantity Invoiced") <> 0) AND ("Prepmt. Amt. Inv." <> 0) THEN BEGIN GetSalesHeader; GrossAmount := ROUND("Unit Price" * Quantity,Currency."Amount Rounding Precision"); "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( (GrossAmount - ROUND(GrossAmount * "Line Discount %" / 100,Currency."Amount Rounding Precision")) * "Prepayment %" / 100 ,Currency."Amount Rounding Precision") - "Prepmt Amt Deducted") * "Qty. to Invoice" / (Quantity - "Quantity Invoiced"),Currency."Amount Rounding Precision"); END ELSE "Prepmt Amt to Deduct" := 0 //Code.Add.endДодайте локальну змінну у функції CalcPrepaymentToDeduct у таблиці "Придбання рядка" (39), як показано нижче.
- Ім'я: Валовий обсяг
- Тип даних: десяткове число
Змініть код у функції CalcPrepaymentToDeduct у таблиці "Придбання рядка" (39), як показано нижче.
Наявний код//Code.Remove.begin IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetPurchHeader; IF PurchHeader."Prices Including VAT" THEN "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") * (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") ELSE "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * "Prepayment %" / 100,Currency."Amount Rounding Precision") END ELSE "Prepmt Amt to Deduct" := 0 //Code.Remove.endКод заміни
//Code.Add.begin IF ((Quantity - "Quantity Invoiced") <> 0) AND ("Prepmt. Amt. Incl. VAT" <> 0) THEN BEGIN GetPurchHeader; GrossAmount := ROUND("Direct Unit Cost" * Quantity,Currency."Amount Rounding Precision"); "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( (GrossAmount - ROUND(GrossAmount * "Line Discount %" / 100,Currency."Amount Rounding Precision")) * "Prepayment %" / 100 ,Currency."Amount Rounding Precision") - "Prepmt Amt Deducted") * "Qty. to Invoice" / (Quantity - "Quantity Invoiced"),Currency."Amount Rounding Precision"); END ELSE "Prepmt Amt to Deduct" := 0 //Code.Add.end
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати Microsoft Dynamics NAV 2009 SP1.
Відомості про видалення
Не можна видалити це виправлення.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .