DTA 建議供應商付款報告 (3010546) 與 LSV 建議收款報告指出瑞士版 Microsoft Dynamics NAV 中存在錯誤行 (3010831)

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

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

  • 法語 (瑞士) (法語-瑞士)
  • 德國 (瑞士) (gr-ch)
  • 義大利 (瑞士) (it-ch)

症狀

假設你在瑞士版的 Microsoft Dynamics NAV 中登錄購買發票或銷售發票。 當你在付款日記帳上執行 DTA 建議供應商付款報告 (3010546) ,或在 LSV 日記帳清單上 (3010831) LSV 建議收款報告,並使用比發票過帳日期早的過帳日期時,會建議錯誤的行。 因此,詳細的客戶帳本分錄或供應商帳目後的詳細報帳日期是錯誤的。 有時候你甚至無法發佈這些線路,卻會收到持續的錯誤訊息。
此問題發生於以下產品:

  • 瑞士版的 Microsoft Dynamics NAV 2009 服務包 1 (SP1)
  • Microsoft Dynamics 2009 的瑞士版 NAV
  • 瑞士版的 Microsoft Dynamics NAV 5.0 服務包 1 (SP1)
  • Microsoft Dynamics NAV 5.0 的瑞士版本

      

原因

此問題發生於 DTA 建議供應商付款報告 (3010546) 及 LSV 建議收款報告 (3010831) 中缺少支票。 此支票的引入是為了避免產生比發票入帳日期還早的付款行。

解決方式

Hotfix 資訊

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

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

            
          

安裝資訊

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

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

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

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

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

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

法規變更

