Bài viết này áp dụng cho Microsoft Dynamics NAV dành cho ngôn ngữ tiếng Séc (cz).
Triệu chứng
Giả sử bạn đăng một hóa đơn mua hàng bằng ngoại tệ bằng cách sử dụng một giá trị gia tăng thêm thuế số tiền (LCY) trong phiên bản Tiếng Séc của Microsoft Dynamics NAV 2009 R2. Sau đó, bạn đăng một khoản thanh toán bằng cách sử dụng một tỷ giá hối đoái khác. Trong trường hợp này, khi bạn áp dụng thanh toán hóa đơn mua hàng, sự khác biệt số tiền VAT giữa vat gốc và vat điều chỉnh được đăng tài khoản làm tròn thay vì các nhận ra/mất tài khoản.
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 2009 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. 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ể. Tuy nhiên, họ sẽ không sửa đổi các ví dụ này để cung cấp chức năng bổ sung hoặc xây dựng các thủ tục để đá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 Dynamics NAV đã được đăng xuất khỏi hệ thống. Các dịch vụ này bao gồm các dịch vụ Microsoft Dynamics NAV Application Server (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 System Object ID 5210 và ID Đối tượng Hệ thống 9015
Đối tượng.
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.
Để giải quyết vấn đề này, hãy làm theo các bước sau:
Thay đổi mã trong hàm InsertVAT trong Gen. Jnl.-Post Dòng codeunit (12) như sau:
Mã hiện có... VATEntry."Customs Procedure Code" := "Customs Procedure Code"; VATEntry."Registration No." := "Registration No."; // Delete the following lines. IF "VAT Difference" = 0 THEN VATDifferenceLCY := 0 ELSE IF "Currency Code" = '' THEN VATDifferenceLCY := "VAT Difference" ELSE VATDifferenceLCY := ROUND( CurrExchRate.ExchangeAmtFCYToLCY( "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); IF ("VAT Amount (LCY)" <> CalculatedVATAmountLCY) AND ("Currency Code" <> '') THEN VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmountLCY; // End of the deleted lines. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN ...Mã thay thế
... VATEntry."Customs Procedure Code" := "Customs Procedure Code"; VATEntry."Registration No." := "Registration No."; // Add the following line. VATDifferenceLCY := CalcVATDiffLCY; // End of the added line. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN ...Thay đổi mã trong hàm CalcCurrencyRealizedGainLoss trong Gen. Jnl.-Post Dòng codeunit (12) như sau:
Mã Existig... RealizedGainLossLCY := // Delete the following line. AppliedAmountLCY - ROUND(AppliedAmount / CVLedgEntryBuf."Adjusted Currency Factor"); // End of the deleted line. IF RealizedGainLossLCY <> 0 THEN BEGIN ...Mã thay thế
... RealizedGainLossLCY := // Add the following lines. AppliedAmountLCY - ROUND(AppliedAmount / CVLedgEntryBuf."Adjusted Currency Factor") + CalcVATDiffFromVATEntry(CVLedgEntryBuf); // End of the added lines. IF RealizedGainLossLCY <> 0 THEN BEGIN ...Tạo hai hàm mới trong Gen. Jnl.-Post Dòng codeunit (12) như sau:
LOCAL PROCEDURE CalcVATDiffFromVATEntry@1220002(CVLedgEntryBuf@1220002 : Record 382) VATDiffAmt : Decimal; VAR CalcVATEntry@1220001 : Record 254; BEGIN IF NOT (CVLedgEntryBuf."Document Type" IN [CVLedgEntryBuf."Document Type"::Invoice,CVLedgEntryBuf."Document Type"::"Credit Memo"]) THEN EXIT; WITH CalcVATEntry DO BEGIN SETRANGE("Transaction No.",CVLedgEntryBuf."Transaction No."); IF FINDSET THEN REPEAT VATDiffAmt := VATDiffAmt + "VAT Difference"; UNTIL NEXT = 0; END; END; LOCAL PROCEDURE CalcVATDiffLCY@1220000() VATDifferenceLCY : Decimal; BEGIN WITH GenJnlLine DO BEGIN IF ("VAT Difference" = 0) AND ("VAT Difference (LCY)" = 0) THEN EXIT(0); IF ("VAT Amount (LCY)" <> CalculatedVATAmountLCY) AND ("Currency Code" <> '') THEN EXIT("VAT Amount (LCY)" - CalculatedVATAmountLCY); IF ("VAT Difference" = 0) AND ("VAT Difference (LCY)" <> 0) THEN VATDifferenceLCY := "VAT Difference (LCY)" ELSE IF "Currency Code" = '' THEN VATDifferenceLCY := "VAT Difference" ELSE VATDifferenceLCY := ROUND( CurrExchRate.ExchangeAmtFCYToLCY( "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); END; END;Thay đổi mã trong hàm OnRun trong codeunit Sales-Post (80) như sau:
Mã hiện có... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; GenJnlLine."VAT Posting" := GenJnlLine."VAT Posting"::"Manual VAT Entry"; ...Mã thay thế
... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; // Add the following line. GenJnlLine."VAT Difference (LCY)" := InvPostingBuffer[1]."VAT Difference (LCY)"; // End of the added line. GenJnlLine."VAT Posting" := GenJnlLine."VAT Posting"::"Manual VAT Entry"; ...Thay đổi mã trong hàm OnRun trong đơn vị mã Purch.-Post (90) như sau:
Mã hiện có... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; TransferNonDedVAT(GenJnlLine,InvPostingBuffer[1]); ...Mã thay thế
... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; // Add the following lines. GenJnlLine."VAT Difference (LCY)" := InvPostingBuffer[1]."VAT Difference (LCY)"; // End of the added line. TransferNonDedVAT(GenJnlLine,InvPostingBuffer[1]); ...
Điều kiện tiên quyết
Bạn phải cài đặt phiên bản Tiếng Séc của Microsoft Dynamics NAV 2009 R2 để áp dụng bản cập nhật nóng này.
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".
Lưu ý Đây là bài viết "PHÁT HÀNH NHANH" được tạo trực tiếp từ trong tổ chức hỗ trợ của Microsoft. Thông tin có trong tài liệu này được cung cấp tương tự để đáp ứng các vấn đề mới xuất hiện. Do tốc độ làm cho nó có sẵn, các tài liệu có thể bao gồm 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. Hãy xem Điều khoản Sử dụng để biết những điều cần cân nhắc khác.