Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Bài viết này áp dụng cho Microsoft Dynamics NAV cho tất cả ngôn ngữ.

Triệu chứng

Trong Microsoft Dynamics NAV, khi bạn sử dụng bảng yêu cầu để tạo một đơn đặt hàng hoặc khi bạn tạo thủ công một đơn đặt hàng, thả hàng và đơn đặt hàng đặc biệt không xem xét về đơn bán hàng có liên quan, xác định. Do đó, mô tả, mô tả 2 và địa chỉ giao hàng tiêu đề đơn bán hàng và dòng không tuân thủ thông qua các tỷ mua thứ tự.
Vấn đề này xảy ra trong các sản phẩm sau:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2

Giải pháp

Thông tin về cập nhật nóng

Microsoft hiện đã cung cấp bản cập nhật nóng được hỗ trợ. Tuy nhiên, nó là chỉ nhằm khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng nó cho hệ thống đang gặp vấn đề cụ thể này. Hotfix này có thể được kiểm tra thêm. Vì vậy, nếu bạn không bị ảnh hưởng bởi sự cố này, chúng tôi khuyến nghị bạn đợi cho gói dịch vụ tiếp theo của Microsoft Dynamics NAV 2009 hoặc phiên bản Microsoft Dynamics NAV tiếp theo có chứa hotfix này.

Lưu ý Trong trường hợp đặc biệt, chi phí thường phát sinh để hỗ trợ cuộc gọi có thể bị hủy bỏ nếu chuyên viên hỗ trợ kỹ thuật cho Microsoft Dynamics và sản phẩm liên quan xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề. Chi phí hỗ trợ thông thường sẽ áp dụng cho các vấn đề không phù hợp với bản Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.



Thông tin cài đặt

Microsoft cung cấp mô hình lập trình để minh hoạ, không bảo hành hoặc rõ ràng hay ngụ ý. Điều này bao gồm, nhưng không giới hạn ở các bảo đảm cho một mục đích cụ thể hoặc sự. Bài viết này giả định rằng bạn đã quen với ngôn ngữ lập trình đang được giải thích và các công cụ được sử dụng để tạo và quy trình gỡ lỗi. Các kỹ sư hỗ trợ Microsoft có thể giúp giải thích các chức năng của một quy trình cụ thể, nhưng chúng sẽ không sửa đổi các ví dụ để cung cấp thêm chức năng hoặc xây dựng quy trình nhằm đáp ứng các yêu cầu cụ thể của bạn.

Lưu ý Trước khi cài đặt hotfix này, xác minh rằng tất cả Microsoft Navision khách người dùng đăng xuất hệ thống. Điều này bao gồm Microsoft Navision ứng dụng dịch vụ (NAS) khách người dùng. Bạn nên khách hàng chỉ người được đăng nhập khi bạn áp dụng hotfix này.

Để áp dụng hotfix này, bạn phải có giấy phép nhà phát triển.

Chúng tôi khuyên bạn nên trương mục người dùng trong cửa sổ thông tin đăng nhập Windows hoặc trong cửa sổ thông tin đăng nhập cơ sở dữ liệu được gán vai trò "Siêu" của bạn. Nếu trương mục người dùng không thể gán vai trò "SUPER" ID, bạn phải xác minh rằng tài khoản người dùng có các quyền sau:

  • Thay đổi quyền cho các đối tượng mà bạn sẽ thay đổi.

  • Quyền thực thi các đối tượng hệ thống đối tượng ID 5210 và các đối tượng hệ thống đối tượng ID 9015 .



Lưu ý Bạn không cần phải có quyền để lưu trữ dữ liệu nếu bạn phải tiến hành sửa chữa dữ liệu.

Thay đổi mã

