Các bài viết được Xuất bản Nhanh cung cấp thông tin trực tiếp từ bên trong tổ chức hỗ trợ của Microsoft. Thông tin được chứa ở đây được tạo ra để đáp ứng với các chủ đề mới nổi hoặc duy nhất, hoặc được dự định để bổ sung thông tin cơ sở kiến thức khác.
Bài viết này áp dụng cho Microsoft Dynamics NAV dành cho ngôn ngữ tiếng Ý (it).
Triệu chứng
Giả sử bạn có hóa đơn sử dụng nhiều mức giá và phương thức thanh toán của hóa đơn sử dụng số tài khoản số dư trong phiên bản Tiếng Ý của Microsoft Dynamics NAV. Khi bạn gửi hóa đơn bằng cách sử dụng thanh toán tự động, Microsoft Dynamics NAV tạo nhiều dòng cho hóa đơn và một dòng cho thanh toán. Tuy nhiên, chỉ có hóa đơn đầu tiên được áp dụng và đóng. Các hóa đơn khác vẫn đang mở.
Sự cố này xảy ra trong các sản phẩm sau:
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 2009 Gói Dịch vụ 1
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 2009
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 5.0 Gói Dịch vụ 1
Giải pháp
Thông tin cập nhật nóng
Hotfix được hỗ trợ hiện có sẵn từ Microsoft. Tuy nhiên, nó chỉ là nhằm sửa chữa vấn đề được mô tả trong bài viết này. Áp dụng nó chỉ cho hệ thống đang gặp này cụ thể vấn đề. Hotfix này có thể nhận được thử nghiệm bổ sung. Do đó, nếu bạn không bị ảnh hưởng nghiêm trọng bởi sự cố này, chúng tôi khuyên bạn nên đợi gói dịch vụ Microsoft Dynamics NAV tiếp theo 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, các khoản phí thường phát sinh đối với các cuộc gọi hỗ trợ có thể bị hủy nếu Chuyên gia Hỗ trợ Kỹ thuật dành cho Microsoft Dynamics và các sản phẩm liên quan xác định rằng một bản cập nhật cụ thể sẽ giải quyết sự cố của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các câu hỏi và sự cố hỗ trợ bổ sung không đủ điều kiện cho bản cập nhật cụ thể được đề cập.
Thông tin cài đặt
Microsoft chỉ cung cấp các ví dụ lập trình để minh họa mà không cần bảo hành dù là rõ ràng hay ngụ ý. Điều này bao gồm, nhưng không giới hạn ở, bảo hành ngụ ý về khả năng bán được hoặc sự thích hợp cho một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen thuộc với ngôn ngữ lập trình đang được chứng minh và với các công cụ được sử dụng để tạo và gỡ lỗi thủ tục. Các kỹ sư hỗ trợ của Microsoft có thể giúp giải thích chức năng của một quy trình cụ thể, nhưng họ sẽ không sửa đổi các ví dụ này để cung cấp chức năng bổ sung hoặc quy trình xây dựng để đáp ứng các yêu cầu cụ thể của bạn.
Lưu ý Trước khi bạn cài đặt hotfix này, hãy xác minh rằng tất cả người dùng máy khách Microsoft Navision đã được đăng xuất khỏi hệ thống. Điều này bao gồm người dùng máy khách Dịch vụ Ứng dụng Microsoft Navision (NAS). Bạn nên là người dùng khách duy nhất đăng nhập khi bạn thực hiện hotfix này.
Để thực hiện 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 gán tài khoản người dùng trong cửa sổ Đăng nhập Windows hoặc trong cửa sổ Đăng nhập Cơ sở dữ liệu. Nếu tài khoản người dùng không thể được gán ID vai trò "SIÊU", bạn phải xác minh rằng tài khoản người dùng có các quyền sau đây:
- Quyền Sửa đổi đối với đối tượng mà bạn sẽ thay đổi.
- Quyền Thực thi đối với đối tượng ID Đối tượng Hệ thống 5210 và đối với đối tượng ID Đối tượng Hệ thống 9015.
Lưu ý Bạn không phải có quyền đối với các kho dữ liệu trừ khi bạn phải thực hiện sửa chữa dữ liệu.
Thay đổi mã
Lưu ý Luôn kiểm tra các bản sửa lỗi mã trong môi trường được kiểm soát trước khi bạn áp dụng các bản sửa lỗi cho máy tính sản xuất của bạn.
Để áp dụng bản cập nhật nóng này, hãy làm theo các bước sau:
Thay đổi phím trong bảng Cust. Ledger Entry (21) như sau:
Tài khoản hiện có- Đã bật:Có
- Khóa: Loại Tài liệu, Số Tài liệu, Số Tài liệu
- SumIndexFields:
Thay thế một
- Đã bật:Có
- Khóa: Loại Tài liệu, Số Tài liệu, Số Tài liệu
- SumIndexFields: Pmt Còn lại. Đĩa. Có thể
Thay đổi khóa trong bảng Mục nhập Sổ cái Nhà cung cấp (25) như sau:
Tài khoản hiện có- Đã bật:Có
- Khóa: Loại tài liệu, số tài liệu, sự kiện tài liệu, nhà cung cấp số.
- SumIndexFields:
Thay thế một
- Đã bật:Có
- Khóa: Loại tài liệu, số tài liệu, sự kiện tài liệu, nhà cung cấp số.
- SumIndexFields: Pmt Còn lại. Đĩa. Có thể
Thêm biến cục bộ trong hàm ApplyCustLedgEntry trong Gen. Jnl.-Post Dòng codeunit (12), và sau đó xác định các biến như sau:
- Tên: PaymentTerms
- DataType: Record
- Loại con: Điều khoản Thanh toán
Thay đổi mã trong hàm ApplyCustLedgEntry trong Gen. Jnl.-Post Dòng codeunit (12) như sau:
Mã hiện có 1... END ELSE ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision"; ApplyingDate := GenJnlLine."Posting Date"; IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Mã thay thế 1
... END ELSE ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision"; ApplyingDate := GenJnlLine."Posting Date"; // Add the following lines. Cust.GET(GenJnlLine."Account No."); IF Cust."Payment Terms Code" <> '' THEN BEGIN PaymentTerms.GET(Cust."Payment Terms Code"); PaymentTerms.CALCFIELDS("Payment Nos."); END; // End of the added lines. IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Mã hiện có 2
... (OldCustLedgEntry.COUNT=1) THEN GenJnlLine."Applies-to Occurrence No." := 1; // Delete the following line. OldCustLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No."); OldCustLedgEntry.SETRANGE(Open,TRUE); // Delete the following lines. OldCustLedgEntry.FINDFIRST; OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE); OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldCustLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldCustLedgEntry."Currency Code", GenJnlLine."Account Type"::Customer, TRUE); TempOldCustLedgEntry := OldCustLedgEntry; TempOldCustLedgEntry.INSERT; // End of the deleted lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Mã thay thế 2
... (OldCustLedgEntry.COUNT=1) THEN GenJnlLine."Applies-to Occurrence No." := 1; OldCustLedgEntry.SETRANGE(Open,TRUE); // Add the following lines. IF OldCustLedgEntry.FINDSET THEN REPEAT OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE); OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldCustLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldCustLedgEntry."Currency Code", GenJnlLine."Account Type"::Customer, TRUE); TempOldCustLedgEntry := OldCustLedgEntry; TempOldCustLedgEntry.INSERT; UNTIL OldCustLedgEntry.NEXT = 0; IF NOT TempOldCustLedgEntry.FINDSET THEN EXIT; // End of the added lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Mã hiện có 3
... TempOldCustLedgEntry.DELETE; // Find the next old entry for application of the new entry // Delete the following line. IF GenJnlLine."Applies-to Doc. No." <> '' THEN Completed := TRUE ...Mã thay thế 3
... TempOldCustLedgEntry.DELETE; // Find the next old entry for application of the new entry // Add the following line. IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1) THEN Completed := TRUE ...Thêm biến cục bộ trong hàm ApplyVendLedgEntry trong Gen. Jnl.-Post Dòng codeunit (12), và sau đó xác định các biến như sau:
- Tên: PaymentTerms
- DataType: Record
- Loại con: Điều khoản Thanh toán
Thay đổi mã trong hàm ApplyVendLedgEntry trong Gen. Jnl.-Post Dòng codeunit (12) như sau:
Mã hiện có 1... ApplyingDate := GenJnlLine."Posting Date"; IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Mã thay thế 1
... ApplyingDate := GenJnlLine."Posting Date"; // Add the following lines. Vend.GET(GenJnlLine."Account No."); IF Vend."Payment Terms Code" <> '' THEN BEGIN PaymentTerms.GET(Vend."Payment Terms Code"); PaymentTerms.CALCFIELDS("Payment Nos."); END; // End of the added lines. IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Mã hiện có 2
... GenJnlLine."Applies-to Occurrence No." := 1; // Delete the following line. OldVendLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No."); OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.SETRANGE("On Hold",''); // Delete the following lines. OldVendLedgEntry.FINDFIRST; OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldVendLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, TRUE); TempOldVendLedgEntry := OldVendLedgEntry; TempOldVendLedgEntry.INSERT; // End of the deleted lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Mã thay thế 2
... GenJnlLine."Applies-to Occurrence No." := 1; OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.SETRANGE("On Hold",''); // Add the following lines. IF OldVendLedgEntry.FINDSET THEN REPEAT OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldVendLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, TRUE); TempOldVendLedgEntry := OldVendLedgEntry; TempOldVendLedgEntry.INSERT; UNTIL OldVendLedgEntry.NEXT = 0; IF NOT TempOldVendLedgEntry.FINDSET THEN EXIT; // End of the added lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Mã hiện có 3
... TempOldVendLedgEntry.DELETE; // Find the next old entry to apply to the new entry // Delete the following line. IF GenJnlLine."Applies-to Doc. No." <> '' THEN Completed := TRUE ...Mã thay thế 3
... TempOldVendLedgEntry.DELETE; // Find the next old entry to apply to the new entry // Add the following line. IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1) THEN Completed := TRUE ...Thêm biến cục bộ trong trình kích hoạt OnRun trong codeunit Sales-Post (80), sau đó xác định biến số như sau:
- Tên: TotalRemainPmtDiscPossible
- DataType: Thập phân
Thay đổi mã trong trình kích hoạt OnRun trong codeunit Sales-Post (80) như sau:
Mã hiện có 1... // Balancing account IF "Bal. Account No." <> '' THEN BEGIN Window.UPDATE(5,1); CustLedgEntry.FINDLAST; GenJnlLine.INIT; ...Mã thay thế 1
... // Balancing account IF "Bal. Account No." <> '' THEN BEGIN Window.UPDATE(5,1); // Add the following lines. CustLedgEntry.RESET; CustLedgEntry.SETCURRENTKEY("Document Type","Document No."); CustLedgEntry.SETRANGE("Document Type","Document Type"); CustLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo); CustLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); TotalRemainPmtDiscPossible := CustLedgEntry."Remaining Pmt. Disc. Possible"; // End of the added lines. CustLedgEntry.FINDLAST; GenJnlLine.INIT; ...Mã hiện có 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := // Delete the following line. TotalSalesLine."Amount Including VAT" + CustLedgEntry."Remaining Pmt. Disc. Possible"; GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := GenJnlLine.Amount; ...Mã thay thế 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := // Add the following line. TotalSalesLine."Amount Including VAT" + TotalRemainPmtDiscPossible; GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := GenJnlLine.Amount; ...Thêm biến cục bộ trong trình kích hoạt OnRun trong codeunti Purch.-Post (90), sau đó xác định biến số như sau:
- Tên: TotalRemainPmtDiscPossible
- DataType: Thập phân
Thay đổi mã trong trình kích hoạt OnRun trong codeuntiPurch.-Post (90) như sau:
Mã hiện có 1... GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Balancing account IF "Bal. Account No." <> '' THEN BEGIN IF GUIALLOWED THEN Window.UPDATE(5,1); VendLedgEntry.FINDLAST; GenJnlLine.INIT; GenJnlLine."Posting Date" := "Posting Date"; ...Mã thay thế 1
... GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Balancing account IF "Bal. Account No." <> '' THEN BEGIN IF GUIALLOWED THEN Window.UPDATE(5,1); // Add the following lines. VendLedgEntry.RESET; VendLedgEntry.SETCURRENTKEY("Document Type","Document No."); VendLedgEntry.SETRANGE("Document Type","Document Type"); VendLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo); VendLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); TotalRemainPmtDiscPossible := VendLedgEntry."Remaining Pmt. Disc. Possible"; // End of the added lines. VendLedgEntry.FINDLAST; GenJnlLine.INIT; GenJnlLine."Posting Date" := "Posting Date"; ...Mã hiện có 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" + // Delete the following line. VendLedgEntry."Remaining Pmt. Disc. Possible"; GenJnlLine.Correction := Correction; GenJnlLine."Source Currency Code" := "Currency Code"; ...Mã thay thế 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" + // Add the following line. TotalRemainPmtDiscPossible; GenJnlLine.Correction := Correction; GenJnlLine."Source Currency Code" := "Currency Code"; ...
Điều kiện tiên quyết
Bạn phải cài đặt một trong các sản phẩm sau để áp dụng bản cập nhật nóng này:
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 2009 Gói Dịch vụ 1
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 2009
- Phiên bản tiếng Ý của Microsoft Dynamics NAV 5.0 Gói Dịch vụ 1
Loại bỏ thông tin
Bạn không thể loại bỏ hotfix này.
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".
MICROSOFT VÀ/HOẶC CÁC NHÀ CUNG CẤP CỦA MICROSOFT KHÔNG ĐƯA RA TUYÊN BỐ HOẶC BẢO ĐẢM NÀO VỀ TÍNH PHÙ HỢP, ĐỘ TIN CẬY HOẶC TÍNH CHÍNH XÁC CỦA THÔNG TIN CÓ TRONG CÁC TÀI LIỆU VÀ CÁC ĐỒ HỌA LIÊN QUAN ĐƯỢC PHÁT HÀNH TRÊN TRANG WEB NÀY (CÁC "TÀI LIỆU") CHO BẤT KỲ MỤC ĐÍCH NÀO.
CÁC TÀI LIỆU NÀY CÓ THỂ BAO GỒM CÁC LỖI KỸ THUẬT KHÔNG CHÍNH XÁC HOẶC LỖI ĐÁNH MÁY VÀ CÓ THỂ ĐƯỢC SỬA ĐỔI BẤT CỨ LÚC NÀO MÀ KHÔNG CẦN THÔNG BÁO. TRONG PHẠM VI TỐI ĐA ĐƯỢC LUẬT HIỆN HÀNH CHO PHÉP, MICROSOFT VÀ/HOẶC CÁC NHÀ CUNG CẤP CỦA MICROSOFT TỪ CHỐI VÀ LOẠI TRỪ TẤT CẢ CÁC ĐẠI DIỆN, BẢO HÀNH VÀ ĐIỀU KIỆN CHO DÙ RÕ RÀNG, NGỤ Ý HOẶC THEO LUẬT ĐỊNH, BAO GỒM NHƯNG KHÔNG GIỚI HẠN Ở CÁC ĐẠI DIỆN, BẢO HÀNH HOẶC CÁC ĐIỀU KIỆN CỦA CHỨC DANH, KHÔNG VI PHẠM, ĐIỀU KIỆN HOẶC CHẤT LƯỢNG THỎA ĐÁNG, KHẢ NĂNG BÁN ĐƯỢC VÀ TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ, LIÊN QUAN ĐẾN CÁC TÀI LIỆU.