Bài viết này áp dụng cho Microsoft Dynamics NAV cho tất cả các nước và tất cả ngôn ngữ.
Triệu chứng
Khi bạn tạo một hợp đồng dịch vụ (không phải trả trước) thay đổi đơn trước khi gửi trong Microsoft Dynamics NAV 2009, không phù hợp dữ liệu giữa các dịch vụ thư mục sổ kế toán và sổ cái chung. Sự cố này xảy ra trong các sản phẩm sau:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Service Pack 1
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ó chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Áp dụng cho các hệ thống đang gặp sự cố 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ể được 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 đề của bạ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ể. Tuy nhiên, họ 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 tài khoản 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 tài khoản 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 đây:
-
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:
-
Thay đổi mã trong tài liệu kích thước bàn (357) như sau:
Hiện có mã 1... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Thay thế mã 1
... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
Text007@1011 : TextConst 'ENU=You cannot change the dimension because the document is based on a service contract.';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Hiện có mã 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
END;
END;
...Thay thế mã 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
ServiceHeader@1003 : Record 5900;
ServiceLine@1004 : Record 5902;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Service Header":
IF ServiceHeader.GET(DocDim."Document Type",DocDim."Document No.") AND (ServiceHeader."Contract No." <> '') THEN
ERROR(Text007);
DATABASE::"Service Line":
IF ServiceLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (ServiceLine."Contract No." <> '') THEN
ERROR(Text007);
END;
END;
... -
Thay đổi mã trong bảng dịch vụ dòng (5902) như sau:
Hiện có mã 1... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
END;
OnDelete=VAR
...Thay thế mã 1
... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
IF "Document Type" = ServiceLine."Document Type"::Invoice THEN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
END;
OnDelete=VAR
...Hiện có mã 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
GetServHeader;
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Thay thế mã 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
GetServHeader;
...Mã hiện 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Thay thế mã 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Mã hiện 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Thay thế mã 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Appl.-to Service Entry" > 0) AND (CurrFieldNo <> 0) THEN
ERROR(Text046,FIELDCAPTION("Unit Price"));
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Hiện có mã 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
...Thay thế mã 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
Text046@1100 : TextConst 'ENU=You cannot modify the document because it is based on a service contract.';
...
Đ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 R2
-
Microsoft Dynamics NAV 2009 Service Pack 1
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".
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.