Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

The general ledger balance is calculated incorrectly when you create a bank reconciliation on a foreign currency bank account in the North American version of Microsoft Dynamics NAV 2009


View products that this article applies to.

This article applies to Microsoft Dynamics NAV for the following countries and language locales.
  • English (Canada) (en-ca)
  • English (United States) (en-us)
  • Spanish (Mexico) (es-mx)
  • French (Canada) (fr-ca)

↑ Back to the top


Symptoms

Assume that you post a cash receipt journal that uses a foreign currency bank account in the North American version of Microsoft Dynamics 2009. You create an adjustment for the cash receipt journal by running the Currency Adjust Exchange Rates… function. In this situation, when you create a bank reconciliation on the foreign currency bank account, the general ledger balance in the suggested line is calculated incorrectly. The bank reconciliation calculation does not include the realized gain or the realized loss of the bank account.
This problem occurs in the following products:
  • The North American version of Microsoft Dynamics NAV 2009 R2
  • The North American version of Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

↑ Back to the top


Resolution

Important The hotfix (2548309) has been reverted to the original code and should be removed from any databases where this change was applied. If you have made code changes that are described in the "Code changes" section, you can change the code back so that your code matches back to the "Existing code" section. If the code is not reverted, you can have a difference on the General tab of the bank reconciliation and then you cannot make a post.
The problem with a General Ledger (G/L) imbalance on the North American Database Bank Reconciliation in the original re-create scenario for this article was revisited and examined. Through further analysis, Product Management and Development determined that the issue that was reported with the imbalance is not the result of incorrect standard code for the Bank Reconciliation calculation but a data issue that is caused by the initial setup of the bank account. The incorrect initial setup of the bank account consisted of breaking the link between the bank account ledger entry and the G/L account ledger entry. The incorrect foreign currency bank account setup steps may include something that resembles the following steps:
  1. Post a G/L journal to the bank account's G/L account for initial balance, for example G/L Account 11650.

    Note This transaction would typically be included as part of initial G/L trial balance setup.
  2. Post a cash receipt journal entry to the bank account, in which the bank account posting group has a temporary G/L account, for example 11000, assigned, and any open un-reconciled transactions, such as open checks and cash receipts, to the bank account. The balancing account is also set to the same account, for example 11000, to generate a wash entry.
  3. The bank account posting group account is then changed from the temporary G/L account to G/L account 11650. Therefore, the original entry that was posted to establish the detailed bank account setup in step 2 was to a different G/L account. Therefore, the link to the G/L entries is no longer established.
An additional incorrect setup for a foreign currency bank account would resemble the following:
  1. Post a G/L journal to the bank account's G/L account for initial balance, for example G/L Account 11650.
  2. Then post a General Journal to the Bank Account, with the balancing account set to the same G/L Account as specified within the Bank Account Posting Group, as in this case G/L Account 11650.
Again, there is no link between the G/L entry posted in Step 1 and the Bank Account Ledger Entry posted in step 2.

These steps are the incorrect way to process the start of a new foreign bank account. If you run this incorrect process, you may encounter the problem that is described in this article (2548309). This hotfix (2548309) was added to correct a specific scenario that was caused by the setup that resembles the previous scenario. However, different posting scenarios resulted in issues with continued imbalances if you set up a bank account but then do not keep the G/L account in the bank posting group, or if there is no direct link between the Bank Account entries and the G/L entries.

RECOMMENDATION: The recommended process for setting up a foreign currency bank would be similar to the following (assuming a local currency amount for the GL is $10,000).

Note – the following is based on a 1:1 currency exchange rate. G/L Amounts are updated in local currency. Therefore, manual calculations are needed for the bank Account so the GL is updated with the correct local currency amount.
  1. When posting beginning trial balances to the GL, post the Bank’s GL Balance to a temporary G/L Account, such as G/L Account 11000, for $10,000.
  2. Post a General Journal to the Bank Account, which has the Bank Account Posting Group set to the desired G/L Account, in this case G/L Account 11650. Here you would set the Balancing Account to G/L Account 11000, which is the initial temporary cash account that was originally posted as part of the setup of the beginning trial balance.

    -Posting this $10,000 entry will update both the foreign bank account and G/L Account 11650 for $10,000. It will also reduce that temporary G/L Account 11000 to $0 because of the offsetting balancing account from the transaction. By posting in this manner, there is a direct link between the bank ledger entry and the G/L account ledger entry. It is the correct way to process and handle the setup of a foreign bank account.

Hotfix information

A supported hotfix is now available from Microsoft. However, it is only intended to correct the problem that is described in this article. Apply it only to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Dynamics NAV service pack or the next Microsoft Dynamics NAV version that contains this hotfix.

Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Technical Support Professional for Microsoft Dynamics and related products determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

↑ Back to the top




Installation information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Note Before you install this hotfix, verify that all Microsoft Navision client users are logged off the system. This includes Microsoft Navision Application Services (NAS) client users. You should be the only client user who is logged on when you implement this hotfix.

To implement this hotfix, you must have a developer license.

We recommend that the user account in the Windows Logins window or in the Database Logins window be assigned the "SUPER" role ID. If the user account cannot be assigned the "SUPER" role ID, you must verify that the user account has the following permissions:
  • The Modify permission for the object that you will be changing.
  • The Execute permission for the System Object ID 5210 object and for the System Object ID 9015 object.


Note You do not have to have rights to the data stores unless you have to perform data repair.

Code changes

Note Always test code fixes in a controlled environment before you apply the fixes to your production computers.
To resolve this problem, change the code in the CalculateBalance function in the Bank Rec. Header table (10120) as follows:
Existing code
...
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;
...
Replacement code
...
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;
...

Prerequisites

You must have one of the following products installed to apply this hotfix:
  • The North American version of Microsoft Dynamics NAV 2009 R2
  • The North American version of Microsoft Dynamics NAV 2009 Service Pack 1

Removal information

You cannot remove this hotfix.

↑ Back to the top


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top


Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

↑ Back to the top


Keywords: kbqfe, kbmbsquickpub, kbmbspartner, kbmbsmigrate, kbsurveynew, kbnoloc, kbmbscodefix, kb

↑ Back to the top

Article Info
Article ID : 2548309
Revision : 3
Created on : 1/31/2017
Published on : 1/31/2017
Exists online : False
Views : 217