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.
-
Thay đổi mã trong bảng Mua tiêu đề (38) như sau:
-
Đị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.'; -
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];
-
-
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; -
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);
-
-
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;
... -
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");
... -
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 := ''
... -
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:-
Thêm biến chung sau:
-
Tên: DropShptSpecialOrderExists;
-
Loại dữ liệu: Boolean;
-
-
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;
-
-
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);
... -
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:
-
Thêm biến chung sau:
-
Tên: DropShptSpecialOrderExists;
-
Loại dữ liệu: Boolean;
-
-
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;
-
-
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;
... -
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;
... -
-
-
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;
... -
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;
... -
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.