Criar e gerenciar famílias de produtos, produtos, pacotes e propriedades do produto
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Defina seu catálogo de produtos organizando seus produtos em uma estrutura hierárquica criando produtos e pacotes em uma família de produtos, definindo produtos relacionados e adicionando propriedades (atributos) para a família produto principal de forma que todos os produtos e pacotes secundários na família de produtos herdem automaticamente as propriedades.
Por padrão, quando você cria uma família de produtos, um produto ou um registro de grupo, eles estão no estado Rascunho. Depois de criar um produto, definir produtos relacionado e configurar os atributos para o registro primário da família de produtos, publique a família de produtos ou o registro do pacote para torná-los disponíveis no sistema para os agentes de vendas vender.Para obter mais informações:Publicar uma família de produtos, um produto ou um pacote
Observação
Para produtos que não estão associados com a família de produtos, ou seja, produtos que não têm um registro da família de produtos principal atribuído a eles, você poderá criá-los diretamente em um estado Ativo definindo o atributo Organization.CreateProductsWithoutParentInActiveState como 1 (verdadeiro). Por padrão, este atributo é definido como 0 (false) para a instalação nova do Microsoft Dynamics 365 e para 1 (true) se você estiver atualizando de uma versão anterior do Dynamics 365 para garantir a compatibilidade de seus aplicativos trabalhando com a versão anterior do Dynamics 365 onde os registros do produto foram criados em um estado Ativo.
Você também pode usar a guia Vendas na área de configurações do sistema no Microsoft Dynamics 365 ou Microsoft Dynamics 365 para Outlook para especificar se os produtos foram criados em um estado Ativo.Para obter mais informações:TechNet: Gerenciar a configuração do catálogo de produtos
Neste tópico
Defina produtos, famílias de produtos e pacotes
Definir as propriedades do produto
Pacotes e kits
Defina relacionamentos de produtos para sugestões avançadas durante a venda do produto
Clonar uma família de produtos, um produto ou um pacote
Defina produtos, famílias de produtos e pacotes
Use o atributo Product.ProductStructure para definir se um item é uma família de produtos, um produto ou um pacote. Defina o valor do atributo para:
1 para criar um produto
2 para criar uma família de produtos
3 para criar um pacote
Veja alguns aspectos importantes a saber para definir famílias de produto, produtos e pacotes:
Um registro da família de produto pode conter várias famílias de produtos secundárias, produto e instâncias do pacote em uma estrutura hierárquica. Para a família de produtos secundária, o produto secundário ou a instância do pacote secundário, defina a instância da família de produto primária que usa o atributo Product.ParentProductId. Você não pode modificar o registro primário depois de definir.
Um produto ou um pacote não podem ser definidos como primário, que implica que um registro de produto ou de pacote não possua registros secundários.
Uma família de produtos, um produto ou uma instância do pacote pode fazer parte de uma única instância da família de produtos.
Não há limite no nível de aninhamento para a família de produtos.
Os atributos Product.ValidFromDate e Product.ValidToDate não tem uma lógica comercial pronta associada a ela, exceto que há uma verificação para garantir que a data no Product.ValidToDate deve ser mais recente ou igual à data no Product.ValidFromDate. Se necessário, é possível implementar suas própria lógica comercial com base nesses atributos. Por exemplo, você pode executar uma tarefa agendada para aposentar automaticamente os produtos da última temporada usando o valor da data no atributo Product.ValidToDate.
A amostra de código a seguir demonstra como você pode criar uma família de produtos e um registro de produto secundário.
// 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);
Definir as propriedades do produto
As propriedades do produto ajudam a definir as características do produto, como seu tamanho, sua cor ou componente. Uma propriedade do produto é definida usando a entidade DynamicProperty. Durante a definição da propriedade de um produto, você só poderá associá-la a um registro de família de produtos em um estado Draft, e não a um produto ou registro de pacote. O número máximo de propriedades de produtos que podem ser associados a rascunho de registro de família de produtos é determinado pela seguinte configuração da organização: Organization.MaximumDynamicPropertiesAllowed. O número entra em vigor ao publicar um registro de produto secundário ou grupo em uma família de produtos que as propriedades estão anexadas e não no momento de anexar as propriedades a um novo registro da família de produtos rascunho.
Dica
Você também pode usar a guia Vendas na área de configurações do sistema no Dynamics 365 ou Dynamics 365 para Outlook para configurar o número máximo de propriedades do produto.Para obter mais informações:TechNet: Gerenciar a configuração do catálogo de produtos.
Durante a criação de uma propriedade de produto, especifique seu nome, o registro da família do produto no estado Draft com o qual ele está associado, atributos da propriedade com se ela está oculta, se é obrigatória ou somente leitura, e o tipo de dados da propriedade. Uma propriedade do produto pode ter um dos seguintes tipos de dados:
Valor |
Tipo de dados |
---|---|
0 |
Conjunto de Opções |
1 |
Decimal |
2 |
Número de Ponto Flutuante |
3 |
Linha Única de Texto |
4 |
Número Inteiro |
Você não poderá modificar o tipo de dados de uma propriedade do produto depois que ela tiver sido criada. Quando você cria uma propriedade do produto, ela é criada no estado Draft.
O código de exemplo a seguir demonstra como você pode criar uma propriedade do produto:
DynamicProperty newProperty = new DynamicProperty
{
Name = "Example Property",
RegardingObjectId = new EntityReference(Product.EntityLogicalName,
_productFamilyId),
IsReadOnly = true,
IsRequired = true,
IsHidden = false,
DataType = new OptionSetValue(3), //Single line of text
DefaultValueString = "Default Value"
};
_productPropertyId = _serviceProxy.Create(newProperty);
Para obter o exemplo completo, veja Exemplo: Criar e publicar produtos
Observação
Quando você criar uma propriedade do produto do tipo de dados Option Set, deverá definir as opções individuais para a propriedade do produto ao criar registros da entidade DynamicPropertyOptionSetItem. Cada registro da entidade armazena informações sobre a opção individual onde os atributos DynamicPropertyOptionSetItem.DynamicPropertyOptionName e DynamicPropertyOptionSetItem.DynamicPropertyOptionValue definem o nome e o valor da opção respectivamente, e você pode associar registros de opção individuais para a instância da propriedade do produto pai usando o atributo DynamicPropertyOptionSetItem.DynamicPropertyId .
Para obter mais informações sobre como criar e gerenciar propriedades do produto usando o cliente Web, consulte Ajuda e Treinamento: Usar propriedades para descrever um produto.
Observação
A maneira de definir uma propriedade de produtos determina como podem ser usados pelo agente de vendas no tempo de execução, ou seja, ao adicionar um produto associado a uma oportunidade, uma cotação, um pedido ou a uma fatura. Um valor de propriedade do produto atualizável pode ser alterado no tempo de execução, enquanto o valor de uma propriedade de produto somente leitura não pode. Para a propriedade do produto definida como necessário, um valor para a propriedade deve ser especificado no tempo de execução. Caso contrário, a propriedade é exibida como não resolvida. Uma propriedade oculta não será exibida para os agentes de vendas no tempo de execução.
Além disso, as propriedades do produto não afetam o preço de um produto. Isso implica que o mecanismo de precificação do Dynamics 365 não oferece suporte a mudança de preço de um produto com base em uma alteração nos valores de propriedade do produto.
Alterar as propriedades do produto
É importante conhecer os vários estágios da propriedade do produto para compreender como e quando ela poderá ser alterada. Uma propriedade do produto estar em um estado Rascunho, Ativo ou Desativado . Quando um produto é criado, ele está no estado Rascunho e muda para o estado Ativo assim que o registro de família de produtos ao qual está associado é publicado. Quando o registro de família de produtos associado é desativado, o estado da propriedade do produto também é alterado para Retired.
Uma propriedade do produto pode ser alterada em dois níveis: primeiro, no nível da família de produtos ao qual a propriedade do produto está associada; segundo, no nível da família de produtos filhos, do produto ou do pacote, onde a propriedade do produto é herdada.
A alteração da propriedade do produto para a família de produtos à qual ele está associado
Para um registro da família de produtos Draft , você pode alterar uma propriedade do produto associada a ele. Depois que você publicar o registro de família de produtos (ele mudará para o estado Active), não poderá alterar a propriedade do produto até revisar o registro da família de produtos. Depois de revisar o registro da família de produtos (ele muda para o estado Under Revision), substitua a versão publicada (ativa) da propriedade para fazer alterações. Para obter informações sobre o ciclo de vida do produto, consulte Publicar, revisar, reverter, aposentar e ativar produtos (ciclo de vida do produto)
Alteração da propriedade do produto herdada para a família de produtos filhos, o produto ou o pacote
Para uma propriedade do produto no estado Draft, os registros da família de produtos filhos, do produto e do pacote podem substituir a propriedade herdada para definir sua própria versão da propriedade. Por exemplo, substitua a propriedade herdada para alterar seu nome ou alterar atributos de oculto para visível, obrigatório para opcional ou somente leitura para atualizável. Não é possível substituir ou alterar o tipo de dados da propriedade herdada.
Para substituir uma propriedade do produto, crie uma instância da propriedade do produto e defina a propriedade BaseDynamicPropertyId como o GUID da propriedade que você esteja substituindo. Além disso, é possível associar a nova instância da propriedade ao registro da família de produtos filhos, do produto ou do pacote onde ela estiver sendo substituída.
O código de exemplo a seguir demonstra como você pode substituir um registro de propriedade do produto existente, digamos, com o GUID _productPropertyId, e associar a propriedade substituída ao registro do produto, digamos, com o GUID _product1Id. Depois disso, você poderá atualizar os atributos da nova propriedade para especificar seus próprios valores para concluir a substituição.
// Override a product property
DynamicProperty newOverrideProperty = new DynamicProperty();
newOverrideProperty.BaseDynamicPropertyId = new EntityReference(DynamicProperty.EntityLogicalName,
_productPropertyId);
newOverrideProperty.RegardingObjectId = new EntityReference(Product.EntityLogicalName, _product1Id);
_productOverridenPropertyId = _serviceProxy.Create(newOverrideProperty);
// Retrieve the attributes of the cloned property you want to update
ColumnSet columns = new ColumnSet();
columns.AddColumns("name", "isreadonly", "isrequired");
DynamicProperty retrievedOverridenProperty = (DynamicProperty)_serviceProxy.Retrieve(
DynamicProperty.EntityLogicalName, _productOverridenPropertyId,
columns);
// Update the attributes
retrievedOverridenProperty.Name = "Overridden Example Property";
retrievedOverridenProperty.IsReadOnly = true;
retrievedOverridenProperty.IsRequired = false;
_serviceProxy.Update(retrievedOverridenProperty);
Para obter o exemplo completo, veja Exemplo: Criar e publicar produtos
Para uma propriedade do produto no estado Active, você pode substituir a propriedade herdada pelo registro da família de produtos filhos, do produto ou do pacote, desde que ambas as cláusulas a seguir sejam verdadeiras:
O registro da família de produtos filhos, do produto ou do pacote está no estado Em Revisão.
A propriedade do produto ativo herdado já foi substituída.
Para substituir uma propriedade do produto, crie uma instância da propriedade do produto e defina a propriedade BaseDynamicPropertyId como o GUID da propriedade que já foi substituída. Além disso, é possível associar a nova instância da propriedade ao registro da família de produtos filhos, do produto ou do pacote que esteja no estágio Under Revision.
O código de exemplo a seguir demonstra como você pode substituir um registro de propriedade do produto no estado ativo que já tenha sido substituído, digamos, com o GUID _productOverridenPropertyId, e associar a nova propriedade ao registro do produto no estado Under Revision, digamos, com o GUID _product1Id. Depois disso, você poderá atualizar os atributos da nova propriedade para especificar seus próprios valores e concluir a substituição.
// Overwrite a product property
DynamicProperty newOverwriteProperty = new DynamicProperty();
newOverwriteProperty.BaseDynamicPropertyId = new EntityReference(DynamicProperty.EntityLogicalName,
_productOverridenPropertyId);
newOverwriteProperty.RegardingObjectId = new EntityReference(Product.EntityLogicalName,
_product1Id);
_productOverwrittenPropertyId = _serviceProxy.Create(newOverwriteProperty);
// Retrieve the attributes of the cloned property you want to update
ColumnSet myCols = new ColumnSet();
myCols.AddColumns("name", "isreadonly", "isrequired");
DynamicProperty retrievedOverwrittenProperty = (DynamicProperty)_serviceProxy.Retrieve(
DynamicProperty.EntityLogicalName, _productOverwrittenPropertyId,
myCols);
// Update the attributes of the cloned property to complete the overwrite
retrievedOverwrittenProperty.Name = "Overwritten Example Property";
retrievedOverwrittenProperty.IsReadOnly = true;
retrievedOverridenProperty.IsRequired = false;
_serviceProxy.Update(retrievedOverwrittenProperty);
Para obter o exemplo completo, veja Exemplo: Criar e publicar produtos
Pacotes e kits
Um pacote é um recurso introduzido no Dynamics 365 para substituir a funcionalidade mais antiga do kit. Semelhante a um kit, um conjunto é uma coleção de produtos que são vendidos por unidade. O empacotamento do produto é útil ao agrupar produtos de forma que os clientes tenham mais benefícios de linha completa de produtos ou para oferecer descontos em produtos agrupados permite agrupar produtos e vender como uma unidade.
Somente os produtos podem ser acrescentados a um pacote; você não pode adicionar uma família de produtos, um pacote ou um registro de kit em um pacote. Você pode adicionar produtos a um pacote ou um kit criando um registro de associação do produto com a entidade ProductAssociation. O registro ProductAssociation.ProductId especifica o pacote ou kit que deseja adicionar um produto o ProductAssociation.AssociatedProduct especifica o produto a ser adicionado. O número máximo de produtos que podem ser acrescentados a um pacote é determinado pela seguinte configuração da organização: Organization.MaxProductsinBundle.
Você também pode usar a guia Vendas na área de configurações do sistema no Dynamics 365 ou Dynamics 365 para Outlook para especificar o número máximo de produtos que podem ser adicionados a um pacote.Para obter mais informações:TechNet: Gerenciar a configuração do catálogo de produtos
O código de amostra a seguir demonstra como você pode adicionar produtos a um pacote.
// 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");
Para o exemplo completo, consulte Exemplo: Adicionar produtos ao grupo.
Diferenças entre kits e pacotes
Kits e pacotes permitem agrupar produtos em uma única unidade, mas aqui estão algumas diferenças entre os dois.
Kits |
Pacotes |
---|---|
Todos os produtos em um kit são obrigatórios. |
Alguns produto em um pacote podem ser opcionais. |
Os kits suportam o aninhamento; você pode adicionar um kit em outro kit. |
Você não pode adicionar um pacote em outro pacote. É possível adicionar produtos somente a um pacote. |
Ao adicionar um kit em uma oportunidade, cotação, pedido ou fatura, você só pode ver os detalhes de nível de kit; você não pode ver produtos individuais no kit. |
Ao adicionar um grupo em uma oportunidade, cotação, pedido ou fatura, você só pode ver os detalhes de nível de grupo; assim como produtos individuais no grupo. |
Observação
Os kits foram substituídos no Dynamics 365; use os pacotes em seu lugar.
Defina relacionamentos de produtos para sugestões avançadas durante a venda do produto
Você pode definir produtos relacionados para um produto que serão exibidos como sugestões para os agentes de vendas durante o gerenciamento de oportunidades ou do pedido. As sugestões do produto permite que seus agentes de vendas a recomendem produtos e pacotes/kit relacionados aos clientes e aumentem as vendas de produtos. Você pode definir os seguintes relacionamentos para um produto: acessório, venda cruzada, substituto e upsell. Por exemplo, o Surface Pro pode ser adicionado como um produto upsell do Surface RT para que quando o agente de vendas esteja adicionando o Surface RT em qualquer oportunidade, cotação, pedido ou fatura, o Surface Pro é sugerido como a opção de upsell.
Use o atributo ProductSubstitute.SalesRelationshipType para definir os relacionamentos do produto. Defina o valor do atributo para:
0 para upsell
1 para venda cruzada
2 para acessório
3 para substituto
Ao definir relacionamentos de produtos, é importante definir a ordem do relacionamento para evitar a duplicação de dados. As direções suportadas nos relacionamentos do produto são:
Relacionamento de produto |
Direção |
---|---|
Acessório |
Unidirecional |
Venda cruzada |
Unidirecional ou bidirecional |
Substituto |
Unidirecional ou bidirecional |
Upsell |
Unidirecional |
Use o atributo ProductSubstitute.Direction para especificar a direção de um relacionamento do produto. Defina o valor do atributo para:
0 para unidirecional
1 para bidirecional
O código de amostra a seguir demonstra como você pode definir relações para produtos..
// 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);
Clonar uma família de produtos, um produto ou um pacote
Use a mensagem CloneProductRequest para clonar uma família de produtos, produto ou registro de grupo e criar uma cópia do registro no mesmo nó principal. Você deve fornecer a ID de registro para clonar. Clonar um registro de produtos também copia as propriedades do produto. O registro clonado é criado com o carimbo de data e hora acrescentado aos valores originais nos atributos Product.Name e Product.ProductNumber; o carimbo de data e hora indica a hora em que o registro foi clonado. O código de amostra a seguir demonstra como clonar um produto.
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);
Próxima etapa
Publicar os registros de produtos para tornar os produtos disponíveis para venda pelos agentes de vendas.Para obter mais informações:Publicar uma família de produtos, um produto ou um pacote
Confira Também
Publicar, revisar, reverter, aposentar e ativar produtos (ciclo de vida do produto)
Exemplo: Criar e publicar produtos
Exemplo: Clonar registros do produto
Exemplo: Adicionar produtos ao grupo
Entidades do catálogo de produtos
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais