De verzendopdracht en de speciale bestelling houden geen rekening met de gedefinieerde informatie over de verkooporder wanneer u het opdrachtwerkblad gebruikt om een inkooporder te maken of wanneer u handmatig een inkooporder maakt in Microsoft Dynamics NAV

Van toepassing op
Dynamics NAV 2009

Dit artikel is van toepassing op Microsoft Dynamics NAV voor alle taalinstellingen.

Symptomen

Wanneer u in Microsoft Dynamics NAV het opdrachtwerkblad gebruikt om een inkooporder te maken of wanneer u handmatig een inkooporder maakt, houden de neerzetverzending en de speciale orders geen rekening met de gedefinieerde informatie over de gerelateerde verkooporder. Daarom volgen de beschrijving, beschrijving 2 en het verzendadres uit de kop en regels van de verkooporder niet de gekoppelde gekochte bestelling.
Dit probleem treedt op in de volgende producten:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2

Oplossing

Hotfix-informatie

Er is nu een ondersteunde hotfix beschikbaar bij Microsoft. Het is echter alleen bedoeld om het probleem op te lossen dat in dit artikel wordt beschreven. Pas deze alleen toe op systemen die dit specifieke probleem ondervinden. Deze hotfix kan aanvullende tests ontvangen. Als u niet ernstig last hebt van dit probleem, raden we u aan te wachten op het volgende Microsoft Dynamics NAV 2009-servicepack of de volgende Microsoft Dynamics NAV-versie die deze hotfix bevat.

Opmerking In speciale gevallen kunnen kosten die gewoonlijk worden gemaakt voor ondersteuningsoproepen worden geannuleerd als een technische ondersteuningsmedewerker voor Microsoft Dynamics en gerelateerde producten vaststelt dat een specifieke update uw probleem oplost. De gebruikelijke ondersteuningskosten zijn van toepassing op aanvullende ondersteuningsvragen en problemen die niet in aanmerking komen voor de specifieke update in kwestie.

            
          

Installatie-informatie

Microsoft biedt programmeervoorbeelden uitsluitend ter illustratie, zonder uitdrukkelijke of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt gedemonstreerd en met de hulpprogramma's die worden gebruikt om procedures te maken en fouten op te sporen. Microsoft-ondersteuningstechnici kunnen helpen bij het uitleggen van de functionaliteit van een bepaalde procedure, maar ze zullen deze voorbeelden niet wijzigen om extra functionaliteit te bieden of procedures te maken die voldoen aan uw specifieke vereisten.

Opmerking Voordat u deze hotfix installeert, controleert u of alle Microsoft Navision-clientgebruikers zijn afgemeld bij het systeem. Dit geldt ook voor gebruikers van Microsoft Navision Application Services (NAS). U moet de enige clientgebruiker zijn die is aangemeld wanneer u deze hotfix implementeert.

Als u deze hotfix wilt implementeren, moet u een ontwikkelaarslicentie hebben.

We raden u aan om aan het gebruikersaccount in het venster Windows-aanmeldingen of in het venster Databaseaanmeldingen de rol-id 'SUPER' toe te wijzen. Als de rol-id 'SUPER' niet kan worden toegewezen aan het gebruikersaccount, moet u controleren of het gebruikersaccount de volgende machtigingen heeft:

  • De machtiging Wijzigen voor het object dat u gaat wijzigen.
  • De machtiging Uitvoeren voor het object Systeemobject-id 5210 en voor het object Systeemobject-id 9015.

                
Opmerking U hoeft geen rechten te hebben voor de gegevensarchieven, tenzij u gegevensherstel moet uitvoeren.

Codewijzigingen

