如果你在 Microsoft Dynamics NAV 中從客戶卡建立銷售訂單,銷售訂單中的「付款折扣百分比」欄位為零

套用到
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0 Service Pack 1

快速發佈文章直接提供來自 MICROSOFT 支援組織內部的資訊。 本文所含資訊是針對新興或獨特主題所創建,或旨在補充其他知識庫資訊。

本文適用於所有國家及語言地區的 Microsoft Dynamics NAV。

症狀

請考量以下情況。 Microsoft Dynamics NAV 2009 中有一個客戶的付款期限代碼。 你從客戶卡建立銷售訂單。 在這種情況下,銷售訂單標頭中的「付款折扣百分比」欄位為零。 此外,如果你晚點才發布銷售訂單,則不會計算付款折扣。

解決方式

Hotfix 資訊

Microsoft 現在已經支援熱修補程式。 然而,這僅是為了修正本文所描述的問題。 只應用在遇到這個特定問題的系統上。 此熱修補可能會進行額外測試。 因此,如果您未受到此問題嚴重影響,我們建議您等待下一個 Microsoft Dynamics NAV 2009 服務包或包含此熱修補的 Microsoft Dynamics NAV 版本。

注意:在特殊情況下,若 Microsoft Dynamics 及相關產品的技術支援專業人員判斷特定更新能解決您的問題,通常因支援電話而產生的費用可能會被取消。 一般來說,如果有所描述之特定更新無法解決的其他支援問題,才會收取支援費用。

          

安裝資訊

Microsoft 僅提供圖例的程式設計範例,不含明示或暗示的擔保。 這包括 (但不限於) 適用于特定目的之可操作性或適用性的暗示擔保。 本文假設您熟悉正在示範的程式設計語言,以及用來建立和進行程式偵錯工具的工具。 Microsoft 技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。

注意:安裝此熱修補程式前,請確認所有 Microsoft Navision 用戶端使用者都已登出系統。 這包括Microsoft Navision 應用服務 (NAS) 用戶端使用者。 當你實施這個熱修補時,應該只有你一個登入的客戶端使用者。

要實作這個熱修補,你必須擁有開發者授權。

我們建議在 Windows 登入視窗或資料庫登入視窗中,將使用者帳號分配「SUPER」角色 ID。 若使用者帳號無法被指派「SUPER」角色 ID,您必須驗證該帳號擁有以下權限:

  • 你要更改的物件的修改權限。
  • 系統物件 ID 5210 的執行權限,以及系統物件 ID 9015 的執行權限。

                
注意:除非你必須進行資料修復,否則你不必擁有資料儲存的權利。

法規變更

注意:在將修正程式套用到生產電腦之前,務必在受控環境中測試修正。

要安裝此 codefix,請將銷售標頭表中的代碼 (36) ,以及購買標頭表 (38) 如下。

