Applies ToDynamics NAV 2009

Cet article s’applique à Microsoft Dynamics NAV pour tous les paramètres régionaux de langue.

Symptômes

Dans Microsoft Dynamics NAV, lorsque la demande d’achat vous permet de créer un ordre d’achat ou lorsque vous créez manuellement une commande d’achat, la livraison directe et les commandes spéciales ne considèrent pas les informations définies dans la commande client. Par conséquent, la désignation, désignation 2 et l’adresse de livraison à partir de l’en-tête de commande client et les lignes ne suivent pas par le biais de la commande invariable passé commande.Ce problème se produit dans les produits suivants :

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2

Résolution

Informations sur le correctif

Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, nous vous recommandons d’attendre le prochain service pack Microsoft Dynamics NAV 2009 ou la prochaine version de Microsoft Dynamics NAV qui comprendra ce correctif.Remarque Dans certains cas, les frais généralement encourus pour la prise en charge des appels peuvent être annulés si un technicien du Support technique pour Microsoft Dynamics et les produits associés détermine qu’une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.

Informations sur l’installation

Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Ceci inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.Remarque Avant d’installer ce correctif, vérifiez que tous les utilisateurs du client Microsoft Navision sont enregistrés sur le système. Cela inclut les utilisateurs du client Microsoft Navision Application Services (NAS). Vous devez être le seul utilisateur client connecté lors de l’implémentation de ce correctif.Pour appliquer ce correctif, vous devez posséder une licence développeur.Il est recommandé que le compte d’utilisateur dans la fenêtre Logins Windows ou dans la fenêtre Logins base de données est affecté à l’ID de rôle « SUPER ». Si le compte d’utilisateur ne peut pas être affecté à l’ID de rôle « SUPER », vous devez vérifier que le compte d’utilisateur dispose des autorisations suivantes :

  • L’autorisation de modification pour l’objet que vous allez modifier.

  • L’autorisation d’exécution pour l’objet ID objet système 5210 et pour l’objet ID objet système 9015 .

Remarque Vous n’êtes pas obligé de disposer des droits pour les banques de données excepté si vous devez réparer des données.

Modifications du code

Remarque Toujours tester le code des correctifs dans un environnement contrôlé, avant d'appliquer les correctifs à vos ordinateurs de production.Pour résoudre ce problème, procédez comme suit :Remarque Veuillez lire lorsque vous accédez à codeunit (333), car il est différent de la version W1 en Amérique du Nord. Les deux sont ici avec les balises de début et de fin de chaque version.

  1. Modifiez le code dans la table En-tête achat (38) comme suit :

    1. Ajoutez la constante globale du texte suivant :Text051@1091 : TextConst ' ENU = %1 champ sur la commande fournisseur %2 doit être le même que sur les ventes de commande %3.';

    2. Ajoutez les variables globales suivantes :

      • Nom : NameAddressDetails ; Type de données : Texte (512) ;

      • Nom : NameAddressDetails2 ; Type de données : Texte (512) ;

    3. Ajoutez la fonction suivante :CheckAndAddShipToAdd@46 (SalesHeader@1000 : enregistrement de 36 ; ShowError@1001 : Boolean) : Boolean ;VAR, PurchLine2@1002 : Enregistrement 39 ;Ajoutez le code suivant pour la fonction :

      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. Ajoutez la fonction suivante :DropShptSplOrderExists@48 (SalesHeader@1000 : enregistrement de 36) : Boolean ;VAR, SalesLine2@1001 : Enregistre le 37 ;Ajoutez le code suivant pour la fonction :

      // returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.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. Modifiez le code dans la fonction InsertReqWkshLine dans le rapport d’Extraire commandes vente (698) comme suit :Code existant

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

    Code de remplacement

    ...        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. Modifier le code de la fonction de Code dans la Purch.-obtenir la livraison directe codeunit (76) comme suit :Code existant

    ...      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");    ...

    Code de remplacement

    ...   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. Modifiez le code dans la fonction GetDescriptionAndRcptName dans le codeunit ReqJnlManagement (330) comme suit :Code existant

    ...       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 := ''        ...

    Code de remplacement

    ...         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. Remarque Codeunit (333) a un code différent dans la version nord-américaine de vs de version dans le monde entier. Utilisez la section appropriée pour votre installation.Pour commencer le Version nord-américaine codeunit (333), modifiez le code dans la Dem-créer des commandes comme suit :

    1. Ajoutez la variable globale suivante :

      • Nom : DropShptSpecialOrderExists ;

      • Type de données : Valeur booléenne ;

    2. Ajoutez les variables locales suivants dans la fonction InsertPurchOrderLine:

      • Nom : SalesHeader ; Type de données : Enregistrement (36) ;

      • Nom : DropShptSplOrderDiffAddress ; Type de données : Valeur booléenne ;

      • Nom : CreateNewRecord ; Type de données : Valeur booléenne ;

    3. Modifiez le code dans la fonction InsertPurchOrderLinecomme suit :Code existant

      ...// 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);       ...

      Code de remplacement

      ...// 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. Modifiez le code dans la fonction InsertHeader comme suit :Ajoutez la variable locale suivante :

      • Nom : SalesHeader ;

      • Type de données : Enregistrement (36) ;

      Code existant

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

      Code de remplacement

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

    Pour commencer le Version W1 codeunit (333), modifiez le code dans la Dem-commande comme suit :

    1. Ajoutez la variable globale suivante :

      • Nom : DropShptSpecialOrderExists ;

      • Type de données : Valeur booléenne ;

    2. Ajoutez les variables locales suivants dans la fonction InsertPurchOrderLine:

      • Nom : SalesHeader ; Type de données : Enregistrement (36) ;

      • Nom : DropShptSplOrderDiffAddress ; Type de données : Valeur booléenne ;

    3. Modifiez le code dans la fonction InsertPurchOrderLinecomme suit :Code existant

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

      Code de remplacement

      ...  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. Modifiez le code dans la fonction InsertHeader comme suit :Ajoutez la variable locale suivante :

      • Nom : SalesHeader ;

      • Type de données : Enregistrement (36) ;

      Code existant

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

      Code de remplacement

      ... 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. Modifiez le code dans la fonction EnterPurchaseItemCrossRef dans le codeunit Intégration de distribution (5702) comme suit :Code existant

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

    Code de remplacement

    ...       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. Modifiez le code dans la fonction GetSpecialOrders dans le codeunit Intégration de distribution (5702) comme suit :Code existant

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

    Code de remplacement

    ...    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. Modifiez le code dans la fonction TransfldsFromSalesToPurchLine dans le codeunit de Gestion de Document de copie (6620) comme suit :Code existant

    ...  "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;     ...

    Code de remplacement

    ...  "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;       ...

Conditions préalables

Vous devez disposer d’un des produits suivants est installé pour appliquer ce correctif :

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2

Informations sur la suppression

Vous ne pouvez pas supprimer ce correctif.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Références

VSTF DynamicsNAV SE : 238210

Remarque Il s’agit d’un article de « Dernière minute » créé directement à partir de l’organisation de support technique de Microsoft. Les informations contenues dans ce document sont fournies en l'état, en réponse à des problèmes nouveaux. En raison de la rapidité de leur mise à disposition, les documents peuvent contenir des erreurs typographiques et peuvent être révisés à tout moment sans préavis. Consultez les Conditions d’utilisation pour d’autres considérations.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.