ユーザー変更項目
次の各項では、契約条項で使用されるユーザー変更項目を作成する方法と、様々なタイプについて説明します。
Java変更項目の作成
クラウド以外の環境でユーザー変更項目を作成する場合は、Java変更項目を使用できます。 Java文字列とJava表の変更項目の場合は、属性値を取得するためのJavaメソッドを作成する必要があります。 「ユーザー変更項目に対するJavaメソッドの作成例」トピックで、サンプル・コードを示します。 Java文字列と表の変更項目にはプログラミングの知識が必要ですが、手動ユーザー変更項目はプログラミングなしで作成できます。 次のようにします。
-
「設定および保守」作業領域から開始して、変更項目の値エントリを検証する値セットを作成します。
値セットでは、ユーザーが選択する必要のある値のリストを指定するか、または単に変更項目の形式と長さを指定できます。 値セットは、『Oracle Fusion Applications Functional Setup Manager開発者ガイド』で説明されている共通アプリケーション・コンポーネントです。
-
「変更項目の作成」ページに移動します。
-
変更項目の名前を入力します。 変更項目の目的を説明するテキストを使用することもできますが、システム変数に使用される接頭辞
OKC$
を付けることはできません。 -
変更項目の目的を選択します。
変更項目は、購買(調達)契約または販売契約を目的として作成できます。
-
値セットを選択し、ユーザーが契約エキスパートで条項に挿入したり値を入力したりするときに変更項目を識別しやすいように名前と摘要を入力します。
-
購入目的の変更項目を作成する場合は、「外部パーティにより更新可」オプションを選択することによって、Oracle Fusion Sourcingアプリケーションでベンダーが変更項目を更新できるようにすることができます。
付加フレックスフィールド変更項目の作成
変更項目ソース付加フレックスフィールドを使用して、契約ヘッダー・フレックスフィールドに入力した値を取得し、それらの値を契約の条件を構成する条項に埋め込むことができます。
「契約付加フレックスフィールドの管理」タスクを使用して、契約変更項目で参照する必要があるグローバル・セグメントを定義します。 このタスクは、「設定および保守」作業領域で、企業契約ベース機能領域の企業契約オファリングの一部です。
次のステップを使用して、付加フレックスフィールド変更項目を作成します。
-
条件ライブラリにナビゲートし、「変更項目の作成」タスクを選択します。
-
新しい変更項目の名前、目的および説明を入力します。
-
付加フレックスフィールド・ソースを選択し、変更項目のベースにするグローバル・セグメントを選択します。
-
変更項目と作成者契約の作成のために条件ライブラリ使用するユーザーに、次のジョブ・ロールを割り当てます。
-
顧客契約マネージャ - OKC_CUSTOMER_CONTRACT_MANAGER_JOB
-
実務責任管理者 - OKC_BUSINESS_PRACTICES_DIRECTOR_JOB
-
付加フレックスフィールド変更項目には、次の制限があります。
-
契約変更項目ではグローバル・セグメントのみを使用できます。
-
契約エキスパート・ルールでは、数値データ型または文字データ型の値セットを使用するセグメントを使用できません。また、独立検証タイプを使用することもできません。
-
次のデータおよび表示タイプはサポートされていません。
-
ドロップダウン・リスト、非表示、日時はどのデータ型でもサポートされません。
-
日時データ型では表示タイプはサポートされません。
-
オブジェクト変更項目の作成
変更項目ソース、オブジェクトまたは子オブジェクトを使用して、アプリケーション・コンポーザの販売アカウントおよび商談オブジェクトに関連付けられたフィールドを参照する変更項目を作成できます。 標準の子オブジェクト、または販売アカウントや商談オブジェクトに対して定義するユーザー固有の子オブジェクトを参照できます。
オブジェクト変更項目または子オブジェクト変更項目を定義するには、次の点を確認する必要があります。
-
アプリケーション・コンポーザを使用して、販売アカウントまたは商談オブジェクトの変更項目で使用するフィールドを定義します。 標準フィールドを使用するか、ユーザー固有フィールドを設定できます。
-
「販売アカウント」ページまたは「商談」ページで作成した新規フィールドを公開します。
-
これらの変更がサンドボックスで定義されている場合、それらの変更の値を契約エキスパート・ルールで使用する、または契約を印刷するには、事前に公開される必要があります。
オブジェクト変更項目と子オブジェクト変更項目の作成
まず、要件に応じて次の職務ロールをユーザーに追加します。
-
商談変更項目を使用する契約を表示または編集する必要があるユーザーは、商談管理職務に割り当てられている必要があります。
-
販売アカウント変更項目を使用する契約を表示または編集する必要があるユーザーは、販売パーティ・レビュー職務に割り当てられている必要があります。
-
条件ライブラリを使用する必要があるユーザー(変更項目や作成者契約の作成など)には、顧客契約マネージャ(OKC_CUSTOMER_CONTRACT_MANAGER_JOB)、実務責任管理者(OKC_BUSINESS_PRACTICES_DIRECTOR_JOB)ジョブ・ロールが割り当てられている必要があります。
次のステップを使用して、オブジェクト変更項目を作成します。
-
条件ライブラリにナビゲートし、「変更項目の作成」タスクを選択します。
-
新しい変更項目の名前、目的および説明を入力します。
-
ソースをオブジェクトとして選択し、オブジェクト名を販売アカウントまたは商談として選択します。
-
フィールド名を入力します。 これは、アプリケーション・コンポーザのフィールドに割り当てられるAPI名です。
-
文字、日付または数値のデータ型を選択します。
-
文字データ型の場合は、次のように参照タイプを入力します。
-
固定選択リスト・タイプの変更項目には、アプリケーション・コンポーザでフィールドに割り当てられた参照タイプを入力します。
-
チェック・ボックス・タイプのフィールドには、True (「はい」)およびFalse (「いいえ」)として定義されたコードを持つ参照タイプを入力します。
-
次のステップを使用して、子オブジェクト変更項目を作成します。
-
条件ライブラリにナビゲートします。
-
「変更項目の作成」タスクを選択します。
-
変更項目の名前、目的および説明を入力します。
-
ソース子オブジェクトを選択します。
-
販売アカウントまたは商談のいずれかの親オブジェクト名を選択します。
-
販売アカウントまたは商談XSDファイルから子オブジェクト名を取得します。 これは、アプリケーション・コンポーザの子オブジェクトに割り当てられるAPI名です。 XSDファイルへのパスは、
http://server_name:port_number
とそれに続く文字列の形式です。-
/crmCommonSalesParties/SalesPartyService?XSD=/oracle/apps/crmCommon/salesParties/salesPartiesService/SalesParty.xsd
-
/opptyMgmtOpportunities/OpportunityService?XSD=/oracle/apps/sales/opptyMgmt/opportunities/opportunityService/Opportunity.xsd
-
-
「変更項目の作成」ページでXSDファイルから取得した子オブジェクト名を入力します。
-
印刷レイアウト・テンプレート名を入力します。 複数のレコードを含む可能性がある他の表変更項目と同様に、子オブジェクトで取得する値のうち契約時に印刷する値と、そのフォーマット方法を指定する必要があります。 このレイアウトは、RTFファイルから取得する必要があります。 (関連する「契約子オブジェクト変更項目の印刷: 手順」を参照してください。)
オブジェクト変更項目には、次の制限事項があります。
-
動的選択リスト・タイプのフィールドに基づくオブジェクト変更項目はサポートされません。
商談オブジェクトからの契約作成の開始
アプリケーション・コンポーザを使用して、処理を追加し、契約の作成を開始できます。
次のAPIを使用して、商談オブジェクトから契約を下書き契約として作成できます。契約のすべての後続のステップ(承認や署名など)は、企業契約を介して行われます。
-
public static AttributeList createContract(AttributeList contractList)はJboExceptionをスローします。
-
public static void deleteContract(String externalSourceKey, String externalReferenceKey, boolean deleteAllVersions)はJboExceptionをスローします。
次のステップを使用して、処理を商談オブジェクトに追加し、契約を作成します。
-
オブジェクト関数を商談オブジェクト用のサーバー・スクリプト内に作成し、createContract APIを開始します。 サンプル・コードとヘルパー・メソッドは、このセクションの最後にあります。
-
createContract Java APIを呼び出すためのAttributeList入力パラメータが、ExternalSourceKeyをOPPORTUNITYとして格納し、ExternalReferenceKeyをOpportunity IDとして格納することを確認します。
-
ステップ1で作成したオブジェクト関数を開始するには、商談オブジェクトの処理およびリンクのセクションで新しい処理を作成します。
-
商談ページで、「契約の作成」などの処理を追加します。
-
サンドボックスで定義されている場合、テストが完了したら、これらの変更を公開します。
商談オブジェクトを使用するユーザーには、次の権限を付与する必要があります。
-
権限: OKC_EDIT_CONTRACT_VIA_WEB_SERVICE_PRIV
-
職務: OKC_ALL_BUSINESS_UNITS_CONTRACT_MANAGEMENT_DUTY
商談オブジェクトからの契約作成には、次の制限があります。
-
商談から作成された契約では、テンプレート選択ルールを使用して条件テンプレートを適用できません。 条件テンプレートは、契約の契約タイプに割り当てられたデフォルトである必要があります。
-
契約がすでに商談オブジェクト用に作成されている場合、アプリケーション・コンポーザでは作成処理の無効化はサポートされません。
サンプル・コード: 契約を作成するためのオブジェクト関数
def startDate = new Date();
def endDate = null;
def externalSourceKey = 'OPPORTUNITY';
def businessUnitName = 'Vision Operations';
def contractTypeName = 'Service Agreement';
def deleteSuccess = 'Y';
// Get ContractType Id using ContractType Name
def contractTypeId =
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.getContrac
tTypeIdentifier(adf.sou
rce, contractTypeName );
// Get businessUnitId Id using Business Unit Name
def businessUnitId =
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.getBusines
sUnitIdentifier(adf.sou
rce, businessUnitName );
// Delete all versions of the Contract using Chr Id and
MajorVersion
try {
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.deleteCont
ract(externalSourceKey,
OptyId.toString(), true);
}
catch (java.lang.Exception e) {
deleteSuccess = 'N';
}
if (deleteSuccess == 'Y') {
// Create Contract
oracle.jbo.AttributeList contractHeader = new
oracle.jbo.NameValuePairs();
// Set Contract Header Attributes
contractHeader.setAttribute("OrgId",
businessUnitId);
contractHeader.setAttribute("StartDate", startDate);
contractHeader.setAttribute("EndDate", endDate);
contractHeader.setAttribute("ContractTypeId",
contractTypeId);
contractHeader.setAttribute("CurrencyCode",
CurrencyCode);
contractHeader.setAttribute("ContractNumber", Name);
contractHeader.setAttribute("PartyId",
TargetPartyId);
contractHeader.setAttribute("ContractOwnerId",
OwnerResourcePartyId);
contractHeader.setAttribute("WebServiceFlag", "N");
contractHeader.setAttribute("ExternalSourceKey",
"OPPORTUNITY");
contractHeader.setAttribute("ExternalReferenceKey",
OptyId);
// Invoke createContract API to create a contract
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.createCont
ract(contractHeader);
}
}
.
.
.
Corrected code that should be used:
.
def OrgIdStr="OrgId";
def ContractTypeIdStr='ContractTypeId';
def WebServiceFlagStr='WebServiceFlag';
def ExternalSourceKeyStr='ExternalSourceKey';
def ExternalReferenceKeyStr='ExternalReferenceKey';
def ContractNumberStr='ContractNumber';
def ContractOwnerIdStr='ContractOwnerId';
def startDate = new Date();
def endDate = null;
def externalSourceKey = 'OPPORTUNITY';
def businessUnitName = 'Vision Operations';
def contractTypeName = 'Service Agreement';
def deleteSuccess = 'Y';
// Get ContractType Id using ContractType Name
def contractTypeId =
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.getContrac
tTypeIdentifier(adf.sou
rce, contractTypeName );
// Get businessUnitId Id using Business Unit Name
def businessUnitId =
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.getBusines
sUnitIdentifier(adf.sou
rce, businessUnitName );
// Delete all versions of the Contract using Chr Id and
MajorVersion
try {
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.deleteCont
ract(externalSourceKey,
OptyId.toString(), true);
}
catch (java.lang.Exception e) {
deleteSuccess = 'N';
}
.
.
if (deleteSuccess == 'Y') {
// Create Contract
oracle.jbo.AttributeList contractHeader = new
oracle.jbo.NameValuePairs();
// Set Contract Header Attributes
contractHeader.setAttribute(OrgIdStr, businessUnitId);
contractHeader.setAttribute("StartDate", startDate);
contractHeader.setAttribute("EndDate", endDate);
contractHeader.setAttribute(ContractTypeIdStr,
contractTypeId);
contractHeader.setAttribute("CurrencyCode",
CurrencyCode);
contractHeader.setAttribute(ContractNumberStr, Name);
contractHeader.setAttribute("PartyId", TargetPartyId);
contractHeader.setAttribute(ContractOwnerIdStr,
OwnerResourcePartyId);
contractHeader.setAttribute(WebServiceFlagStr, "N");
contractHeader.setAttribute(ExternalSourceKeyStr,
"OPPORTUNITY");
contractHeader.setAttribute(ExternalReferenceKeyStr,
OptyId);
// Invoke createContract API to create a contract
oracle.apps.partnerMgmt.partnerProgram.util.service.con
tractsCoreTransactionSe
rvice.ContractsCoreTransactionServiceWrapper.createCont
ract(contractHeader);
}
次のヘルパー・メソッドを使用して、実装に必要な情報を収集します。
メソッド署名 |
摘要 |
---|---|
public static Long getBusinessUnitIdentifier(Object context*, String businessUnitName) |
指定されたビジネス・ユニット名のビジネス・ユニットIDを取得します。 |
public static Long getContractTypeIdentifier(Object context*, String contractTypeName) ノート: オブジェクト・コンテキストは、EntityImplまたはViewRowImplオブジェクトのいずれかです。
|
指定された契約タイプ名の契約タイプIDを取得します。 |
public static Long getPersonIdentifier(Object context*, Long resourceId) |
指定されたリソースIDの個人IDを取得します。 |
public static AttributeList createContract(AttributeList contractHeaderList) |
ヘッダー、パーティおよびパーティ担当者エンティティのみを含む契約を作成します。 |
public static void deleteContract(String externalSourceKey, String externalReferenceKey, boolean deleteAllVersions) |
外部キーを使用して契約を削除します。 |
public static AttributeList findContract(String externalSourceKey, String externalreferenceKey) |
外部キーを使用して契約を検索します。 |
public static void deleteContract(Long contractId, Long majorVersion) (Existing PRM API) |
契約IDとバージョンを使用して契約を削除します。 |
商談からの契約の表示
アプリケーション・コンポーザを使用して、商談から契約を表示するためのリンクを追加できます。 商談から、URLナビゲーションを介して契約にアクセスできます。
次のステップを使用して、処理を商談オブジェクトに追加し、契約を作成して表示します。
-
アプリケーション・コンポーザで商談オブジェクトにリンクを作成します(契約のプレビューなど)。
-
リンクのGroovyスクリプト・エディタでAuthoringMainFlow契約にナビゲートするためのURLを返します。
-
「商談」ページにリンクを追加します。
-
サンドボックスで定義されている場合、テストが完了したら、これらの変更を公開します。
次の権限を商談ユーザーに付与する必要があります。
-
商談の表示資格/権利にgetOpportunityリソースを割り当てる必要があります。
-
商談の契約を表示するユーザーに、AuthoringMainFlowタスクフローの表示権限が付与されている必要があります。
-
権限: OKC_VIEW_CONTRACT_PRIV
-
職務: OKC_ALL_BUSINESS_UNITS_CONTRACT_INQUIRY_DUTYまたはOKC_CONTRACT_INQUIRY_DUTY
-
商談からの契約の作成および表示には、次の制限および既知の問題があります。
-
保存またはロールバックの実行は、アプリケーション・コンポーザGroovyスクリプトではお薦めしません。 商談オブジェクトでユーザー固有のフィールド(ContractIdおよびMajorVersion)を保持するには、ユーザーが「商談」ページで「保存」をクリックする必要があります。
-
アプリケーション・コンポーザは、GPAポリシーのWebサービスを起動するときのアイデンティティ切り替えをサポートしません。
-
タスクフローにナビゲートするURLを作成するための標準は、oracle.apps.fnd.applcore.patterns.uishell.context.UIShellContextでgetURL() APIを呼び出すことです。 アプリケーション・コンポーザは、GroovyスクリプトでのUIShellContextクラスをサポートしていません。
-
fileDownloadActionListenerはアプリケーション・コンポーザでサポートされていないため、「商談」ページのボタンをクリックして契約PDFのプレビュー・ファイルをダウンロードすることはできません。 代替方法として、URLナビゲーションを使用して契約アプリケーションにドリルダウンする方法があります。
ユーザー変更項目の契約での使用方法
作成したユーザー変更項目は次のことが可能です。
-
契約条件ライブラリの条項に挿入する
-
契約作成者が契約作成の間に作成した個別の非標準条項に挿入する
-
契約エキスパート・ルールの条件で使用する
契約作成者が作成時に契約エキスパートを実行すると、変更項目の値の入力を求められます。 値は契約条件で自動的に置換され、変更項目が使用されているルールが評価されます。
付加フレックスフィールド変更項目とアプリケーション・コンポーザ・オブジェクトは、条項テキストに挿入されて変更項目の値が埋め込まれるときと同様に動作します。 変更項目を使用する条項を含む条件テンプレートを使用する契約は、そのフィールドに入力された値を取得し、変更項目の値に埋め込みます。 契約をプレビューまたは印刷すると、変更項目が解決されて、文書に印刷される値が表示されます。 付加フレックスフィールドに基づく変更項目の場合、値はセグメント名および属性番号に基づきます。 ContractSample.xmlファイルでは、独自のレイアウト・テンプレートを使用して印刷すると値が書式設定されて正しく使用されるように、契約ヘッダー付加フレックスフィールドを公開できます。 アプリケーション・コンポーザに基づく変更項目の場合、変更項目の解決では、商談の一意のIDとプライマリ・パーティIDを使用して、商談および販売アカウントの変更項目値がソーシングされます。
この方法には次の制限があります。契約作業領域から契約を作成する場合、その契約に関連付けられた条件テンプレートに商談オブジェクトからソーシングされた変更が含まれていると、契約が商談から作成されておらず、参照情報を取得できないため、条件テンプレート内の変更項目が解決されることはありません。