Opmerking Test altijd codecorrecties in een beheerde omgeving voordat u de correcties toepast op uw productiecomputers.
Voer de volgende stappen uit om dit probleem op te lossen:
Opmerking Lees dit wanneer u codeunit (333) opent, omdat dit anders is voor Noord-Amerikaanse versie W1. Beide zijn hier met tags voor het starten en stoppen van elke versie.

  1. Wijzig de code in de tabel Inkoopkoptekst (38) als volgt:

    1. Voeg de volgende algemene tekstconstante toe:
      Text051@1091: TextConst 'ENU=Het veld %1 op de inkooporder %2 moet hetzelfde zijn als bij verkooporder %3.';

    2. Voeg de volgende globale variabelen toe:

      • Naam: NameAddressDetails; DataType: Text[512];
      • Naam: NameAddressDetails2; DataType: Text[512];
    3. Voeg de volgende functie toe:
      CheckAndAddShipToAdd@46(SalesHeader@1000: Record 36; ShowError@1001 : Booleaanse waarde): Booleaanse waarde;

      VAR PurchLine2@1002: Record 39;
      Voeg de volgende code toe voor de functie:

      IF ShowError THEN BEGIN
        PurchLine2.RESET;
        PurchLine2.SETRANGE("Document Type","Document Type"::Order);
        PurchLine2.SETRANGE("Document No.","No.");
        IF NOT PurchLine2.ISEMPTY THEN BEGIN
          IF "Ship-to Name" <>SalesHeader."Ship-to Name" THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
          IF "Ship-to Name 2" <>SalesHeader."Ship-to Name 2" THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
          IF ("Ship-to Address" <>SalesHeader."Ship-to Address") THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
          IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
          IF ("Ship-to Post Code" <>SalesHeader."Ship-to Post Code") THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
          IF ("Ship-to City" <>SalesHeader."Ship-to City") THEN
            ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
          IF ("Ship-to Contact" <>SalesHeader."Ship-to Contact") THEN
            ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
        END ELSE BEGIN
          // no purchase line exists
          "Ship-to Name" := SalesHeader."Ship-to Name";
          "Ship-to Name 2" := SalesHeader."Ship-to Name 2";
          "Ship-to Address" := SalesHeader."Ship-to Address";
          "Ship-to Address 2" := SalesHeader."Ship-to Address 2";
          "Ship-to Post Code" := SalesHeader."Ship-to Post Code";
          "Ship-to City" := SalesHeader."Ship-to City";
          "Ship-to Contact" := SalesHeader."Ship-to Contact";
        END;
      END ELSE BEGIN
        NameAddressDetails :=
          SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
          SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
          SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
          SalesHeader."Ship-to Contact";
        IF NameAddressDetails2 = '' THEN
          NameAddressDetails2 := NameAddressDetails;
        EXIT(NameAddressDetails2 = NameAddressDetails);
      END;
      
      
    4. Voeg de volgende functie toe:
      DropShptSplOrderExists@48(SalesHeader@1000: Record 36) : Booleaanse waarde;

      VAR SalesLine2@1001: Record 37;

      Voeg de volgende code toe voor de functie:

      // returns TRUE if sales is either Drop Shipment of Special Order
      SalesLine2.RESET;
      SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
      SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
      SalesLine2.SETRANGE("Drop Shipment",TRUE);
      IF NOT SalesLine2.ISEMPTY THEN
        EXIT(TRUE);
      
      SalesLine2.SETRANGE("Drop Shipment");
      SalesLine2.SETRANGE("Special Order",TRUE);
      EXIT(NOT SalesLine2.ISEMPTY);
      
      
  2. Wijzig de code in de functie InsertReqWkshLine in het rapport Verkooporders ophalen (698) als volgt:
    Bestaande code

    ...
        Quantity,
        ROUND(SalesLine."Outstanding Quantity" * SalesLine."Qty. per Unit of Measure" / "Qty. per Unit of Measure",0.00001));
      "Sales Order No." := SalesLine."Document No.";
      "Sales Order Line No." := SalesLine."Line No.";
      "Sell-to Customer No." := SalesLine."Sell-to Customer No.";
      SalesHeader.GET(1,SalesLine."Document No.");
      IF SpecOrder <>1 THEN
        "Ship-to Code" := SalesHeader."Ship-to Code";
      "Item Category Code" := SalesLine."Item Category Code";
      Nonstock := SalesLine.Nonstock;  
    ...
    

    Vervangende code

    ...
            Quantity,
        ROUND(SalesLine."Outstanding Quantity" * SalesLine."Qty. per Unit of Measure" / "Qty. per Unit of Measure",0.00001));
      "Sales Order No." := SalesLine."Document No.";
      "Sales Order Line No." := SalesLine."Line No.";
      "Sell-to Customer No." := SalesLine."Sell-to Customer No.";
    
    // Add the following lines.
      Description := SalesLine.Description;
      "Description 2" := SalesLine."Description 2";
    // End of the added lines.
    
      SalesHeader.GET(1,SalesLine."Document No.");
      IF SpecOrder <>1 THEN
        "Ship-to Code" := SalesHeader."Ship-to Code";
      "Item Category Code" := SalesLine."Item Category Code";
      Nonstock := SalesLine.Nonstock;  
    ...
    
  3. Wijzig de code in de functie Code in de Code-eenheid Purch.-Get Drop Shpt. (76) als volgt:
    Bestaande code

    ...
          IF RECORDLEVELLOCKING THEN
        LOCKTABLE;
      SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order);
      TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
      TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
    
      PurchLine.LOCKTABLE;
      IF NOT RECORDLEVELLOCKING THEN
        LOCKTABLE(TRUE,TRUE); // Only version check
      SalesLine.LOCKTABLE;
    ...
          PurchLine."Document Type" := PurchLine."Document Type"::Order;
          PurchLine."Document No." := "No.";
          PurchLine."Line No." := NextLineNo;
          CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
          PurchLine.Description := SalesLine.Description;
          PurchLine."Sales Order No." := SalesLine."Document No.";
          PurchLine."Sales Order Line No." := SalesLine."Line No.";
          PurchLine."Drop Shipment" := TRUE;
          EVALUATE(PurchLine."Inbound Whse. Handling Time",'<0D>');
          PurchLine.VALIDATE("Inbound Whse. Handling Time");    
    ...
    

    Vervangende code

    ...
       IF RECORDLEVELLOCKING THEN
        LOCKTABLE;
      SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order);
      TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
      TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
    
    // Add the following lines.
      IF DropShptSplOrderExists(SalesHeader) THEN
        CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the added lines.
    
      PurchLine.LOCKTABLE;
      IF NOT RECORDLEVELLOCKING THEN
        LOCKTABLE(TRUE,TRUE); // Only version check
      SalesLine.LOCKTABLE;
    ...
          PurchLine."Document Type" := PurchLine."Document Type"::Order;
          PurchLine."Document No." := "No.";
          PurchLine."Line No." := NextLineNo;
          CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
          PurchLine.Description := SalesLine.Description;
    
    // Add the following line.
          PurchLine."Description 2" := SalesLine."Description 2";
    // End of the added line.
    
          PurchLine."Sales Order No." := SalesLine."Document No.";
          PurchLine."Sales Order Line No." := SalesLine."Line No.";
          PurchLine."Drop Shipment" := TRUE;
          EVALUATE(PurchLine."Inbound Whse. Handling Time",'<0D>');
          PurchLine.VALIDATE("Inbound Whse. Handling Time");          
    ...
    
  4. Wijzig de code in de functie GetDescriptionAndRcptName in de code-eenheid ReqJnlManagement (330) als volgt:
    Bestaande code

    ...
           ReqLine.Type::"G/L Account":
            IF GLAcc.GET(ReqLine."No.") THEN
              Description := GLAcc.Name
            ELSE
              Description := '';
    
    // Delete the following lines.
          ReqLine.Type::Item:
            IF Item.GET(ReqLine."No.") THEN
              Description := Item.Description
            ELSE
              Description := '';
    // End of the deleted lines.
    
        END;
      END;
    
    IF ReqLine."Vendor No." = '' THEN
      BuyFromVendorName := ''        
    ...
    

    Vervangende code

    ...
             ReqLine.Type::"G/L Account":
            IF GLAcc.GET(ReqLine."No.") THEN
              Description := GLAcc.Name
            ELSE
              Description := '';
        END;
      END;
    
    IF ReqLine."Vendor No." = '' THEN
      BuyFromVendorName := ''    
    ...
    
  5. OPMERKING Codeunit (333) heeft een andere code in de wereldwijde versie versus de Noord-Amerikaanse versie. Gebruik de juiste sectie voor uw installatie.

    Wijzig voor BEGIN North American Version codeunit (333) de code in de Req. Wksh.-Make Orders als volgt:

    1. Voeg de volgende globale variabele toe:

      • Naam: DropShptSpecialOrderExists;
      • DataType: Booleaanse waarde;
    2. Voeg de volgende lokale variabelen toe aan de functie InsertPurchOrderLine:

      • Naam: SalesHeader; DataType: Record (36);
      • Naam: DropShptSplOrderDiffAddress; DataType: Booleaanse waarde;
      • Naam: CreateNewRecord; DataType: Booleaanse waarde;
    3. Wijzig de code in de functie InsertPurchOrderLine als volgt:
      Bestaande code

      ...
      // Delete the following lines.
      WITH ReqLine2 DO BEGIN
        IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
          EXIT;
        IF NOT PurchasingCode.GET("Purchasing Code") THEN
          PurchasingCode."Special Order" := FALSE;
        IF (PurchasingCode."Special Order" AND
            (PurchSetup."Combine Special Orders Default" =
             PurchSetup."Combine Special Orders Default"::"Always Combine") AND
            ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
             (PurchOrderHeader."Location Code" <> "Location Code") OR
             (PurchOrderHeader."Currency Code" <>"Currency Code") OR
             (PrevPurchCode <>"Purchasing Code"))) OR
           (NOT PurchasingCode."Special Order" AND
             ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
             (PurchOrderHeader."Location Code" <>"Location Code") OR
             (PurchOrderHeader."Sell-to Customer No." <>"Sell-to Customer No.") OR
             (PrevShipToCode <>"Ship-to Code") OR
             (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
             (PurchOrderHeader."Currency Code" <> "Currency Code") OR
             (PrevPurchCode <>"Purchasing Code")))
        THEN BEGIN
          InsertHeader(ReqLine2);
          LineCount := 0;
          NextLineNo := 0;
          PrevPurchCode := "Purchasing Code";
          PrevShipToCode := "Ship-to Code";
        END;
        IF (PurchasingCode."Special Order") AND
            (PurchSetup."Combine Special Orders Default" =
            PurchSetup."Combine Special Orders Default"::"Never Combine") AND
            ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
             (PurchOrderHeader."Location Code" <> "Location Code") OR
             (PurchOrderHeader."Currency Code" <>"Currency Code") OR
             (PrevPurchCode <> "Purchasing Code")) THEN BEGIN
          InsertHeader(ReqLine2);
        END;
      // End of the deleted lines.
      
        LineCount := LineCount + 1;
        IF NOT PlanningResiliency THEN
          Window.UPDATE(4,LineCount);       
      ...
      

      Vervangende code

      ...
      // Add the following lines.
      WITH ReqLine2 DO BEGIN
        IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
          EXIT;
        DropShptSpecialOrderExists := FALSE;
        IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
          DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
          IF DropShptSpecialOrderExists THEN
            DropShptSplOrderDiffAddress :=
              NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
        END;
        IF NOT PurchasingCode.GET("Purchasing Code") THEN
          PurchasingCode."Special Order" := FALSE;
      
        CreateNewRecord :=
          (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
          (PurchOrderHeader."Location Code" <> "Location Code") OR
          (PurchOrderHeader."Currency Code" <> "Currency Code") OR
          (PrevPurchCode <>"Purchasing Code") OR
          DropShptSplOrderDiffAddress;
      
        IF PurchasingCode."Special Order" AND CreateNewRecord THEN BEGIN
          InsertHeader(ReqLine2);
          IF PurchSetup."Combine Special Orders Default" =
             PurchSetup."Combine Special Orders Default"::"Always Combine"
          THEN BEGIN
            LineCount := 0;
            NextLineNo := 0;
            PrevPurchCode := "Purchasing Code";
            PrevShipToCode := "Ship-to Code";
          END;
        END;
        IF NOT PurchasingCode."Special Order" AND
           (CreateNewRecord OR
           (PurchOrderHeader."Sell-to Customer No." <>"Sell-to Customer No.") OR
           (PrevShipToCode <>"Ship-to Code") OR
           (PurchOrderHeader."Order Address Code" <>"Order Address Code"))
        THEN BEGIN
          InsertHeader(ReqLine2);
          LineCount := 0;
          NextLineNo := 0;
          PrevPurchCode := "Purchasing Code";
          PrevShipToCode := "Ship-to Code";
        END;
      // End of the added lines.
      
        LineCount := LineCount + 1;
        IF NOT PlanningResiliency THEN
          Window.UPDATE(4,LineCount);       
      ...
      
    4. Wijzig de code in de functie InsertHeader als volgt:
      Voeg de volgende lokale variabele toe:

      • Naam: SalesHeader;
      • DataType: Record (36);

      Bestaande code

      ...
         WITH ReqLine2 DO BEGIN
        OrderCounter := OrderCounter + 1;
        IF NOT PlanningResiliency THEN
          Window.UPDATE(3,OrderCounter);
      
        PurchSetup.GET;
        PurchSetup.TESTFIELD("Order Nos.");
      
      // Delete the following line.
        CLEAR(PurchOrderHeader);
      // End of the deleted line.
      
        PurchOrderHeader.INIT;
        PurchOrderHeader."Document Type" := PurchOrderHeader."Document Type"::Order;
        PurchOrderHeader."No." := '';
      ...
            PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
        END ELSE BEGIN
          PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
          PurchOrderHeader.SetShipToForSpecOrder;
        END;
      
        PurchOrderHeader.MODIFY;
        COMMIT;
        IF RECORDLEVELLOCKING THEN
          LOCKTABLE;
        PurchOrderHeader.MARK(TRUE);
      END;      
      ...
      

      Vervangende code

      ...
      WITH ReqLine2 DO BEGIN
        OrderCounter := OrderCounter + 1;
        IF NOT PlanningResiliency THEN
          Window.UPDATE(3,OrderCounter);
      
        PurchSetup.GET;
        PurchSetup.TESTFIELD("Order Nos.");
        PurchOrderHeader.INIT;
        PurchOrderHeader."Document Type" := PurchOrderHeader."Document Type"::Order;
        PurchOrderHeader."No." := '';
      ...
            PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
        END ELSE BEGIN
          PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
          PurchOrderHeader.SetShipToForSpecOrder;
        END;
      
      // Add the following lines.
        IF DropShptSpecialOrderExists THEN BEGIN
          SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
          PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
          PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
          PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
          PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
          PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
          PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
          PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
        END;
      // End of the added lines.
      
        PurchOrderHeader.MODIFY;
        COMMIT;
        IF RECORDLEVELLOCKING THEN
          LOCKTABLE;
        PurchOrderHeader.MARK(TRUE);
      END;       
      ...
      

    Wijzig voor BEGIN W1 Version codeunit (333) de code in de Req. Wksh.-Make Order als volgt:

    1. Voeg de volgende globale variabele toe:

      • Naam: DropShptSpecialOrderExists;
      • DataType: Booleaanse waarde;
    2. Voeg de volgende lokale variabelen toe aan de functie InsertPurchOrderLine:

      • Naam: SalesHeader; DataType: Record (36);
      • Naam: DropShptSplOrderDiffAddress; DataType: Booleaanse waarde;
    3. Wijzig de code in de functie InsertPurchOrderLine als volgt:
      Bestaande code

      ...
         WITH ReqLine2 DO BEGIN
        IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
          EXIT;
      
        IF (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
           (PurchOrderHeader."Sell-to Customer No."<> "Sell-to Customer No.") OR
           (PrevShipToCode <> "Ship-to Code") OR
           (PurchOrderHeader."Order Address Code" <>"Order Address Code") OR
           (PurchOrderHeader."Currency Code" <>"Currency Code") OR
      
      // Delete the following line.
           (PrevPurchCode <>"Purchasing Code")
      // End of the deleted line.
      
        THEN BEGIN
          InsertHeader(ReqLine2);
          LineCount := 0;
          NextLineNo := 0;
          PrevPurchCode := "Purchasing Code";
          PrevShipToCode := "Ship-to Code";
        END; 
      ...
      

      Vervangende code

      ...
        WITH ReqLine2 DO BEGIN
        IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
          EXIT;
      // Add the following lines.
        DropShptSpecialOrderExists := FALSE;
        IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
          DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
          IF DropShptSpecialOrderExists THEN
            DropShptSplOrderDiffAddress :=
              NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
        END;
      // End of the added lines.  
       IF (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR
           (PurchOrderHeader."Sell-to Customer No."<> "Sell-to Customer No.") OR
           (PrevShipToCode <> "Ship-to Code") OR
           (PurchOrderHeader."Order Address Code" <>"Order Address Code") OR
           (PurchOrderHeader."Currency Code" <>"Currency Code") OR
      
      // Add the following lines.
           (PrevPurchCode <> "Purchasing Code") OR
           (DropShptSplOrderDiffAddress)
      // End of the added lines.
      
        THEN BEGIN
          InsertHeader(ReqLine2);
          LineCount := 0;
          NextLineNo := 0;
          PrevPurchCode := "Purchasing Code";
          PrevShipToCode := "Ship-to Code";
        END; 
      ...
      
    4. Wijzig de code in de functie InsertHeader als volgt:
      Voeg de volgende lokale variabele toe:

      • Naam: SalesHeader;
      • DataType: Record (36);

      Bestaande code

      ...
          END ELSE BEGIN
          PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
          PurchOrderHeader.SetShipToForSpecOrder;
        END;
      
        PurchOrderHeader.MODIFY;
        COMMIT;
        IF RECORDLEVELLOCKING THEN
          LOCKTABLE;
        PurchOrderHeader.MARK(TRUE);
      END;      
      ...
      

      Vervangende code

      ...
       END ELSE BEGIN
          PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
          PurchOrderHeader.SetShipToForSpecOrder;
        END;
      // Add the following lines.
        IF DropShptSpecialOrderExists THEN BEGIN
          IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
          PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
          PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
          PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
          PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
          PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
          PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
          PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
        END;
      // End of the added lines.
      
        PurchOrderHeader.MODIFY;
        COMMIT;
        IF RECORDLEVELLOCKING THEN
          LOCKTABLE;
        PurchOrderHeader.MARK(TRUE);
      END;
      ...
      
  6. Wijzig de code in de functie EnterPurchaseItemCrossRef in de Codeunit Dist. Integration (5702) als volgt:
    Bestaande code

    ...
       IF Found THEN BEGIN
          "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
          "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
          "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    
    // Delete the following lines.
          IF ItemCrossReference.Description <>'' THEN BEGIN
            Description := ItemCrossReference.Description;
            "Description 2" := '';
          END;
        END ELSE BEGIN
          "Cross-Reference No." := '';
          "Cross-Reference Type" := "Cross-Reference Type"::" ";
          "Cross-Reference Type No." := '';
          IF "Variant Code" <>'' THEN BEGIN
            ItemVariant.GET("No.","Variant Code");
            Description := ItemVariant.Description;
            "Description 2" := ItemVariant."Description 2";
          END ELSE BEGIN
            Item.GET("No.");
            Description := Item.Description;
            "Description 2" := Item."Description 2";
          END;
    // End of the deleted lines.
    
          GetItemTranslation;
        END;
      END;         
    ...
    

    Vervangende code

    ...
           IF Found THEN BEGIN
          "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
          "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
          "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    
    // Add the following lines.
          "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
        END ELSE BEGIN
          "Cross-Reference No." := '';
          "Cross-Reference Type" := "Cross-Reference Type"::" ";
          "Cross-Reference Type No." := '';
    // End of the added lines.
    
          GetItemTranslation;
        END;
      END;    
    ...
    
  7. Wijzig de code in de functie GetSpecialOrders in de codeeenheid Dist. Integration (5702) als volgt:
    Bestaande code

    ...
        IF RECORDLEVELLOCKING THEN
        LOCKTABLE;
      SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order);
      TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
      TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
    
    // Delete the following line.
      PurchHeader.SetShipToForSpecOrder;
    // End of the deleted line.
    
      PurchLine.LOCKTABLE;
      IF NOT RECORDLEVELLOCKING THEN
        LOCKTABLE(TRUE,TRUE); // Only version check
      SalesLine.LOCKTABLE;       
    ...
    

    Vervangende code

    ...
        IF RECORDLEVELLOCKING THEN
        LOCKTABLE;
      SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order);
      TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
      TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
    // Add the following lines.
      IF DropShptSplOrderExists(SalesHeader) THEN
        CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the added lines.
    
      PurchLine.LOCKTABLE;
      IF NOT RECORDLEVELLOCKING THEN
        LOCKTABLE(TRUE,TRUE); // Only version check
      SalesLine.LOCKTABLE;    
    ...
    
  8. Wijzig de code in de functie TransfldsFromSalesToPurchLine in de codeunit Copy Document Mgt. (6620) als volgt:
    Bestaande code

    ...
      "Expected Receipt Date" := FromSalesLine."Shipment Date";
      "Bin Code" := FromSalesLine."Bin Code";
      VALIDATE(Quantity,FromSalesLine."Outstanding Quantity");
      VALIDATE("Return Reason Code",FromSalesLine."Return Reason Code");
      VALIDATE("Direct Unit Cost");
    END;     
    ...
    

    Vervangende code

    ...
      "Expected Receipt Date" := FromSalesLine."Shipment Date";
      "Bin Code" := FromSalesLine."Bin Code";
      VALIDATE(Quantity,FromSalesLine."Outstanding Quantity");
      VALIDATE("Return Reason Code",FromSalesLine."Return Reason Code");
      VALIDATE("Direct Unit Cost");
    // Add the following lines.
      Description := FromSalesLine.Description;
      "Description 2" := FromSalesLine."Description 2";
    // End of the added lines.
    END;       
    ...
    

          

Vereisten

U moet een van de volgende producten hebben geïnstalleerd om deze hotfix toe te passen:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2

                
              

Verwijderingsgegevens

U kunt deze hotfix niet verwijderen.

Status

Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie

VSTF DynamicsNAV SE: 238210

Opmerking Dit is een artikel 'FAST PUBLISH' dat rechtstreeks vanuit de microsoft-ondersteuningsorganisatie is gemaakt. De hierin opgenomen informatie wordt als zodanig verstrekt als reactie op nieuwe problemen. Als gevolg van de snelheid waarmee het beschikbaar wordt gesteld, kunnen de materialen typografische fouten bevatten en te allen tijde zonder voorafgaande kennisgeving worden herzien. Zie Gebruiksvoorwaarden voor andere overwegingen.