Přímá dodávka a zvláštní objednávka neberou v úvahu definované informace na prodejní objednávce při použití listu požadavků k vytvoření nákupní objednávky nebo při ručním vytvoření nákupní objednávky v aplikaci Microsoft Dynamics NAV

Platí pro
Dynamics NAV 2009

Tento článek platí pro Microsoft Dynamics NAV pro všechna jazyková národní prostředí.

Příznaky

V aplikaci Microsoft Dynamics NAV při použití listu žádanek k vytvoření nákupní objednávky nebo při ručním vytvoření nákupní objednávky, přímá dodávka a zvláštní objednávky nezohlední definované informace na související prodejní objednávce. Z tohoto důvodu popis, popis 2 a dodací adresa ze záhlaví a řádků prodejní objednávky nenavazují na vázanou nákupní objednávku.
K tomuto problému dochází u následujících produktů:

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

Řešení

Informace o opravě hotfix

Od Microsoftu je teď k dispozici podporovaná oprava hotfix. Účelem je však pouze vyřešení problému, který je popsán v tomto článku. Aplikujte ho jenom na systémy, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může projít dalším testováním. Pokud se vás tedy tento problém vážně netýká, doporučujeme počkat na další aktualizaci Service Pack pro produkt Microsoft Dynamics NAV 2009 nebo další verzi aplikace Microsoft Dynamics NAV, která tuto opravu hotfix obsahuje.

Poznámka: Ve zvláštních případech mohou být poplatky, které jsou obvykle účtovány za telefonická hovory podpory, zrušeny, pokud pracovník technické podpory pro řešení Microsoft Dynamics a související produkty zjistí, že konkrétní aktualizace vyřeší váš problém. Další dotazy a problémy týkající se podpory, které se netýkají této konkrétní opravy, podléhají běžným sazbám za podporu.

            
          

Informace o instalaci

Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky, ať už vyjádřené nebo předpokládané. To zahrnuje, ale není omezeno na, předpokládané záruky prodejnosti nebo vhodnosti pro konkrétní účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předváděn, a s nástroji, které se používají k vytváření a ladění procedur. Pracovníci technické podpory Microsoftu vám můžou pomoct vysvětlit funkčnost určitého postupu, ale nebudou tyto příklady upravovat za účelem poskytování dalších funkcí nebo konstrukce procedur, které by splňovaly vaše konkrétní požadavky.

Poznámka: Před instalací této opravy hotfix ověřte, zda jsou všichni uživatelé klienta Microsoft Navision odhlášeni ze systému. To zahrnuje i uživatele klienta Microsoft Navision Application Services (NAS). Měli byste být jediným klientským uživatelem, který je přihlášen při implementaci této opravy hotfix.

K implementaci této opravy hotfix musíte mít vývojářskou licenci.

Doporučujeme, aby uživatelské účtu v okně Windows Přihlášení nebo v okně Přihlášení k databázi bylo přiřazeno ID role "SUPER". Pokud nelze uživatelskému účtu přiřadit ID role "SUPER", je nutné ověřit, zda má uživatelský účet následující oprávnění:

  • Oprávnění k úpravám objektu, který budete měnit.
  • Oprávnění ke spuštění pro objekt s ID systémového objektu 5210 a pro objekt s ID systémového objektu 9015.

                
Poznámka: K úložištím dat nemusíte mít práva, ledaže byste museli provádět opravu dat.

Změny kódu

