Microsoft Dynamics NAV 2009 のポルトガル語バージョンで販売請求書または購買請求書のバッチ転記機能を実行した後、転記日が予期せず更新されます

適用先
Dynamics NAV 2009

この記事は、ポルトガル語 (pt) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

ポルトガル語バージョンの Microsoft Dynamics NAV 2009 R2 と Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) の次のシナリオを検討してください。

  • 日付順序設定を有効にする数値系列があります。
  • 番号系列を適用する売上請求書または購買請求書があります。
  • 転記番号が販売請求書または購買請求書に割り当てられます。
  • この請求書に対してバッチ転記機能を実行し、[バッチ販売請求書の転記] ダイアログ ボックスまたは [Batch Post Purchase Invoices] ダイアログ ボックスの [オプション] タブで転記日を置き換えます。

このシナリオでは、この請求書の転記日付が予期せず更新され、日付注文がチェックされません。 ただし、この請求書の [全般] タブの [転記日] フィールドの値を置き換える場合は、日付順序がチェックされます。

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から入手できるようになりました。 ただし、この記事で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る場合があります。 したがって、この問題の影響を大きく受けない場合は、次の Microsoft Dynamics NAV 2009 Service Pack またはこの修正プログラムを含む次の Microsoft Dynamics NAV バージョンを待つことをおすすめします。

注 特別なケースでは、Microsoft Dynamics および関連製品のテクニカル サポート プロフェッショナルが特定の更新プログラムによって問題が解決されると判断した場合、通常はサポート呼び出しに対して発生する料金が取り消されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

          

インストール情報

Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 Microsoft サポート エンジニアは、特定のプロシージャの機能の説明を支援できます。 ただし、これらの例を変更して、特定の要件を満たすために追加の機能を提供したりプロシージャを構築したりすることはできません。

注 この修正プログラムをインストールする前に、すべての Microsoft Navision クライアント ユーザーがシステムからログオフされていることを確認します。 これには、Microsoft Navision Application Services (NAS) クライアント ユーザーが含まれます。 この修正プログラムを実装するときにログオンする唯一のクライアント ユーザーである必要があります。

この修正プログラムを実装するには、開発者ライセンスが必要です。

[Windows ログイン] ウィンドウまたは [データベース ログイン] ウィンドウのユーザー アカウントに "SUPER" ロール ID を割り当てることをお勧めします。 ユーザー アカウントに "SUPER" ロール ID を割り当てることができない場合は、ユーザー アカウントに次のアクセス許可があることを確認する必要があります。

  • 変更するオブジェクトの [変更] アクセス許可。
  • システム オブジェクト ID 5210 オブジェクトとシステム オブジェクト ID 9015 オブジェクトの Execute アクセス許可。

メモ データ修復を実行する必要がない限り、データ ストアに対する権限は必要ありません。

コードの変更