Lưu ý Luôn kiểm tra mã khắc phục trong một môi trường được kiểm soát trước khi bạn áp dụng bản vá để sản xuất máy tính của bạn.
Để khắc phục sự cố này, hãy làm theo các bước sau:
Lưu ý Vui lòng đọc khi bạn truy cập vào codeunit (333), vì nó là khác nhau cho Bắc Mỹ phiên bản W1. Cả hai đều ở đây với thẻ bắt đầu và ngừng từng phiên bản.

  1. Thay đổi mã trong bảng Mua tiêu đề (38) như sau:

    1. Địa chỉ liên tục toàn văn bản sau:
      Text051@1091: TextConst ' ENU = %1 lĩnh vực mua hàng %2 phải giống như bán hàng đặt %3.';

    2. Thêm các yếu tố chung sau:

      • Tên: NameAddressDetails; Loại dữ liệu: Văn bản [512];

      • Tên: NameAddressDetails2; Loại dữ liệu: Văn bản [512];

    3. Thêm chức năng sau:
      CheckAndAddShipToAdd@46 (SalesHeader@1000: ghi 36; ShowError@1001: Boolean): phép;

      VAR PurchLine2@1002: Ghi 39;
      Thêm mã sau đây cho các chức năng:

      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. Thêm chức năng sau:
      DropShptSplOrderExists@48 (SalesHeader@1000: ghi 36): phép;

      VAR SalesLine2@1001: Hồ sơ 37;

      Thêm mã sau đây cho các chức năng:

      // 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. Thay đổi mã chức năng InsertReqWkshLine trong báo cáo Được bán hàng (698) như sau:
    Mã hiện tại

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

    Thay thế mã

    ...        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. Thay đổi mã trong mã chức năng trong các Purch.-nhận thả Shpt. codeunit (76) như sau:
    Mã hiện tại

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

    Thay thế mã

    ...   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. Thay đổi mã trong hàm GetDescriptionAndRcptName ReqJnlManagement codeunit (330) như sau:
    Mã hiện tại

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

    Thay thế mã

    ...         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. Chú ý Codeunit (333) có mã khác nhau trên toàn thế giới vs Bắc Mỹ phiên bản. Sử dụng đúng phần cài đặt.

    Để bắt đầu phiên bản Bắc Mỹ codeunit (333), thay đổi mã trong phần Req. Wksh.-thực hiện lệnh như sau:

    1. Thêm biến chung sau:

      • Tên: DropShptSpecialOrderExists;

      • Loại dữ liệu: Boolean;

    2. Thêm chức năng InsertPurchOrderLinebiến cục bộ sau:

      • Tên: SalesHeader; Loại dữ liệu: Ghi (36);

      • Tên: DropShptSplOrderDiffAddress; Loại dữ liệu: Boolean;

      • Tên: CreateNewRecord; Loại dữ liệu: Boolean;

    3. Thay đổi mã chức năng InsertPurchOrderLinenhư sau:
      Mã hiện tại

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

      Thay thế mã

      ...// 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. Thay đổi mã chức năng InsertHeader như sau:
      Thêm các biến cục bộ sau:

      • Tên: SalesHeader;

      • Loại dữ liệu: Ghi (36);

      Mã hiện tại

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

      Thay thế mã

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

    Để bắt đầu phiên bản W1 codeunit (333), thay đổi mã trong phần Req. Wksh.-thực hiện lệnh như sau:

    1. Thêm biến chung sau:

      • Tên: DropShptSpecialOrderExists;

      • Loại dữ liệu: Boolean;

    2. Thêm các biến cục bộ sau hàm InsertPurchOrderLine:

      • Tên: SalesHeader; Loại dữ liệu: Ghi (36);

      • Tên: DropShptSplOrderDiffAddress; Loại dữ liệu: Boolean;

    3. Thay đổi mã chức năng InsertPurchOrderLinenhư sau:
      Mã hiện tại

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

      Thay thế mã

      ...  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. Thay đổi mã chức năng InsertHeader như sau:
      Thêm các biến cục bộ sau:

      • Tên: SalesHeader;

      • Loại dữ liệu: Ghi (36);

      Mã hiện tại

      ...    END ELSE BEGIN
      PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
      PurchOrderHeader.SetShipToForSpecOrder;
      END;

      PurchOrderHeader.MODIFY;
      COMMIT;
      IF RECORDLEVELLOCKING THEN
      LOCKTABLE;
      PurchOrderHeader.MARK(TRUE);
      END;
      ...

      Thay thế mã

      ... 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. Thay đổi mã trong hàm EnterPurchaseItemCrossRef codeunit Quận tích hợp (5702) như sau:
    Mã hiện tại

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

    Thay thế mã

    ...       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. Thay đổi mã trong hàm GetSpecialOrders codeunit Quận tích hợp (5702) như sau:
    Mã hiện tại

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

    Thay thế mã

    ...    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. Thay đổi mã trong hàm TransfldsFromSalesToPurchLine Bản sao tài liệu Mgt. codeunit (6620) như sau:
    Mã hiện tại

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

    Thay thế mã

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


Điều kiện tiên quyết

Bạn phải có một trong các sản phẩm được cài đặt để áp dụng hotfix này:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2



Thông tin về việc loại bỏ

Bạn không thể xoá hotfix này.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Tham khảo

VSTF DynamicsNAV SE: 238210

Lưu ý Đây là một bài viết "XUẤT BẢN NHANH" được tạo trực tiếp từ trung tâm hỗ trợ của Microsoft. Thông tin này được cung cấp-trả lời cho các vấn đề mới xuất hiện. Vì nhanh chóng có sẵn, các tài liệu có thể bao gồm lỗi và có thể được sửa đổi bất kỳ lúc nào mà không cần thông báo. Xem Điều khoản sử dụng để xem xét khác.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×