次の方法で共有


輸出管理の販売注文機能を拡張する

この記事では、輸出規制を実装するために販売注文機能を拡張する開発者に役立つ情報を提供します。

確認および同様の転記ステップ中に、輸出管理チェックの履歴が追跡されます。 この履歴は、販売注文ヘッダーから 結果 を選択して表示できます。 実行されたチェックの詳細が表示されます。 このデータは、COOExportControlSalesTableHistory テーブル内のレポートや他のプロセスから参照できます。 この表には、一般的な情報にアクセスするためのヘルパー メソッドも示されています。

ドキュメント レベル 最小 しきい値は計算 されません。 デフォルトでは、これは常に 0 です。 ドキュメント レベルの 最小 しきい値の計算を提供するには、COOValidateSalesTable::createRequest() API を拡張します。

SalesLine.QtyOrdered フィールドは数量として渡され、SalesLine.LineAmount フィールドは値として渡されます。 これらの値に対して通貨換算は行われません。 オーバーライドして別の値を渡すには、COOValidateSalesTable::createRequest() メソッドを拡張して値を更新します。 関連アイテムの 最小 パーセンテージが、計算せずにその行に渡されます。

拡張されたプロパティ

Supply Chain Management から高度なエクスポート管理ソリューションへのリクエストに追加のプロパティを追加できます。 これらのプロパティは、制限と例外の両方に関する Power Fx ルールで参照できます。

追加のプロパティを追加するには、COOValidateSalesTable クラスを作成し、プロパティに適切なメソッドをオーバーライドします。

  • ドキュメントのプロパティ :getExtendedProperties()
  • 行プロパティ :getExtendedLineProperties()
  • 行コードのプロパティ :getExtendedLineCodeProperties()

これらの各メソッドには、_extendedProperties という名前のマップが含まれています。 プロパティと値の物理名を追加します。 特定のドキュメント パーツとプロパティ名については、常に同じ値の型を使用する必要があります。 たとえば、プロパティ TestProp は、1 回の呼び出しでタイプ string と次の呼び出しでタイプ int にはできません。 次に、ドキュメント、行、行コードにプロパティを追加する例を示します。

[ExtensionOf(classStr(COOValidateSalesTable))]
final class COOValidateSalesTable_SampleModel_Extension
{
    public void getExtendedProperties(Map _extendedProperties)
    {
        _extendedProperties.add("TestDocString", strFmt("SalesId = %1", this.parmSalesTable().SalesId));
        _extendedProperties.add("TestDocInt", 42);
        _extendedProperties.add("TestDocReal", 3.14159);
        _extendedProperties.add("TestDocDate", today());
        _extendedProperties.add("TestDocUtcDateTime", DateTimeUtil::utcNow());
        next getExtendedProperties(_extendedProperties);
    }
    public void getExtendedLineProperties(Map _extendedProperties, COOValidationRequestLineContract _line)
    {
        _extendedProperties.add("TestLineString", strFmt("LineRecId = %1", _line.parmRecordId()));
        _extendedProperties.add("TestLineInt", 43);
        _extendedProperties.add("TestLineReal", 3.14159);
        _extendedProperties.add("TestLineDate", today());
        _extendedProperties.add("TestLineUtcDateTime", DateTimeUtil::utcNow());
        next getExtendedLineProperties(_extendedProperties, _line);
    }
    public void getExtendedLineCodeProperties(Map _extendedProperties, COOValidationRequestLineContract _line, COOValidationRequestCodeContract _code)
    {
        _extendedProperties.add("TestLineCodeString", strFmt("Code = %1", _code.parmCode()));
        _extendedProperties.add("TestLineCodeInt", 44);
        _extendedProperties.add("TestLineCodeReal", 3.14159);
        _extendedProperties.add("TestLineCodeDate", today());
        _extendedProperties.add("TestLineCodeUtcDateTime", DateTimeUtil::utcNow());
        next getExtendedLineCodeProperties(_extendedProperties, _line, _code);
    }
}

新しいプロパティが輸出管理チェックで初めて使用されると、そのプロパティは輸出管理ソリューションの msdyn_ExportControlExtendedProperty テーブルに追加されます。 その後、プロパティは Power Fx ルールで参照できます。 チェックを実行する前に、プロパティをこのテーブルに事前に追加することもできます。 これは、前述の拡張プロパティを使用する Power Fx ルールの例です。

And(And(Document.TestDocInt=42, Line.TestLineInt=43), LineCode.TestLineCodeInt=44