Poznámka: Před použitím oprav v produkčních počítačích vždy otestujte opravy kódu v kontrolovaném prostředí.
Chcete-li tento problém vyřešit, postupujte takto:
Poznámka: Při přístupu ke kódové jednotce (333) si prosím přečtěte, protože pro severoamerickou verzi W1 je jiná. Obojí je zde se značkami pro začátek a konec každé verze.

  1. Změňte kód v tabulce záhlaví nákupu (38) takto:

    1. Přidejte následující globální textovou konstantu:
      Text051@1091 : TextConst 'ENU=Pole %1 na nákupní objednávce%2 musí být stejné jako na prodejní objednávce %3.';

    2. Přidejte následující globální proměnné:

      • Název: NameAddressDetails; Datový typ: Text[512];
      • Název: NameAddressDetails2; Datový typ: Text[512];
    3. Přidejte následující funkci:
      CheckAndAddShipToAdd@46(SalesHeader@1000 : Záznam 36; ShowError@1001 : Boolean) : Boolean;

      VAR PurchLine2@1002 : Záznam 39;
      Přidejte následující kód pro funkci:

      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. Přidejte následující funkci:
      DropShptSplOrderExists@48(SalesHeader@1000 : Záznam 36) : Boolean;

      VAR SalesLine2@1001 : Záznam 37;

      Přidejte následující kód pro funkci:

      // 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. Následujícím způsobem změňte kód ve funkci InsertReqWkshLine v sestavě Získat prodejní objednávky (698):
    Existující kód

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

    Náhradní kód

    ...
            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. Změňte kód ve funkci Code v kódové jednotce Purch.-Get Drop Shpt. (76) následujícím způsobem:
    Existující kód

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

    Náhradní kód

    ...
       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. Změňte kód ve funkci GetDescriptionAndRcptName v jednotce kódu ReqJnlManagement (330) takto:
    Existující kód

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

    Náhradní kód

    ...
             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. POZNÁMKA: Codeunit (333) má jiný kód v celosvětové verzi vs severoamerická verze. Použijte správný oddíl pro instalaci.

    Pro BEGIN North American Version codeunit (333) změňte kód v Req. Wksh.-Make Orders takto:

    1. Přidejte následující globální proměnnou:

      • Název: DropShptSpecialOrderExists;
      • Datový typ: Boolean;
    2. Do funkce InsertPurchOrderLine přidejte následující místní proměnné:

      • Název: SalesHeader; Datový typ: Záznam (36);
      • Název: DropShptSplOrderDiffAddress; Datový typ: Boolean;
      • Název: CreateNewRecord; Datový typ: Boolean;
    3. Následujícím způsobem změňte kód ve funkci InsertPurchOrderLine:
      Existující kód

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

      Náhradní kód

      ...
      // 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. Následujícím způsobem změňte kód ve funkci InsertHeader:
      Přidejte následující místní proměnnou:

      • Název: SalesHeader;
      • Datový typ: Záznam (36);

      Existující kód

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

      Náhradní kód

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

    Pro kódovou jednotku verze BEGIN W1 (333) změňte kód v požadovaném Wksh.-Make Order následujícím způsobem:

    1. Přidejte následující globální proměnnou:

      • Název: DropShptSpecialOrderExists;
      • Datový typ: Boolean;
    2. Do funkce InsertPurchOrderLine přidejte následující místní proměnné:

      • Název: SalesHeader; Datový typ: Záznam (36);
      • Název: DropShptSplOrderDiffAddress; Datový typ: Boolean;
    3. Následujícím způsobem změňte kód ve funkci InsertPurchOrderLine:
      Existující kód

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

      Náhradní kód

      ...
        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. Následujícím způsobem změňte kód ve funkci InsertHeader:
      Přidejte následující místní proměnnou:

      • Název: SalesHeader;
      • Datový typ: Záznam (36);

      Existující kód

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

      Náhradní kód

      ...
       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. Změňte kód ve funkci EnterPurchaseItemCrossRef v dist. Jednotka integračního kódu (5702) takto:
    Existující kód

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

    Náhradní kód

    ...
           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. Změňte kód ve funkci GetSpecialOrders v dist Jednotka kódu integrace (5702) takto:
    Existující kód

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

    Náhradní kód

    ...
        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. Změňte kód ve funkci TransfldsFromSalesToPurchLine v Copy Document Mgt. codeunit (6620) následujícím způsobem:
    Existující kód

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

    Náhradní kód

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

          

Požadavky

Chcete-li nainstalovat tuto opravu hotfix, musíte mít nainstalovaný jeden z následujících produktů:

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

                
              

Informace o odebrání

Tuto opravu hotfix nelze odebrat.

Stav

Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.

Reference

VSTF DynamicsNAV SE: 238210

Poznámka: Toto je článek určený k rychlému zveřejnění, který byl vytvořen přímo v rámci organizace podpory společnosti Microsoft. Zde uvedené informace jsou poskytovány tak, jak jsou, jako reakce na nově vznikající potíže. Vzhledem k rychlosti, s jakou byl článek zpřístupněn, mohou příslušné materiály obsahovat typografické chyby a mohou být kdykoli bez předchozího upozornění revidovány. Další okolnosti viz Podmínky použití .