共用方式為


建立並管理產品系列、產品及搭售方案

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

藉由在階層式結構中組織產品,定義產品類別目錄,方法是在產品系列中建立產品和搭售方案、定義相關產品和新增屬性 (屬性) 至上層產品系列,這樣產品系列中的所有下層產品與搭售方案會自動繼承屬性。

根據預設,當您建立產品系列、產品或搭售方案記錄時,它們是在草稿狀態。 在建立產品、定義相關產品和設定上層產品系列記錄的屬性之後,就必須發行產品系列、產品或搭售方案記錄,使其可以在系統中供銷售專員銷售。其他資訊:發行產品系列、產品或搭售方案

注意

對於未與產品系列相關的產品,也就是說沒有被指派上層產品系列記錄的產品,您可以選取直接在使用中狀態下建立它們,透過設定 Organization.CreateProductsWithoutParentInActiveState 屬性為 1 (true)。 根據預設,如果是新安裝的 Microsoft Dynamics 365,此屬性設為 0 (false),如果您從舊版 Dynamics 365 升級,則設為 1 (true),確保您的應用程式與舊版 Dynamics 365 相容,其中的產品記錄是在使用中狀態下建立。

您也可以使用 Microsoft Dynamics 365 或 Microsoft Dynamics CRM for Outlook 系統設定區域的 [銷售] 索引標籤,指定產品是否在使用中狀態下建立。其他資訊:TechNet:管理產品類別目錄設定

本主題內容

定義產品、產品系列與搭售方案

搭售方案和套件

定義產品關聯,在產品銷售時提供增強式建議

定義產品屬性 (不支援透過 SDK)

複製產品系列、產品或搭售方案

定義產品、產品系列與搭售方案

使用 Product.ProductStructure 屬性來定義項目是產品系列、產品或搭售方案。 將此屬性的值設為:

  • 1 表示建立產品

  • 2 表示建立產品系列

  • 3 表示建立搭售方案

注意

搭售方案是 Dynamics 365 的新功能。 如需詳細資訊,請於稍後參閱本主題的 搭售方案和套件。

若要建立套件類型的產品,繼續使用 Product.IsKit 屬性。

以下是定義產品系列、產品及搭售方案時要考慮的一些重點:

  • 產品系列記錄可能是包含階層式結構中的多個下層產品系列、產品以及搭售方案執行個體。 使用 Product.ParentProductId 屬性,對於下層產品系列、下層產品或下層搭售方案執行個體,可定義上層產品系列執行個體。 設定後,上層記錄就無法變更。

  • 產品或搭售方案無法設定為上層,這表示產品或搭售方案記錄不能有下層記錄。

  • 產品系列、產品或搭售方案執行個體只能為一個產品系列執行個體的一部分。

  • 產品系列沒有巢狀層級上的限制。

  • Product.ValidFromDateProduct.ValidToDate 屬性沒有任何相關聯的內建商務邏輯,不過有檢查可確保 Product.ValidToDate 日期應晚於或等於 Product.ValidFromDate 日期。 必要時,您可以根據這些屬性實作您自己的商務邏輯。 例如,使用 Product.ValidToDate 屬性的日期值,您可以執行排程工作,自動淘汰上一季的產品。

下列程式碼範例示範如何建立產品系列和下層產品記錄。

// Create a product family
Product newProductFamily = new Product
{
   Name = "Example Product Family",
   ProductNumber = "PF001",
   ProductStructure = new OptionSetValue(2)
};
_productFamilyId = _serviceProxy.Create(newProductFamily);
Console.WriteLine("\nCreated {0}", newProductFamily.Name);

// Create a product record under the product family
Product newProduct1 = new Product
{
   Name = "Example Product 1",
   ProductNumber = "P001",
   ProductStructure = new OptionSetValue(1),
   ParentProductId = new EntityReference(Product.EntityLogicalName, _productFamilyId),
   QuantityDecimal = 2,
   DefaultUoMScheduleId = new EntityReference(UoMSchedule.EntityLogicalName, _unitGroupId),
   DefaultUoMId = new EntityReference(UoM.EntityLogicalName, _unit.Id)
};
_product1Id = _serviceProxy.Create(newProduct1);
Console.WriteLine("Created {0} under the product family", newProduct1.Name);

搭售方案和套件