メモ 運用環境のコンピューターに修正プログラムを適用する前に、制御された環境でコード修正を常にテストします。
この問題を解決するには、次の手順を実行します。

  1. Sales Header テーブルのコードを変更します (36)。 手順は次のとおりです。

    1. フィールドのコードを次のように変更します。
      既存のコード

      ...
      END;
      
      CaptionML=[ENU=Order Date;
      PTG=Data Encomenda] }
      { 20 ; ;Posting Date ;Date ;OnValidate=BEGIN
      
      // Delete the following lines.
       TestNoSeriesDate(
       "Posting No.","Posting No. Series",
       FIELDCAPTION("Posting No."),FIELDCAPTION("Posting No. Series"));
       TestNoSeriesDate(
       "Prepayment No.","Prepayment No. Series",
       FIELDCAPTION("Prepayment No."),FIELDCAPTION("Prepayment No. Series"));
       TestNoSeriesDate(
       "Prepmt. Cr. Memo No.","Prepmt. Cr. Memo No. Series",
       FIELDCAPTION("Prepmt. Cr. Memo No."),FIELDCAPTION("Prepmt. Cr. Memo No. Series"));
      
       VALIDATE("Document Date","Posting Date");
      
       IF ("Document Type" IN ["Document Type"::Invoice,"Document Type"::"Credit Memo"]) AND
       NOT ("Posting Date" = xRec."Posting Date")
       THEN
       PriceMessageIfSalesLinesExist(FIELDCAPTION("Posting Date"));
      
       IF "Currency Code" <> '' THEN BEGIN
       UpdateCurrencyFactor;
       IF "Currency Factor" <> xRec."Currency Factor" THEN
       ConfirmUpdateCurrencyFactor;
       END;
      // End of the deleted lines.
      
      END;
      
      CaptionML=[ENU=Posting Date;
      PTG=Data Registo] }
      { 21 ; ;Shipment Date ;Date ;OnValidate=BEGIN
      ...
      

      置換コード

      ...
      END;
      
      CaptionML=[ENU=Order Date;
      PTG=Data Encomenda] }
      { 20 ; ;Posting Date ;Date ;OnValidate=BEGIN
      
      // Add the following lines.
       IF "Posting Date" <> xRec."Posting Date" THEN BEGIN
       TestNoSeriesDate(
       "Posting No.","Posting No. Series",
       FIELDCAPTION("Posting No."),FIELDCAPTION("Posting No. Series"));
       TestNoSeriesDate(
       "Prepayment No.","Prepayment No. Series",
       FIELDCAPTION("Prepayment No."),FIELDCAPTION("Prepayment No. Series"));
       TestNoSeriesDate(
       "Prepmt. Cr. Memo No.","Prepmt. Cr. Memo No. Series",
       FIELDCAPTION("Prepmt. Cr. Memo No."),FIELDCAPTION("Prepmt. Cr. Memo No. Series"));
      
       VALIDATE("Document Date","Posting Date");
      
       IF ("Document Type" IN ["Document Type"::Invoice,"Document Type"::"Credit Memo"]) AND
       NOT ("Posting Date" = xRec."Posting Date")
       THEN
       PriceMessageIfSalesLinesExist(FIELDCAPTION("Posting Date"));
      
       IF "Currency Code" <> '' THEN BEGIN
       UpdateCurrencyFactor;
       IF "Currency Factor" <> xRec."Currency Factor" THEN
       ConfirmUpdateCurrencyFactor;
       END;
      END;
      // End of the added lines.
      
      END;
      
      CaptionML=[ENU=Posting Date;
      PTG=Data Registo] }
      { 21 ; ;Shipment Date ;Date ;OnValidate=BEGIN
      ...
      
    2. UpdatePmtDiscDate 関数のコードを次のように変更します。
      既存のコード

      ...
      IF NOT("Document Type" IN ["Document Type"::"Credit Memo", "Document Type"::"Return Order"]) THEN
      "Pmt. Discount Date" := "Due Date";
      END;
      
      BEGIN
      END.
      }
      }
      ...
      

      置換コード

      ...
      IF NOT("Document Type" IN ["Document Type"::"Credit Memo", "Document Type"::"Return Order"]) THEN
      "Pmt. Discount Date" := "Due Date";
      END;
      
      BEGIN
      
      // Add the following lines.
       {
       <changelog>
       <change id="VSTF300295" dev="v-mokuma" feature="VSTF300295"
       date="2012-01-20" area="Sales" baseversion="PT6.00.01"
       releaseversion="PT6.00.02">
       Problem with number series with date order setting and batch posting
       </change>
       </changelog>
       }
      // End of the added lines.
      
      END.
      }
      }
      ...
      
  2. [購入ヘッダー] テーブルのコードを変更します (38)。 これを行うには、次の手順に従います。

    1. フィールドのコードを次のように変更します。
      既存のコード

      ...
      END;
      
      CaptionML=[ENU=Order Date;
      PTG=Data Encomenda] }
      { 20 ; ;Posting Date ;Date ;OnValidate=BEGIN
      
      // Delete the following lines.
       TestNoSeriesDate(
       "Posting No.","Posting No. Series",
       FIELDCAPTION("Posting No."),FIELDCAPTION("Posting No. Series"));
       TestNoSeriesDate(
       "Prepayment No.","Prepayment No. Series",
       FIELDCAPTION("Prepayment No."),FIELDCAPTION("Prepayment No. Series"));
       TestNoSeriesDate(
       "Prepmt. Cr. Memo No.","Prepmt. Cr. Memo No. Series",
       FIELDCAPTION("Prepmt. Cr. Memo No."),FIELDCAPTION("Prepmt. Cr. Memo No. Series"));
      
       VALIDATE("Document Date","Posting Date");
      
       IF ("Document Type" IN ["Document Type"::Invoice,"Document Type"::"Credit Memo"]) AND
       NOT ("Posting Date" = xRec."Posting Date")
       THEN
       PriceMessageIfPurchLinesExist(FIELDCAPTION("Posting Date"));
      
       IF "Currency Code" <> '' THEN BEGIN
       UpdateCurrencyFactor;
       IF "Currency Factor" <> xRec."Currency Factor" THEN
       ConfirmUpdateCurrencyFactor;
       END;
       IF PurchLinesExist THEN
       JobUpdatePurchLines;
      // End of the deleted lines.
      
      
      END;
      
      CaptionML=[ENU=Posting Date;
      PTG=Data Registo] }
      { 21 ; ;Expected Receipt Date;Date ;OnValidate=BEGIN
      ...
      

      置換コード

      ...
      END;
      
      CaptionML=[ENU=Order Date;
      PTG=Data Encomenda] }
      { 20 ; ;Posting Date ;Date ;OnValidate=BEGIN
      
      // Add the following lines.
       IF "Posting Date" <> xRec."Posting Date" THEN BEGIN
       TestNoSeriesDate(
       "Posting No.","Posting No. Series",
       FIELDCAPTION("Posting No."),FIELDCAPTION("Posting No. Series"));
       TestNoSeriesDate(
       "Prepayment No.","Prepayment No. Series",
       FIELDCAPTION("Prepayment No."),FIELDCAPTION("Prepayment No. Series"));
       TestNoSeriesDate(
       "Prepmt. Cr. Memo No.","Prepmt. Cr. Memo No. Series",
       FIELDCAPTION("Prepmt. Cr. Memo No."),FIELDCAPTION("Prepmt. Cr. Memo No. Series"));
      
       VALIDATE("Document Date","Posting Date");
      
       IF ("Document Type" IN ["Document Type"::Invoice,"Document Type"::"Credit Memo"]) AND
       NOT ("Posting Date" = xRec."Posting Date")
       THEN
       PriceMessageIfPurchLinesExist(FIELDCAPTION("Posting Date"));
      
       IF "Currency Code" <> '' THEN BEGIN
       UpdateCurrencyFactor;
       IF "Currency Factor" <> xRec."Currency Factor" THEN
       ConfirmUpdateCurrencyFactor;
       END;
       IF PurchLinesExist THEN
       JobUpdatePurchLines;
       END;
      // End of the added lines.
      
      END;
      
      CaptionML=[ENU=Posting Date;
      PTG=Data Registo] }
      { 21 ; ;Expected Receipt Date;Date ;OnValidate=BEGIN
      ...
      
    2. UpdatePmtDiscDate 関数のコードを次のように変更します。
      既存のコード

      ...
      IF NOT("Document Type" IN ["Document Type"::"Credit Memo", "Document Type"::"Return Order"]) THEN
      "Pmt. Discount Date" := "Due Date";
      END;
      
      BEGIN
      END.
      }
      }
      ...
      

      置換コード

      ...
      IF NOT("Document Type" IN ["Document Type"::"Credit Memo", "Document Type"::"Return Order"]) THEN
      "Pmt. Discount Date" := "Due Date";
      END;
      
      BEGIN
      
      // Add the following lines.
       {
       <changelog>
       <change id="VSTF300295" dev="v-mokuma" feature="VSTF300295"
       date="2012-01-20" area="Sales" baseversion="PT6.00.01"
       releaseversion="PT6.00.02">
       Problem with number series with date order setting and batch posting
       </change>
       </changelog>
       }
      // End of the added lines.
      
      END.
      }
      }
      ...
      
  3. Sales-Post codeunit (80) 内のコードを変更します。 手順は次のとおりです。

    1. プロパティのコードを次のように変更します。
      既存のコード

      ...
      DocType@1022 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund,Shipment';
      TempJnlLineDim2@1023 : TEMPORARY Record 356;
      TempPrePmtAmtToDeduct@1003 : Decimal;
      BEGIN
      IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
      
      // Delete the following line.
      "Posting Date" := PostingDate;
      
      VALIDATE("Currency Code");
      END;
      
      IF PostingDateExists AND (ReplaceDocumentDate OR ("Document Date" = 0D)) THEN
      VALIDATE("Document Date",PostingDate);
      ...
      

      置換コード

      ...
      DocType@1022 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund,Shipment';
      TempJnlLineDim2@1023 : TEMPORARY Record 356;
      TempPrePmtAmtToDeduct@1003 : Decimal;
      BEGIN
      IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
      
      
      // Add the following line.
      VALIDATE("Posting Date",PostingDate);
      
      VALIDATE("Currency Code");
      END;
      
      IF PostingDateExists AND (ReplaceDocumentDate OR ("Document Date" = 0D)) THEN
      VALIDATE("Document Date",PostingDate);
      ...
      
    2. ItemLedgerEntryExist 関数のコードを次のように変更します。
      既存のコード

      ...
      EXIT(HasItemLedgerEntry);
      END;
      
      BEGIN
      END.
      }
      }
      ...
      

      置換コード

      ...
      EXIT(HasItemLedgerEntry);
      END;
      
      BEGIN
      
      // Add the following lines.
       {
       <changelog>
       <change id="VSTF300295" dev="v-mokuma" feature="VSTF300295"
       date="2012-01-20" area="Sales" baseversion="PT6.00.01"
       releaseversion="PT6.00.02">
       Problem with number series with date order setting and batch posting
       </change>
       </changelog>
       }
      // End of the added lines.
      
      END.
      }
      }
      ...
      
  4. Purch.-Post codeunit (90) のプロパティのコードを次のように変更します。
    既存のコード

    ...
    TrackingSpecificationExists@1010 : Boolean;
    EndLoop@1009 : Boolean;
    TempPrePmtAmtToDeduct@1004 : Decimal;
    BEGIN
    IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
    
    // Delete the following line.
    "Posting Date" := PostingDate;
    
    
    VALIDATE("Currency Code");
    END;
    
    IF PostingDateExists AND (ReplaceDocumentDate OR ("Document Date" = 0D)) THEN
    VALIDATE("Document Date",PostingDate);
    ...
    
    

    置換コード

    ...
    TrackingSpecificationExists@1010 : Boolean;
    EndLoop@1009 : Boolean;
    TempPrePmtAmtToDeduct@1004 : Decimal;
    BEGIN
    IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
    
    
    // Add the following line.
    VALIDATE("Posting Date",PostingDate);
    
    VALIDATE("Currency Code");
    END;
    
    IF PostingDateExists AND (ReplaceDocumentDate OR ("Document Date" = 0D)) THEN
    VALIDATE("Document Date",PostingDate);
    ...
    

前提条件

この修正プログラムを適用するには、次のいずれかの製品がインストールされている必要があります。

  • Microsoft Dynamics NAV 2009 R2 のポルトガル語バージョン
  • Microsoft Dynamics NAV 2009 Service Pack 1 のポルトガル語バージョン

アンインストール情報

この修正プログラムを削除することはできません。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

注: この資料は、"迅速な公開" を目的としてマイクロソフト サポート組織により直接作成されたものです。 ここに含まれる情報は、新しい問題に対応するため、そのままの状態で提供されます。 情報を迅速に公開するため、この資料には誤植などが含まれる可能性があり、また、予告なく改訂される場合があります。 その他の注意事項については、使用条件を参照してください。