製品の公開、改訂、戻し、廃止、アクティブ化(製品のライフサイクル)
既定では、製品レコードはその作成時にはドラフト状態で、販売代理店は使用できません。 レコードは、公開されて、状態がアクティブになったら販売代理店に使用できるようになります。 製品ファミリに関連付けられていない製品、つまり親製品ファミリ レコードを持たない製品の場合は、Organization.CreateProductsWithoutParentInActiveState 列を 1
(true) に設定することで、直接アクティブ状態の製品を作成することができます。 既定では、この列は、Dynamics 365 Sales の新しいインストールでは 0
(false) に設定されており、以前のバージョンの Dynamics 365 Sales からアップグレードの場合 1
(True) に設定されています。これにより、以前のバージョンの Dynamics 365 (製品レコードがアクティブの状態で作成されている) で動作するアプリケーションとの互換性が保たれます。
Dynamics 365 Sales または Microsoft Dynamics 365 for Outlook のシステムの設定領域の Sales タブを使用して、製品をアクティブ状態で作成するかどうかを指定できます。 詳細: 製品カタログの構成の管理
製品レコードを改訂、戻し、廃止、アクティブ化して、業務要件に合わせて製品カタログを管理することができます。 次の図は、Dynamics 365 Sales で製品レコードのさまざま処理を実行する際の製品の状態の遷移を示しています。
アクティブ化\*: アクティブ化の処理は、特定のタイプの製品レコードにのみ適用されます。 詳細: 製品またはキット レコードをアクティブ化する
製品ファミリ、製品、バンドルの公開
SetStateRequestメッセージを使用して、個別の製品ファミリ、製品、またはバンドル レコードを公開します。 この場合は、ターゲット レコードの状態がドラフトからアクティブに変化します。 製品ファミリ レコードの子製品またはバンドル レコードは、親製品ファミリ レコードが公開されている(アクティブ状態)の場合のみ公開できます。 複数の製品ファミリ、製品、またはバンドル レコードを一度に公開できません。
PublishProductHierarchyRequestメッセージを使用して、子製品とバンドルを含む製品ファミリ階層を公開します。 製品ファミリ レコードでのみこのメッセージを使用できます。 ターゲット製品ファミリ レコードとすべての子製品またはバンドルレコードの状態が、ドラフトからアクティブに変更されます。
次のコード サンプルでは、個別の製品ファミリ、製品、バンドル レコードの公開方法が表されています。
SetStateRequest publishRequest = new SetStateRequest
{
EntityMoniker = new EntityReference(Product.EntityLogicalName, _productId),
State = new OptionSetValue((int)ProductState.Active),
Status = new OptionSetValue(1)
};
_serviceProxy.Execute(publishRequest);
次のコード サンプルでは、子レコードを含む製品ファミリの公開方法が表されています。
PublishProductHierarchyRequest publishRequest = new PublishProductHierarchyRequest
{
Target = new EntityReference(Product.EntityLogicalName, _productFamilyId)
};
_serviceProxy.Execute(publishRequest);
完全なサンプル コードについては、「サンプル: 製品を作成して公開する」を参照してください。
重要
製品ファミリに関連していない製品またはバンドル レコードは、これらを作成または編集した後に個別に公開して、販売代理店に提供する必要があります。 製品ファミリに関連付けられた製品またはバンドルのレコードでは、親製品ファミリレコードの PublishProductHierarchyRequest メッセージを使用して、親製品ファミリ レコードと共に複数の子製品またはバンドル レコードを一度に公開します。
また、製品ファミリに関連付けられていない製品の場合、Organization.CreateProductsWithoutParentInActiveState 列を 1
(true) に設定することで、直接アクティブ状態の製品を作成することができます。 また、Dynamics 365 Sales または Microsoft Dynamics 365 for Outlook のシステムの設定領域の Sales タブを使用して、製品ファミリに関連付けられていない製品をアクティブ状態で作成するかどうかを指定できます。 詳細: 製品カタログの情報の管理
製品ファミリ、製品、バンドルの改訂
SetStateRequestメッセージを使用して、個別の製品ファミリ、製品、またはバンドル レコードを改訂します。
製品ファミリ レコードに対して呼出される場合、製品ファミリと子レコードが改訂されます。
製品またはバンドル レコードに対して呼出される場合、レコードのみが改訂されます。
ターゲット レコードの状態がアクティブから改訂中に変化します。
製品プロパティ (列) が更新されると、ターゲット レコードは変更を反映するために公開される必要があります。 公開されると、ターゲット レコードの状態が改訂中からアクティブに変化します。
注意
製品を改訂し、プロパティを変更すると、Dynamics 365 Sales では、新しいバージョンの製品が作成され、既存製品から新しいバージョンに製品詳細がコピーされます。 製品の新バージョンには、価格表、製品関係およびプロパティなどの詳細が含まれます。 製品の古いバージョンで作成された営業案件は、製品の古いバージョンを引き続き参照することができます。 製品が改訂されたか、廃止された後に作成された営業案件は、現在(最新)の製品バージョンを参照します。
製品ファミリ、製品、バンドルを戻す
RevertProductRequest メッセージを使用して、製品ファミリ、製品、またはバンドル レコードを最後のアクティブ状態に戻します。 最後に公開された (アクティブ状態) 時以降にレコードに加えられたすべての製品プロパティ (列) 変更は失われます。
製品ファミリ レコードに対して呼び出された場合、製品ファミリおよび子レコードを最後のアクティブ状態に戻し、最後に公開されるた時以降にレコードの製品プロパティに加えられたすべての変更は失われます。
製品またはバンドル レコードに対して呼び出された場合、個々の製品またはバンドル レコードを最後のアクティブ状態に戻し、最後に公開されるた時以降にレコードの製品プロパティに加えられたすべての変更は失われます。
ターゲット レコードの状態が改訂中からアクティブに変化します。
次のコード サンプルは、その製品レコードを戻す方法を示しています。
RevertProductRequest revertReq = new RevertProductRequest
{
Target = new EntityReference(Product.EntityLogicalName, _productId)
};
RevertProductResponse reverted = (RevertProductResponse)_serviceProxy.Execute(revertReq);
製品ファミリ、製品、バンドルの廃止
SetStateRequestメッセージを使用して、製品ファミリ、製品、またはバンドル レコード全体を廃止します。
製品ファミリ レコードに対して呼出される場合、製品ファミリ階層全体が廃止されます。
製品またはバンドル レコードに対して呼出される場合、個々のレコードのみが廃止されます。
ターゲット レコードの状態は廃止に変更されます。
Note
公開された(アクティブ)バンドルの一部である製品を廃止することはできません。 廃止された製品をバンドルに追加したり、廃止されたバンドルに製品を追加したりできません。
製品またはキット レコードをアクティブ化する
SetStateRequest メッセージを使用して、レコードの次の種類のみをアクティブ化します。
親レコードがない廃止された製品レコード。
廃止されたキット レコード。
ターゲット レコードの状態が廃止からアクティブに変化します。
Note
廃止された製品ファミリ、または廃止されたバンドル レコードは追加できません。