搭售方案是Dynamics 365 中引入的功能,用來取代舊的套件功能。 與套件類似的是,搭售方案是做為單一單位銷售的一組產品集合。 產品搭售方案對群組產品非常有用,因此客戶可以從完整產品線獲得更大的益處,或提供搭售產品的折扣,讓您將產品群組並做為單一單位銷售。

只有產品可加入搭售方案;您無法將產品系列、搭售方案或套件記錄新增至搭售方案。 使用 ProductAssociation 實體,您可以建立產品關聯記錄,將產品新增至搭售方案或套件。ProductAssociation.ProductId 記錄指定要新增產品至的搭售方案或套件,而 ProductAssociation.AssociatedProduct 指定要新增的產品。 加入搭售方案的產品最大數量由下列組織設定所決定:Organization.MaxProductsinBundle

您也可以使用 Dynamics CRM 或 Dynamics CRM for Outlook 系統設定區域的 [銷售] 索引標籤,指定加入搭售方案的產品最大數量。其他資訊:TechNet:管理產品類別目錄設定

下列程式碼範例示範如何將產品加入至搭售方案。

// Add a product to a bundle
ProductAssociation newAssociation1 = new ProductAssociation
{
   AssociatedProduct = new EntityReference(Product.EntityLogicalName, _product1Id),
   ProductId = new EntityReference(Product.EntityLogicalName, _bundleId),
   Quantity = new decimal(15),
   ProductIsRequired = new OptionSetValue(0),
   UoMId = new EntityReference(UoM.EntityLogicalName, unit.Id)
};
_product1AssociationId = _serviceProxy.Create(newAssociation1);                    

// Add another product to the bundle                    
ProductAssociation newAssociation2 = new ProductAssociation
{
   AssociatedProduct = new EntityReference(Product.EntityLogicalName, _product2Id),
   ProductId = new EntityReference(Product.EntityLogicalName, _bundleId),
   Quantity = new decimal(20),
   ProductIsRequired = new OptionSetValue(1),
   UoMId = new EntityReference(UoM.EntityLogicalName, unit.Id),                        
};
_product2AssociationId = _serviceProxy.Create(newAssociation2);

if ((_product1AssociationId != null) && (_product1AssociationId != null))
Console.WriteLine("\nAdded both the products to the bundle");

如需完整的範例,請參閱範例:將產品新增至搭售方案

套件與搭售方案的差異

套件和搭售方案都能讓您將產品群組成單一單位,但是,這二者之間有一些差異。

套件

搭售方案

在套件中所有產品都是必要的。

搭售方案中某些產品是選擇性的。

套件支援巢狀;您可以新增套件至另一個套件。

您無法將搭售方案加到另一個搭售方案。 您只能將產品加到搭售方案。

將套件新增至商機、報價、訂單或發票時,只能看到套件層級之詳細資料;您無法看到套件中的個別產品。

將搭售方案新增至商機、報價、訂單或發票時,您可以看到搭售方案件層級之詳細資料,以搭售方案件中的個別產品。

注意

套件在 Dynamics CRM 的目前版本中已被取代;請改用搭售方案。

定義產品關聯,在產品銷售時提供增強式建議

您可以定義產品的相關產品,在商機或訂單管理時,向銷售專員顯示為建議產品。 產品的產品建議讓您的銷售專員建議相關的產品與搭售方案/套件給客戶,並提高產品銷售。 您可以定義下列產品關聯:配件交叉銷售替代產品向上銷售。 例如,Surface Pro 可新增為 Surface RT 的向上銷售產品,如此一來,當您的銷售專員將 Surface RT 新增至商機、報價、訂單或發票時,將建議 Surface Pro 成為向上銷售選項。

使用 ProductSubstitute.SalesRelationshipType 屬性定義產品關聯。 將此屬性的值設為:

  • 0 表示向上銷售

  • 1 表示交叉銷售

  • 2 表示配件

  • 3 表示替代產品

定義產品關聯時,定義關聯方向以避免資料重複是很重要的。 產品關聯支援的方向為:

產品關聯

方向

配件

單向

交叉銷售

單向或雙向

替代產品

單向或雙向

向上銷售

單向

使用 ProductSubstitute.Direction 屬性為產品關聯指定方向。 將此屬性的值設為:

  • 0 表示單向

  • 1 表示雙向

下列程式碼範例示範如何定義產品關聯。