注意:以下步驟顯示你必須對銷售標頭表 (36) 做變更。 購買標頭表 (38) 也必須做同樣的調整。

  1. 新增一個全域變數:

    名稱:更新文件日期
    資料型別:布林

  2. 在「帳單給客戶編號」中, - OnValidate () “ 函式,修改程式碼如下。

    現行法規1

    …
    IF NOT SkipBillToContact THEN
      "Bill-to Contact" := Cust.Contact;
    "Payment Terms Code" := Cust."Payment Terms Code";
    IF "Document Type" = "Document Type"::"Credit Memo" THEN BEGIN
    …
    

    替換代碼1

    …
    IF NOT SkipBillToContact THEN
      "Bill-to Contact" := Cust.Contact;
    "Payment Terms Code" := Cust."Payment Terms Code";
    "Prepmt. Payment Terms Code" := Cust."Payment Terms Code";
    IF "Document Type" = "Document Type"::"Credit Memo" THEN BEGIN
    …
    

    現有的第二號法規

    …
      DATABASE::"Customer Template","Bill-to Customer Template Code");
    VALIDATE("Payment Terms Code");
    VALIDATE("Payment Method Code");
    VALIDATE("Currency Code");
    IF (xRec."Sell-to Customer No." = "Sell-to Customer No.") AND
    …
    

    替換代碼2

    …
      DATABASE::"Customer Template","Bill-to Customer Template Code");
    VALIDATE("Payment Terms Code");
    VALIDATE("Prepmt. Payment Terms Code");
    VALIDATE("Payment Method Code");
    VALIDATE("Currency Code");
    IF (xRec."Sell-to Customer No." = "Sell-to Customer No.") AND
    …
    
  3. 在「付款條款代碼 - OnValidate () 」功能中,請更改代碼如下。

    現有程式碼

    IF ("Payment Terms Code" <> '') AND ("Document Date" <> 0D) THEN BEGIN
      PaymentTerms.GET("Payment Terms Code");
      IF (("Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"]) AND
          NOT PaymentTerms."Calc. Pmt. Disc. on Cr. Memos")
      THEN BEGIN
        VALIDATE("Due Date","Document Date");
        VALIDATE("Pmt. Discount Date",0D);
        VALIDATE("Payment Discount %",0);
      END ELSE BEGIN
        "Due Date" := CALCDATE(PaymentTerms."Due Date Calculation","Document Date");
        "Pmt. Discount Date" := CALCDATE(PaymentTerms."Discount Date Calculation","Document Date");
      IF xRec."Document Date"="Document Date" THEN
         VALIDATE("Payment Discount %",PaymentTerms."Discount %")
      END;
    END ELSE BEGIN
      VALIDATE("Due Date","Document Date");
    IF xRec."Document Date"="Document Date" THEN BEGIN
      VALIDATE("Pmt. Discount Date",0D);
      VALIDATE("Payment Discount %",0);
    END;
    …
    

    替換代碼

    IF ("Payment Terms Code" <> '') AND ("Document Date" <> 0D) THEN BEGIN
      PaymentTerms.GET("Payment Terms Code");
      IF (("Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"]) AND
          NOT PaymentTerms."Calc. Pmt. Disc. on Cr. Memos")
      THEN BEGIN
        VALIDATE("Due Date","Document Date");
        VALIDATE("Pmt. Discount Date",0D);
        VALIDATE("Payment Discount %",0);
      END ELSE BEGIN
        "Due Date" := CALCDATE(PaymentTerms."Due Date Calculation","Document Date");
        "Pmt. Discount Date" := CALCDATE(PaymentTerms."Discount Date Calculation","Document Date");
        IF NOT UpdateDocumentDate THEN
         VALIDATE("Payment Discount %",PaymentTerms."Discount %")
      END;
    END ELSE BEGIN
      VALIDATE("Due Date","Document Date");
    IF NOT UpdateDocumentDate THEN BEGIN
      VALIDATE("Pmt. Discount Date",0D);
      VALIDATE("Payment Discount %",0);
    END;
    …
    
  4. 在「文件日期 - 驗證 () 」函式中,請更改程式碼如下。

    現有程式碼

    VALIDATE("Payment Terms Code");
    VALIDATE("Prepmt. Payment Terms Code");
    
    

    替換代碼

    IF xRec."Document Date" <> "Document Date" THEN
      UpdateDocumentDate := TRUE;
    VALIDATE("Payment Terms Code");
    VALIDATE("Prepmt. Payment Terms Code");
    
    
  5. 在《Prepmt》中,付款條款代碼 - OnValidate () 」功能,請更改代碼如下。

    現有程式碼

    …
      END ELSE BEGIN
        "Prepayment Due Date" := CALCDATE(PaymentTerms."Due Date Calculation","Document Date");
        "Prepmt. Pmt. Discount Date" := CALCDATE(PaymentTerms."Discount Date Calculation","Document Date");
        VALIDATE("Prepmt. Payment Discount %",PaymentTerms."Discount %")
      END;
    END ELSE BEGIN
      VALIDATE("Prepayment Due Date","Document Date");
      VALIDATE("Prepmt. Pmt. Discount Date",0D);
      VALIDATE("Prepmt. Payment Discount %",0);
    END;
    

    替換代碼

    …
      END ELSE BEGIN
        "Prepayment Due Date" := CALCDATE(PaymentTerms."Due Date Calculation","Document Date");
        "Prepmt. Pmt. Discount Date" := CALCDATE(PaymentTerms."Discount Date Calculation","Document Date");
        IF NOT UpdateDocumentDate THEN
          VALIDATE("Prepmt. Payment Discount %",PaymentTerms."Discount %")
      END;
    END ELSE BEGIN
      VALIDATE("Prepayment Due Date","Document Date");
      IF NOT UpdateDocumentDate THEN BEGIN
        VALIDATE("Prepmt. Pmt. Discount Date",0D);
        VALIDATE("Prepmt. Payment Discount %",0);
      END;
    END;
    

先決條件

要安裝此代碼修正,您必須安裝以下產品之一:

  • Microsoft Dynamics NAV 5.0 服務包 1 (SP1)
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV SP1

重新啟動資訊

套用這個代碼修正後,你不需要重啟電腦。

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

更多資訊

MICROSOFT及/或其供應商對本網站所發布文件及相關圖像中所載資訊的適用性、可靠性或準確性 (「資料」) 不作任何保證或保證。

資料可能包含技術性不準確或印刷錯誤,且可隨時修訂,恕不另行通知。 在適用法律允許的最大範圍內,MICROSOFT 及/或其供應商否認並排除所有明示、默示或法定的陳述、保證及條件,包括但不限於所有權、非侵權、令人滿意的狀態或品質、適銷性及特定用途的適用性。