This article applies to Microsoft Dynamics NAV for the Hungarian (hu) language locale.

Symptoms

Assume that you create a sales order that contains a prepayment and do not set the dimension code in the Hungarian version of Microsoft Dynamics NAV 2009 R2. If you post the sales order, the system requires you to set a dimension code for the sales order. After you set the dimension code and post the sales order again, the system creates the General Ledger (G/L) entry that contains a ledger entry dimension. However, the system does not populate the field for this ledger entry dimension as expected.

Resolution

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 2009 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.


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. However, 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, follow these steps:

  1. Change the code in the Journal Line Dimension table (356). To do this, follow these steps:

    1. Add the GetDimValueCode function, and then specify the first parameter as follows:

      • Name: DimCode

      • Datatype: Code

      • Length: 20

    2. Add a second parameter, and then specify the parameter as follows:

      • Name: DimValueCode

      • Datatype: Code

      • Length: 20

    3. In the new created GetDimValueCode (DimCode: Code[20] DimValueCode: Code[20]) function, add the following code: 

      SETRANGE("Dimension Code",DimCode);
      IF FINDFIRST THEN
      DimValueCode := "Dimension Value Code";
      SETRANGE("Dimension Code");
  2. Change the code in the Sales-Post Advances codeunit (26585). To do this, follow these steps:

    1. Change the code in the PostPaymentCorrection function as follows:

      Existing code 1

      ...
      SourceCodeSetup@1470003 : Record 242;
      CustLedgEntry@1470007 : Record 21;
      PrepaidAmount@1470000 : Decimal;
      PrepaidAmountLCY@1470005 : Decimal;
      InvoiceAmount@1470009 : Decimal;
      BEGIN
      IF LinkedAdvanceEntry.ISEMPTY THEN
      EXIT;

      CustLedgEntry.SETRANGE("Customer No.",SalesInvHeader."Bill-to Customer No.");
      ...

      Replacement code 1

      ...
      SourceCodeSetup@1470003 : Record 242;
      CustLedgEntry@1470007 : Record 21;
      PrepaidAmount@1470000 : Decimal;
      PrepaidAmountLCY@1470005 : Decimal;
      InvoiceAmount@1470009 : Decimal;

      //Add the following line.
      PostedDocDim@1470015 : Record 359;

      BEGIN
      IF LinkedAdvanceEntry.ISEMPTY THEN
      EXIT;

      CustLedgEntry.SETRANGE("Customer No.",SalesInvHeader."Bill-to Customer No.");
      ...

      Existing code 2

      ...
      PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)";
      GenJnlLine."Applies-to Doc. Type" := LinkedAdvanceEntry."Document Type";
      GenJnlLine."Applies-to Doc. No." := LinkedAdvanceEntry."Document No.";

      TempJnlLineDim.DELETEALL;

      //Delete the following lines.
      LedgEntryDim.SETRANGE("Table ID",DATABASE::"Cust. Ledger Entry");
      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
      DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
      //End of the deleted lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
      UNTIL LinkedAdvanceEntry.NEXT = 0;

      // Post Payment
      GenJnlLine.INIT;
      ...

      Replacement code 2

      ...
      PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)";
      GenJnlLine."Applies-to Doc. Type" := LinkedAdvanceEntry."Document Type";
      GenJnlLine."Applies-to Doc. No." := LinkedAdvanceEntry."Document No.";

      TempJnlLineDim.DELETEALL;

      //Add the following lines.
      PostedDocDim.SETRANGE("Table ID",DATABASE::"Sales Invoice Header");
      PostedDocDim.SETRANGE("Document No.",SalesInvHeader."No.");
      MoveDocDimtoJnlLineDim(PostedDocDim,TempJnlLineDim,DATABASE::"Cust. Ledger Entry");
      GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 1 Code");
      GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 2 Code");
      //End of the added lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
      UNTIL LinkedAdvanceEntry.NEXT = 0;

      // Post Payment
      GenJnlLine.INIT;
      ...

      Existing code 3

      ...
      GenJnlLine.VALIDATE("Currency Code",SalesInvHeader."Currency Code");
      GenJnlLine.VALIDATE(Amount,-PrepaidAmount);
      GenJnlLine.VALIDATE("Amount (LCY)",-PrepaidAmountLCY);
      GenJnlLine."Applies-to Doc. Type" := GenJnlLine."Applies-to Doc. Type"::Invoice;
      GenJnlLine."Applies-to Doc. No." := SalesInvHeader."No.";
      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2);
      END;

      PROCEDURE PostVATReverse@1470029(VAR Rec@1470000 : Record 26585) : Boolean;
      VAR
      ...

      Replacement code 3

      ...
      GenJnlLine.VALIDATE("Currency Code",SalesInvHeader."Currency Code");
      GenJnlLine.VALIDATE(Amount,-PrepaidAmount);
      GenJnlLine.VALIDATE("Amount (LCY)",-PrepaidAmountLCY);
      GenJnlLine."Applies-to Doc. Type" := GenJnlLine."Applies-to Doc. Type"::Invoice;
      GenJnlLine."Applies-to Doc. No." := SalesInvHeader."No.";

      // Add the following lines.
      GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 1 Code");
      GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 2 Code");
      // End of the added lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2);
      END;

      PROCEDURE PostVATReverse@1470029(VAR Rec@1470000 : Record 26585) : Boolean;
      VAR
      ...
    2. Add the MoveDocDimtoJnlLineDim function, and then specify the first parameter as follows:

      • Var: Yes

      • Name: FromPostedDocDim

      • Datatype: Record

      • Subtype: Posted Document Dimension


    3. Add a second parameter, and then specify the parameter as follows:

      • Var: Yes

      • Name: ToJnLineDim

      • Datatype: Record

      • Subtype: Journal Line Dimension

    4. Add a third parameter, and then specify the parameter as follows:

      • Var: No

      • Name: TableId

      • Dataype: Integer

    5. In the new created MoveDocDimtoJnlLineDim (VAR FromPostedDocDim : Record "Posted Document Dimension";VAR ToJnlLineDim : Record "Journal Line Dimension") function, add the following code:

      WITH FromPostedDocDim DO
      IF FINDSET THEN
      REPEAT
      ToJnlLineDim.INIT;
      ToJnlLineDim."Table ID" := TableId;
      ToJnlLineDim."Dimension Code" := "Dimension Code";
      ToJnlLineDim."Dimension Value Code" := "Dimension Value Code";
      ToJnlLineDim.INSERT;
      UNTIL NEXT = 0;
  3. Change the code in the Purchase-Post Advances codeunit (26586). To do this, follow these steps:

    1. Change the code in the PostPaymentCorrection function as follows:

      Existing code 1

      ...
      SourceCodeSetup@1470003 : Record 242;
      VendLedgEntry@1470007 : Record 25;
      PrepaidAmount@1470000 : Decimal;
      PrepaidAmountLCY@1470005 : Decimal;
      InvoiceAmount@1470009 : Decimal;
      BEGIN
      IF LinkedAdvanceEntry.ISEMPTY THEN
      EXIT;

      VendLedgEntry.SETRANGE("Vendor No.",PurchInvHeader."Pay-to Vendor No.");
      ...

      Replacement Code 1

      ...
      SourceCodeSetup@1470003 : Record 242;
      VendLedgEntry@1470007 : Record 25;
      PrepaidAmount@1470000 : Decimal;
      PrepaidAmountLCY@1470005 : Decimal;
      InvoiceAmount@1470009 : Decimal;

      //Add the following line.
      PostedDocDim@1470015 : Record 359;

      BEGIN
      IF LinkedAdvanceEntry.ISEMPTY THEN
      EXIT;

      VendLedgEntry.SETRANGE("Vendor No.",PurchInvHeader."Pay-to Vendor No.");
      ...

      Exisitng Code 2

      ...
      PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)";
      GenJnlLine."Applies-to Doc. Type" := LinkedAdvanceEntry."Document Type";
      GenJnlLine."Applies-to Doc. No." := LinkedAdvanceEntry."Document No.";

      TempJnlLineDim.DELETEALL;

      //Delete the following lines.
      LedgEntryDim.SETRANGE("Table ID",DATABASE::"Vendor Ledger Entry");
      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
      DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
      //End of the deleted lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
      UNTIL LinkedAdvanceEntry.NEXT = 0;

      // Post Payment
      GenJnlLine.INIT;
      ...

      Replacement Code 2

      ...
      PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)";
      GenJnlLine."Applies-to Doc. Type" := LinkedAdvanceEntry."Document Type";
      GenJnlLine."Applies-to Doc. No." := LinkedAdvanceEntry."Document No.";

      TempJnlLineDim.DELETEALL;

      //Add the following lines.
      PostedDocDim.SETRANGE("Table ID",DATABASE::"Purch. Inv. Header");
      PostedDocDim.SETRANGE("Document No.",PurchInvHeader."No.");
      MoveDocDimtoJnlLineDim(PostedDocDim,TempJnlLineDim,DATABASE::"Vendor Ledger Entry");
      GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 1 Code");
      GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 2 Code");
      //End of the deleted lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
      UNTIL LinkedAdvanceEntry.NEXT = 0;

      // Post Payment
      GenJnlLine.INIT;
      ...

      Existing Code 3

      ...
      GenJnlLine.VALIDATE("Currency Code",PurchInvHeader."Currency Code");
      GenJnlLine.VALIDATE(Amount,-PrepaidAmount);
      GenJnlLine.VALIDATE("Amount (LCY)",-PrepaidAmountLCY);
      GenJnlLine."Applies-to Doc. Type" := GenJnlLine."Applies-to Doc. Type"::Invoice;
      GenJnlLine."Applies-to Doc. No." := PurchInvHeader."No.";
      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2);
      END;

      PROCEDURE PostVATReverse@1470029(VAR Rec@1470000 : Record 26587) : Boolean;
      VAR
      ...

      Replacement Code 3

      ...
      GenJnlLine.VALIDATE("Currency Code",PurchInvHeader."Currency Code");
      GenJnlLine.VALIDATE(Amount,-PrepaidAmount);
      GenJnlLine.VALIDATE("Amount (LCY)",-PrepaidAmountLCY);
      GenJnlLine."Applies-to Doc. Type" := GenJnlLine."Applies-to Doc. Type"::Invoice;
      GenJnlLine."Applies-to Doc. No." := PurchInvHeader."No.";

      // Add the following lines.
      GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 1 Code");
      GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 2 Code");
      // End of the added lines.

      GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2);
      END;

      PROCEDURE PostVATReverse@1470029(VAR Rec@1470000 : Record 26587) : Boolean;
      VAR
      ...
    2. Add the MoveDocDimtoJnlLineDim function, and then specify the first parameter as follows:

      • Var: Yes

      • Name: FromPostedDocDim

      • Datatype: Record

      • Subtype: Posted Document Dimension

    3. Add a second parameter, and then specify the parameter as follows:

      • Var: Yes

      • Name: ToJnLineDim

      • Datatype: Record

      • Subtype: Journal Line Dimension

    4. Add a third parameter, and then specify the parameter as follows:

      • Var: No

      • Name: TableId

      • Datatype: Integer

    5. In the new created MoveDocDimtoJnlLineDim (VAR FromPostedDocDim : Record "Posted Document Dimension";VAR ToJnlLineDim : Record "Journal Line Dimension") function, add the following code:

      WITH FromPostedDocDim DO
      IF FINDSET THEN
      REPEAT
      ToJnlLineDim.INIT;
      ToJnlLineDim."Table ID" := TableId;
      ToJnlLineDim."Dimension Code" := "Dimension Code";
      ToJnlLineDim."Dimension Value Code" := "Dimension Value Code";
      ToJnlLineDim.INSERT;
      UNTIL NEXT = 0;

Prerequisites

You must have the Hungarian version of Microsoft Dynamics NAV 2009 R2 installed to apply this hotfix.

Removal information

You cannot remove this hotfix.

Status

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

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.

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

What affected your experience?

Any additional feedback? (Optional)

Thank you for your feedback!

×