// Set product relationship
// Set product1 and product2 as substitute of each other (bi-directional)
ProductSubstitute newProductRelation = new ProductSubstitute
{
   SalesRelationshipType = new OptionSetValue(3),
   Direction = new OptionSetValue(1),
   ProductId = new EntityReference(Product.EntityLogicalName, _product1Id),
   SubstitutedProductId = new EntityReference(Product.EntityLogicalName, _product2Id)
};
_productRelationId = _serviceProxy.Create(newProductRelation);

定義產品屬性 (不支援透過 SDK)

您只可以使用 Dynamics CRM 或 Dynamics CRM for Outlook 建立及管理產品屬性 (屬性);不支援程式設計方式。 本節只提供產品屬性的概觀,這對了解新產品類別目錄功能十分重要。 如需建立及管理產品屬性的詳細資訊,請參閱說明及訓練:使用屬性描述產品

產品屬性只能關聯至產品系列執行個體,不能關聯至產品或搭售方案記錄。 上層產品系列下的所有下層產品系列、產品與搭售方案執行個體都會繼承關聯至上層產品系列的屬性。 只可以使用 Dynamics CRM 或 Dynamics CRM for Outlook,覆寫下層產品系列、產品以及搭售方案記錄繼承的屬性。

您定義產品屬性的方式決定在執行階段,也就是將相關產品新增至商機、報價、訂單或發票時,銷售專員如何使用產品屬性。

  • 可更新產品屬性的值可以在執行階段變更,而唯讀產品屬性的值無法。

  • 如果產品屬性設定為必要,必須在執行階段指定屬性的值。 否則,屬性會顯示為未解析。

  • 隱藏的屬性不會在執行階段顯示給銷售專員。

注意

產品屬性不影響產品的定價。 這表示 Dynamics CRM 定價引擎不支援根據產品屬性值的變更來變更產品的價格。

當您修訂產品及變更屬性時,Dynamics CRM 內部建立新版的產品和複製現有產品的產品詳細資料至新版本。 新產品版本有所有詳細資料,包括價目表、產品關聯和屬性。 舊版產品中已建立的商機可以繼續參照舊版產品。 在產品修訂或淘汰之後建立的商機將參照目前 (較新) 產品版本。 如需產品狀態轉換的詳細資訊,請參閱 發行、修訂、還原、淘汰及啟用產品 (產品週期)

提供下列新實體是為了儲存產品屬性設定;不支援透過程式設計方式存取和管理這些實體:

  • DynamicProperty 實體儲存關於產品屬性的資訊。

  • DynamicPropertyAssociation 實體儲存有關產品屬性關聯至的產品系列的資訊。

  • DynamicPropertyOptionSet 實體儲存有關選項組資料類型產品屬性的選項組值的資訊。

注意

附加至產品系列的產品屬性最大數量由下列組織設定所決定:Organization.MaximumDynamicPropertiesAllowed。 此數字只有在您發行附加屬性的產品系列的下層產品記錄或搭售方案時才會生效,當您將屬性附加至草稿產品系列的記錄時不會生效。

您也可以使用 Dynamics CRM 或 Dynamics CRM for Outlook 系統設定區域的 [銷售] 索引標籤,設定產品屬性數目上限。其他資訊:TechNet:管理產品類別目錄設定

複製產品系列、產品或搭售方案

使用 CloneProductRequest 訊息來複製產品系列、產品或搭售方案記錄,然後在相同上層節點下建立記錄的複本。 您必須提供要複製之記錄的識別碼。 複製產品記錄,也會複製產品的屬性。 複製記錄建立時含有日期與時間戳記,附加至 Product.NameProduct.ProductNumber 屬性中的原始值;日期時間戳記表示記錄複製的時間。 下列程式碼範例示範如何複製產品。

CloneProductRequest cloneReq = new CloneProductRequest
{
   Source = new EntityReference(Product.EntityLogicalName, _productId)
};

CloneProductResponse cloned = (CloneProductResponse)_serviceProxy.Execute(cloneReq);                                     
_productCloneId = cloned.ClonedProduct.Id;

// Retrieve the cloned product record
Product retrievedProduct = (Product)_serviceProxy.Retrieve(Product.EntityLogicalName, _productCloneId, new ColumnSet(true));
Console.WriteLine("\nCreated clone product: {0}", retrievedProduct.Name);

後續步驟

發行產品記錄,供銷售專員銷售產品。其他資訊:發行產品系列、產品或搭售方案

另請參閱

發行、修訂、還原、淘汰及啟用產品 (產品週期)
範例:建立和發行產品
範例:複製產品記錄
範例:將產品新增至搭售方案
產品類別目錄實體

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權