创建和管理产品系列、产品以及捆绑销售

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

通过在某一产品系列下创建产品和销售捆绑将您的产品组织在一个分层结构中,由此来定义您的产品目录,定义相关产品并将属性添加到父产品系列中,以便让在此产品系列下的所有子产品和销售捆绑可以自动继承这些属性。

默认情况下,在创建产品系列、产品或销售记录时,它们都处在草稿状态中。 在创建产品、定义相关产品、对父产品系列记录配置属性之后,必须为其发布产品系列、产品或捆绑记录,以便让您的销售代理能够在系统中看到您的销售产品。详细信息:发布产品系列、产品或捆绑销售

备注

与产品系列无关联的产品不具有父产品系列记录,通过设置 Organization.CreateProductsWithoutParentInActiveState 属性为 1 (true),您可以选择在可用状态下直接创建这些产品。 默认情况下,如果全新安装 Microsoft Dynamics 365,则该属性设置为 0 (false);如果您正在升级 Dynamics 365 先前版本以确保使用 Dynamics 365 先前版本(在此版本中,可用状态下创建产品记录)的应用程序兼容性,则该属性设置为 1 (true)。
您还可以使用 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 消息克隆产品系列、产品或捆绑销售记录,并以相同的父节点创建记录副本。 必须提供用于克隆的记录 ID。 克隆产品记录的同时也会复制产品属性。 创建了克隆记录之后,日期和时间戳将追加到 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。 保留所有权利。 版权