注意:在將修正程式套用到生產電腦之前,務必在受控環境中測試修正。
如果要解決這個問題,請依照下列步驟執行。

  1. 在 DTA 建議供應商付款報告中新增一個全域變數, (3010546) ,然後指定該變數如下:

    • 姓名:VendorLedgEntryTemp@1150058
    • 資料型態: 記錄
    • 子類型供應商帳本輸入
    • 臨時是的
  2. 在 DTA 建議供應商付款報告 (3010546) 新增一個文字常數,然後指定該常數如下:

    • 姓名:Text50000@1150064
    • 恆定值:ENU=有一個或多個項目未提出付款建議,因為條目的過帳日期晚於DTA建議供應商收費批次工作請求視窗的過戶日期。 你想看這些參賽作品嗎?
  3. 在 DTA 建議供應商付款報告的 OnPreReport 觸發器中加入以下代碼, (3010546) :

    VendorLedgEntryTemp.DELETEALL;
    
  4. 在 DTA 建議供應商付款報告 (3010546) 的 OnPostReport 觸發器中加入以下程式碼:

    COMMIT;
    IF NOT VendorLedgEntryTemp.ISEMPTY THEN
      IF CONFIRM(Text50000) THEN
        FORM.RUNMODAL(0,VendorLedgEntryTemp);
    
  5. 在 DTA 建議供應商付款報告中,將 Vendor - OnPostDataItem 觸發器的程式碼更改為如下 (3010546) :
    現有程式碼

    d.CLOSE;
    IF NoOfLinesInserted > 0 THEN BEGIN
      WriteBalAccountLine(ToGlLine);
      MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY);
      IF NoOfVendorsWithCM > 0 THEN
        MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt)
    END ELSE
      MESSAGE(Text018,FromDueDate,ToDueDate);
    

    替換代碼

    d.CLOSE;
    IF VendorLedgEntryTemp.ISEMPTY THEN BEGIN
      IF NoOfLinesInserted > 0 THEN BEGIN
        WriteBalAccountLine(ToGlLine);
        MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY);
        IF NoOfVendorsWithCM > 0 THEN
          MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt)
      END ELSE
        MESSAGE(Text018,FromDueDate,ToDueDate);
    END;
    
  6. 在 DTA 建議供應商付款報告中,將 WritePmtSuggestLines 函式中的程式碼 (3010546) 如下:
    現行法規1

    // CH2316.begin
     VendorLedgerEntryNo := VendEntry."Entry No.";
    // CH2316.end
    WITH ToGlLine DO BEGIN
      INIT;
    ...
    

    替換代碼1

    IF VendEntry."Posting Date" <= PostDate THEN BEGIN // CH0001
      // CH2316.begin
      VendorLedgerEntryNo := VendEntry."Entry No.";
      // CH2316.end
      WITH ToGlLine DO BEGIN
        INIT;
    ...
    

    現有的第二號法規

    ...
    VendorLedgerEntry2.GET(VendorLedgerEntryNo);
    VendorLedgerEntry2."On Hold" := 'DTA';
    VendorLedgerEntry2."Accepted Payment Tolerance" := 0;
    VendorLedgerEntry2.MODIFY;
    // CH2316.END
    

    替換代碼2

    ...
      VendorLedgerEntry2.GET(VendorLedgerEntryNo);
      VendorLedgerEntry2."On Hold" := 'DTA';
      VendorLedgerEntry2."Accepted Payment Tolerance" := 0;
      VendorLedgerEntry2.MODIFY;
    // CH2316.END
    END ELSE BEGIN
      VendorLedgEntryTemp := VendEntry;
      VendorLedgEntryTemp.INSERT;
    END;
    
  7. 在 LSV 建議集合報告中新增一個全域變數 (3010831) ,然後指定該變數如下:

    • 姓名:TempCustLedgEntry@1150042
    • 資料型態: 記錄
    • 子類型客戶帳本分錄
    • 臨時是的
  8. 在 LSV 建議集合報告 (3010831) 中新增一個文字常數,然後指定該常數如下:

    • 姓名:Text50000@1150064
    • 恆定值:ENU=有一個或多個條目未提出收集建議,因為條目的發布日期晚於 LSV Collect Suggestions 批次工作請求視窗中的收集日期。 你想看這些參賽作品嗎?
  9. 在 LSV 建議收集報告中, (3010831) OnPreReport 觸發器的程式碼更改如下:
    現有程式碼

    IF LsvJournal."LSV Bank Code" = '' THEN
      ERROR(Text020);
    

    替換代碼

    IF LsvJournal."LSV Bank Code" = '' THEN
      ERROR(Text020);
    TempCustLedgEntry.DELETEALL;
    
  10. 在 LSV 建議收集報告的 OnPostReport 觸發器中加入以下代碼 (3010831) :

    COMMIT;
    IF NOT TempCustLedgEntry.ISEMPTY THEN
      IF CONFIRM(Text50000) THEN
        FORM.RUNMODAL(0,TempCustLedgEntry);
    
  11. 在 LSV 建議收集報告中,請將 Customer - OnPostDataItem 觸發器的程式碼 (3010831) 如下:
    現有程式碼

    d.CLOSE;
    IF NoOfLinesInserted > 0 THEN BEGIN
      MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt);
      IF LsvJournal."LSV Journal Description" = '' THEN BEGIN
        LsvJournal."LSV Journal Description" :=
          FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS)
            ,-MAXSTRLEN(LsvJournal."LSV Journal Description"));
      END;
      LsvJournal."Credit Date" := CollectionDate;
      LsvJournal.MODIFY;
      // CH2813.BEGIN
      IF NoOfCustWithCreditMemo > 0 THEN
        IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN
          ERROR(Text014);
      // CH2813.END
    END ELSE
      MESSAGE(Text015,FromDueDate,ToDueDate);
    

    替換代碼

    d.CLOSE;
    IF TempCustLedgEntry.ISEMPTY THEN BEGIN // CH0001
      IF NoOfLinesInserted > 0 THEN BEGIN
        MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt);
        IF LsvJournal."LSV Journal Description" = '' THEN BEGIN
          LsvJournal."LSV Journal Description" :=
            FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS)
              ,-MAXSTRLEN(LsvJournal."LSV Journal Description"));
        END;
        LsvJournal."Credit Date" := CollectionDate;
        LsvJournal.MODIFY;
        // CH2813.BEGIN
        IF NoOfCustWithCreditMemo > 0 THEN
          IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN
            ERROR(Text014);
        // CH2813.END
      END ELSE
        MESSAGE(Text015,FromDueDate,ToDueDate);
    END;
    
  12. 在 LSV 建議集合報告中,將 WritePmtSuggestLines 函式中的程式碼 (3010831) 如下:
    現行法規1

    // Collection amt: Cust. Entry amount - Cash disc. possible
    WITH ToLSVJourLine DO BEGIN
      // Ensure, that the Entry is only once in the LSV Journal Line
      LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No.");
      LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No.");
    ...
    

    替換代碼1

    // Collection amt: Cust. Entry amount - Cash disc. possible
    WITH ToLSVJourLine DO BEGIN
      IF CustLedgEntry."Posting Date" <= CollectionDate THEN BEGIN
        // Ensure, that the Entry is only once in the LSV Journal Line
        LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No.");
        LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No.");
    ...
    

    現有的第二號法規

    ...
      TotalAmt := TotalAmt + "Collection Amount";
      d.UPDATE(3,TotalAmt);
      // CH2813.BEGIN
      EntriesPerCust := EntriesPerCust + 1;
      // CH2813.END
    END;
    

    替換代碼2

    ...
        TotalAmt := TotalAmt + "Collection Amount";
        d.UPDATE(3,TotalAmt);
        // CH2813.BEGIN
        EntriesPerCust := EntriesPerCust + 1;
        // CH2813.END
    
    //Add the follong lines.
      END ELSE BEGIN
        TempCustLedgEntry := CustLedgEntry;
        TempCustLedgEntry.INSERT;
      END;
    //End of the lines.
    
    END;
    

            
          

先決條件

您必須安裝以下其中一項產品才能套用此熱修補:

  • 瑞士版的 Microsoft Dynamics NAV 2009 服務包 1 (SP1)
  • Microsoft Dynamics 2009 的瑞士版 NAV
  • 瑞士版的 Microsoft Dynamics NAV 5.0 服務包 1 (SP1)
  • Microsoft Dynamics NAV 5.0 的瑞士版本

              

移除資訊

你無法移除這個熱修正。

狀態

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

注意本文為 Microsoft 支援單位內部直接建立的「快速發佈」文章。 此處包含的資訊是以其現況提供,用於回應新產生的問題。 由於快速發佈,資料可能包含拼字錯誤,並可能會隨時修訂,不另行通知。 請參閱使用條款以瞭解其他相關考量。