Error in KB 981000 NAV 2009 Sp1

Tim_StruebelTim_Struebel Member Posts: 19
Hello,

in the 1st step of the hotfix instructions the ID 1002 will allocate twice.
... 
// Add the following line.         
ServiceContractLine@1002 : Record 5964; 

InvFrom@1001 : Date; 
InvTo@1000 : Date; 
NoOfMonths@1002 : Integer; 
NoOfDays@1003 : Integer; 
...

Which ID is correct for ServiceContractLine?

Thanks und Regards
Tim

Comments

  • Tim_StruebelTim_Struebel Member Posts: 19
    The Application Hotfix exists under:
    https://mbs2.microsoft.com/Knowledgebase/KBDisplay.aspx?scid=kb$EN-US$981000&wa=wsignin1.0

    The Application Hotfix does not exists in the Knowledge Base Partner-Portal:
    https://mbs2.microsoft.com/Knowledgebase/search.aspx?wa=wsignin1.0

    A syntax error is in the first step in the Replacement code 2. But where?
    IF DaysInFullInvPeriod = DaysInThisInvPeriod THEN
      "Amount per Period" :=
        ROUND("Annual Amount" / ReturnNoOfPer("Invoice Period"),Currency."Amount Rounding Precision")
    ELSE
      IF Prepaid THEN BEGIN
        IF (DATE2DMY(InvFrom,2) = DATE2DMY(InvTo,2)) AND
           (DATE2DMY(InvFrom,3) = DATE2DMY(InvTo,3))
        THEN BEGIN
          ServiceContractLine.RESET;								
          ServiceContractLine.SETRANGE("Contract Type","Contract Type");				
          ServiceContractLine.SETRANGE("Contract No.","Contract No.");				
            IF ServiceContractLine.FINDSET THEN							
              REPEAT											
                "Amount per Period" := ServContractMgt.CalcContractAmount(Rec,InvFrom,InvTo,		
                                          ServiceContractLine."Line No.");				
              UNTIL ServiceContractLine.NEXT=0;
        END ELSE BEGIN
          "Amount per Period" := 0;
          ServContractMgt.NoOfMonthsAndDaysInPeriod(InvFrom,InvTo,NoOfMonths,NoOfDays);
          "Amount per Period" :=
            ("Annual Amount" / 12 * NoOfMonths) +
            ("Annual Amount" / ServContractMgt.NoOfDayInYear(InvFrom) * NoOfDays);
        END;
      END ELSE
        "Amount per Period" :=
          ROUND(
            ("Annual Amount" / ServContractMgt.NoOfDayInYear(InvTo)) * DaysInThisInvPeriod,
            Currency."Amount Rounding Precision");
    
  • Tim_StruebelTim_Struebel Member Posts: 19
    Nobody has an answer? Who has implemented the hotfix till now?
  • jannestigjannestig Member Posts: 1,000
    Why not check the Same code in 2009 r2 since it is supposed to include all role up fixes.
  • Tim_StruebelTim_Struebel Member Posts: 19
    R2 does not contain any application hotfixes ](*,). R2 contains only the platform hotfixes.
    The objects of 2009 R2 are identical to 2009 SP1. Who would like to use R2 must implement all application hotfixes afterwards in R2 :thumbsdown: .
  • Sara_Rybøl_[MSFT]Sara_Rybøl_[MSFT] Member, Microsoft Employee Posts: 3
    edited 2011-10-07
    1. The correct ID is: 1004

    I hope this answered the question, and I apologize for the inconvenience it may have caused You.
    This posting is provided "AS IS" with no warranties, and confers no rights
  • mdPartnerNLmdPartnerNL Member Posts: 802
    R2 does not contain any application hotfixes ](*,). R2 contains only the platform hotfixes.
    The objects of 2009 R2 are identical to 2009 SP1. Who would like to use R2 must implement all application hotfixes afterwards in R2 :thumbsdown: .

    Is tere a link to an update hotfix or do you need to import all possible hotfixes. And is there a list of these?
  • Sara_Rybøl_[MSFT]Sara_Rybøl_[MSFT] Member, Microsoft Employee Posts: 3
    Concerning the Syntaks error, this is what the code should look like:
          IF DaysInFullInvPeriod = DaysInThisInvPeriod THEN
            "Amount per Period" :=
              ROUND("Annual Amount" / ReturnNoOfPer("Invoice Period"),Currency."Amount Rounding Precision")
          ELSE
            IF Prepaid THEN BEGIN
              IF (DATE2DMY(InvFrom,2) = DATE2DMY(InvTo,2)) AND
                 (DATE2DMY(InvFrom,3) = DATE2DMY(InvTo,3))
              THEN BEGIN
                ServiceContractLine.RESET;
                ServiceContractLine.SETRANGE("Contract Type","Contract Type");
                ServiceContractLine.SETRANGE("Contract No.","Contract No.");
                IF ServiceContractLine.FINDSET THEN
                  REPEAT
                    "Amount per Period" := ServContractMgt.CalcContractAmount(Rec,InvFrom,InvTo,
                        ServiceContractLine."Line No.");
                  UNTIL ServiceContractLine.NEXT = 0;
              END ELSE BEGIN
                "Amount per Period" := 0;
                ServContractMgt.NoOfMonthsAndDaysInPeriod(InvFrom,InvTo,NoOfMonths,NoOfDays);
                "Amount per Period" :=
                  ("Annual Amount" / 12 * NoOfMonths) +
                  ("Annual Amount" / ServContractMgt.NoOfDayInYear(InvFrom) * NoOfDays);
              END;
            END ELSE
              "Amount per Period" :=
                ROUND(
                  ("Annual Amount" / ServContractMgt.NoOfDayInYear(InvTo)) * DaysInThisInvPeriod,
                  Currency."Amount Rounding Precision");
        END;
    
    
    This posting is provided "AS IS" with no warranties, and confers no rights
Sign In or Register to comment.