Загальний книга баланс обчислюється неправильно під вільний час створення банку узгодження в іноземній валюті банківського рахунку в північноамериканської версії Microsoft Dynamics NAV 2009

Застосовується до
Dynamics NAV 2009

Ця стаття стосується Microsoft Dynamics NAV для наведених нижче країн і мовних мов.

  • Англійська (Канада) (en-ca)
  • Англійська (Сполучені Штати) (en-us)
  • іспанська (Мексика) (es-mx)
  • французька (Канада) (fr-ca)

Ознаки

Припустімо, що опублікувати грошових надходжень журналу, який використовує валюти банківського рахунку в північноамериканської версії Microsoft Dynamics 2009. Створення коригування для журналу грошових надходжень за допомогою функції грошових змінних курсів... У цій ситуації під вільний час створення банку узгодження грошової валюти банківського рахунку, загальний книга баланс у запропонований рядок обчислюється неправильно. Розрахунки за узгодженням банківських рахунків не включають реалізований прибуток або реалізовану втрату банківського рахунку.
Ця проблема виникає в таких продуктах:

  • Північноамериканська версія Microsoft Dynamics NAV 2009 R2
  • Північноамериканська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)

Спосіб усунення проблеми

Увага! Виправлення (2548309) відновлено до вихідного коду, і його слід видалити з будь-яких баз даних, до яких застосовано цю зміну. Якщо ви внесли зміни до коду, описані в розділі "Зміни коду", ви можете знову змінити код, щоб код відобразився в розділі "Наявний код". Якщо код не відновлено, ви можете мати різницю на вкладці Загальні банку узгодження, а потім ви не можете зробити пост.
Проблема з дисбалансом генеральної бухгалтерської книги (G/L) на узгодження північноамериканських баз даних банку в початковому сценарії повторного створення для цієї статті була переглянута і розглянута. За допомогою подальшого аналізу, управління продуктами та розробки визначив, що питання, яке було повідомлено з дисбаланс є не результатом неправильного стандартного коду для обчислення узгодження банку, а проблему даних, яка викликана початковим налаштуванням банківського рахунку. Неправильне початкове настроювання банківського рахунку, що полягає в тому, щоб розірвати зв'язок між записом книга облікового запису банківського рахунку та запис книга облікового запису G/L. Неправильні валюти банківського рахунку налаштування кроки може включати в себе те, що приблизно такого вигляду:

  1. Опублікуйте журнал G/L в обліковому записі G/L банківського рахунку для початкового балансу, наприклад G/L Account 11650.

    Примітка. Ця транзакція зазвичай включається в рамках початкового настроювання балансу ознайомлювальної версії G/L.

  2. Опублікуйте запис журналу касових чеків на банківський рахунок, у якому група розміщення банківського рахунку має тимчасовий G/L обліковий запис, наприклад 11000, призначено, і будь-які відкриті не узгоджені транзакції, такі як відкриті чеки та грошові чеки, на банківський рахунок. Для балансуючого облікового запису також встановлюється той самий обліковий запис, наприклад 11000, щоб створити запис для миття.

  3. Після цього банківський рахунок розміщення групового рахунку змінюється з тимчасового G/L рахунку на G/L рахунку 11650. Таким чином, вихідний запис, який був опублікований для встановлення детального банківського рахунку налаштування на кроці 2 було до іншого G/L облікового запису. Таким чином, посилання на записи G/L більше не встановлено.

Додатковий неправильний настроювання для іноземної валюти банківського рахунку матиме приблизно такий вигляд:

  1. Опублікуйте журнал G/L в обліковому записі G/L банківського рахунку для початкового балансу, наприклад G/L Account 11650.
  2. Потім опублікуйте загальний журнал на банківський рахунок, баланс рахунку, встановлений на той же G/L рахунку, як зазначено в банку рахунку розміщення групи, як у цьому випадку G/L рахунку 11650.

Знову ж таки, немає зв'язку між записом G/L, опублікованим на кроці 1, і записом Ledger банківського рахунку, розміщеним на кроці 2.

Ці кроки є неправильним способом обробки початку нового іноземного банківського рахунку. Якщо запустити цей неправильний процес, може виникнути проблема, описана в цій статті (2548309). Це виправлення (2548309) додано, щоб виправити конкретний сценарій, викликаний інсталяції, який нагадує попередній сценарій. Однак різні сценарії публікування призвели до проблем із постійним дисбалансом, якщо ви створили банківський рахунок, але потім не зберігали рахунок G/L у групі банківського розміщення, або якщо немає прямого зв'язку між записами банківського рахунку та записами G/L.

РЕКОМЕНДАЦІЯ. Рекомендований процес створення банку валюти буде схожий на наведений нижче (припускаючи, що місцева грошова сума для GL становить $ 10000).

Примітка – нижче наведено на основі курсу обміну валют 1:1. G/L Суми оновлюються в локальній грошовій одиниці. Таким чином, вручну обчислення, необхідні для банківського рахунку, так що GL оновлюється з правильний локальної грошової суми.

  1. Публікуючи початковий ознайомлювальної версії залишки gl, опублікувати баланс GL банку на тимчасовий G/L рахунку, наприклад, G/L рахунку 11000, для $ 10000.

  2. Опублікуйте загальний журнал на банківський рахунок, який має банківський рахунок розміщення групи, набір потрібний G/L рахунку, у цьому випадку G/L облікового запису 11650. Тут потрібно встановити для балансуючого облікового запису G/L 11000, який є початковим тимчасовим грошовим обліковим записом, який спочатку було опубліковано в рамках налаштування на початку ознайомлювального балансу.

    -Розміщення цього $ 10000 запис оновить як зовнішній банківський рахунок і G /L рахунок 11650 за $ 10000. Це також зменшить, що тимчасовий G/L обліковий запис 11000 до $ 0 через зсув балансу рахунку від транзакції. Публікуючи таким чином, існує прямий зв'язок між записом книга банку і запис книга облікового запису G/L. Це правильний спосіб обробки та обробки налаштування іноземного банківського рахунку.

      

Відомості про виправлення

Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, радимо дочекатися наступного пакета оновлень 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.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, змініть код у функції CalculateBalance у банку Rec. заголовок таблиці (10120) наступним чином:
Наявний код

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Delete the folloiwng line.
                "G/L Balance" += BankAccLedgEntry.Amount;

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

Код заміни

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Add the following lines.
                "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                        "Currency Code",
                                                                        GLEntry.Amount,
                                                                        "Currency Factor"),
                                       Currency."Amount Rounding Precision");
                // End of the lines.

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

          

Попередні вимоги

Щоб застосувати це виправлення, потрібно мати один із таких продуктів:

  • Північноамериканська версія Microsoft Dynamics NAV 2009 R2
  • Північноамериканська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1

Відомості про видалення

Не можна видалити це виправлення.

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .