Partager via


Créer et gérer des familles de produits, des produits, des offres groupées et des propriétés de produit

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Définissez votre catalogue en organisant vos produits selon une structure hiérarchique, en créant des produits et des offres groupées sous une famille de produits, en définissant des produits associés et en ajoutant des propriétés (attributs) à la famille de produits parent afin que tous les produits et offres groupées enfants d'une famille de produits héritent automatiquement des propriétés.

Par défaut, lorsque vous créez l'enregistrement d'une famille de produits, d'un produit ou d'une offre groupée, il est dans l'état Brouillon. Après avoir créé un produit, défini les produits associés et configuré les attributs pour l'enregistrement de la famille de produits parent, vous devez publier l'enregistrement de la famille de produits, du produit ou de l'offre groupée pour qu'il devienne accessible dans le système par vos agents commerciaux.Pour plus d'informations :Publication d'une famille de produits, d'un produit ou d'une offre groupée

Notes

Pour les produits qui ne sont pas associés à une famille de produits, c'est-à-dire les produits qui n'ont pas un enregistrement associé de famille de produits parent, vous pouvez les créer directement à l'état Actif en définissant l'attribut Organization.CreateProductsWithoutParentInActiveState avec la valeur 1 (true). Par défaut, cet attribut est défini sur 0 (faux) pour une installation récente de Microsoft Dynamics 365 et sur 1 (vrai) si vous effectuez une mise à niveau depuis une version précédente de Dynamics 365, afin de garantir la compatibilité pour vos applications s'exécutant avec la version précédente de Dynamics 365 où les enregistrements de produit ont été créés dans un état Actif.

Vous pouvez également utiliser l'onglet Ventes dans la zone des paramètres système de Microsoft Dynamics 365 ou Microsoft Dynamics 365 pour Outlook pour spécifier si les produits sont créés avec un état Actif.Pour plus d'informations :TechNet : Gérer la configuration du catalogue de produits.

Contenu de la rubrique

Définir les produits, familles de produits et offres groupées

Définir les propriétés de produit

Offres groupées et kits

Définir une relation de produit pour des suggestions améliorées lors de la vente de produit

Cloner une famille de produits, un produit ou une offre groupée

Définir les produits, familles de produits et offres groupées

Utilisez l'attribut Product.ProductStructure pour déterminer si un élément est une famille de produits, un produit ou une offre groupée. Définissez la valeur de l'attribut sur :

  • 1 pour créer un produit

  • 2 pour créer une famille de produits

  • 3 pour créer une offre groupée

Voici quelques aspects importants à prendre en compte lors de la définition des familles de produits, des produits et des offres groupées :

  • Un enregistrement de famille de produits peut contenir plusieurs familles de produits enfants, de produits et d'offres groupées, selon une structure hiérarchique. Pour une famille de produits enfant, un produit enfant ou une offre groupée enfant, vous définissez l'instance de la famille de produits parent avec l'attribut Product.ParentProductId. Vous ne pouvez pas modifier l'enregistrement parent une fois que vous l'avez défini.

  • Un produit ou une offre groupée ne peut pas être définie comme parent, ce qui implique qu'un enregistrement de produit ou d'offre groupée ne peut pas contenir d'enregistrements enfants.

  • Une instance de famille de produits, de produit ou d'offre groupée peut partie d'une seule instance de famille de produits.

  • Il n'y a pas de limite au niveau d'imbrication d'une famille de produits.

  • Les attributs Product.ValidFromDate et Product.ValidToDate n'ont pas de logique métier prête à l'emploi associée, mais une vérification a lieu pour s'assurer que la date dans Product.ValidToDate est ultérieure ou égale à la date dans Product.ValidFromDate. Si nécessaire, vous pouvez implémenter votre propre logique métier en fonction de ces attributs. Par exemple, vous pouvez exécuter une tâche planifiée pour mettre automatiquement hors service les produits de la saison passée à l'aide de la valeur de date de l'attribut Product.ValidToDate.

L'exemple de code suivant illustre comment créer une famille de produits et un enregistrement de produit enfant.

// 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);

Définir les propriétés de produit

Les propriétés de produit vous permettent de définir les caractéristiques d'un produit telles que sa taille, sa couleur ou ses composants. Une propriété de produit est définie à l'aide de l'entité DynamicProperty. Lors de la définition d'une propriété de produit, vous ne pouvez l'associer qu'à un enregistrement de famille de produits à l'état Draft, et pas à un enregistrement de produit ou d'offre groupée. Le nombre maximal de propriétés de produit qui peuvent être associées à un enregistrement de famille de produits à l'état brouillon est déterminé par le paramètre d'organisation suivant : Organization.MaximumDynamicPropertiesAllowed. Le nombre entre en application lorsque vous publiez un enregistrement de produit enfant ou une offre groupée d'une famille de produit à laquelle les propriétés sont associées, pas au moment où vous attachez les propriétés à un enregistrement de famille de produits brouillon.

Conseil

Vous pouvez aussi utiliser l'onglet Ventes de la zone des paramètres système de Dynamics 365 ou Dynamics 365 pour Outlook pour configurer le nombre maximal de propriétés de produit.Pour plus d'informations :TechNet : Gérer la configuration du catalogue de produits.

Lorsque vous créez une propriété de produit, vous spécifiez son nom, l'enregistrement de la famille de produits à l'état Draft avec lequel elle est associée, les attributs de la propriété, par exemple si elle est masquée, obligatoire ou en lecture seule, ainsi que le type de données de la propriété. Une propriété de produit peut avoir l'un des types de données suivants :

Valeur

Type de données

0

Groupe d’options

1

Décimal

2

Nombre à virgule flottante

3

Une seule ligne de texte

4

Nombre entier

Vous ne pouvez pas modifier le type de données d'une propriété de produit après sa création. Lorsque vous créez une propriété du produit, son état est Draft.

L'exemple de code suivant montre comment créer une propriété de produit :

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);

Pour obtenir l’exemple de code complet, voir Exemple : créer et publier des produits.

Notes

Lorsque vous créez une propriété de produit du type de données Option Set, vous devez définir des options individuelles pour la propriété de produit en créant des enregistrements d'entité DynamicPropertyOptionSetItem. Chaque enregistrement d'entité stocke des informations sur l'option individuelle dont les attributs DynamicPropertyOptionSetItem.DynamicPropertyOptionName et DynamicPropertyOptionSetItem.DynamicPropertyOptionValue définissent le nom et la valeur de l'option respectivement, et vous pouvez associer des enregistrements d'option individuelle à l'instance parente de la propriété de produit à l'aide de l'attribut DynamicPropertyOptionSetItem.DynamicPropertyId.

Pour plus d'informations sur la création et la gestion des propriétés de produit à l'aide du client Web, voir Aide et formation : Utilisation de propriétés pour décrire un produit

Notes

La façon de définir une propriété de produit détermine comment elle peut être utilisé par l'agent de vente au moment de l'exécution, à savoir en ajoutant un produit associé à une opportunité, un devis, une commande ou une facture. Une valeur de propriété de produit actualisable peut être modifiée au moment de l'exécution, contrairement à la valeur d'une propriété de produit en lecture seule. Pour une propriété de produit définie comme obligatoire, une valeur de la propriété doit être spécifiée à l'exécution. Sinon, la propriété apparaît comme non résolue. Une propriété masquée ne sera pas affichée aux agents de vente à l'exécution.

En outre, les propriétés de produit n'affectent pas la tarification d'un produit. Cela implique que le moteur de tarification Dynamics 365 ne prenne pas en charge la modification du prix d'un produit en fonction de la variation des valeurs de propriété du produit.

Modifier les propriétés de produit

Il est important de connaître les différents états de la propriété de produit pour comprendre comment et quand elle peut être modifiée. Une propriété de produit peut avoir l'état Brouillon, Actif ou Mis hors service. Lorsqu'un produit est créé, son état est Brouillon. Il passe ensuite à l'état Actif une fois la publication de l'enregistrement de famille de produits auquel il est associé. Lorsque l'enregistrement de famille de produits associé est mis hors service, l'état de la propriété de produit passe aussi à l'état Retired.

Une propriété de produit peut être modifiée à deux niveaux : d'abord au niveau de la famille de produits à laquelle la propriété de produit est associée ; ensuite au niveau de la famille de produits, du produit ou de l'offre groupée enfant où la propriété de produit est héritée.

Modification de la propriété de produit associée à une famille de produits

Pour un enregistrement de famille de produits à l'état Draft , vous pouvez modifier la propriété de produit qui lui est associée. Une fois que vous publiez l'enregistrement de famille de produits (son état passe à Active), vous ne pouvez pas modifier la propriété de produit jusqu'à ce que vous révisiez l'enregistrement de famille de produits. Après avoir révisé l'enregistrement de famille de produits (son état passe à Under Revision), remplacez la version publiée (active) de la propriété pour apporter des modifications. Pour plus d'informations sur le cycle de vie des produits, voir Publication, révision, annulation, retrait et activation des produits (cycle de vie du produit)

Modification de la propriété de produit héritée pour la famille de produits, le produit ou l'offre groupée enfant

Pour une propriété de produit à l'état Draft, les enregistrements de famille de produits, de produit ou d'offre groupée enfants peuvent remplacer la propriété héritée pour définir leur propre version de la propriété. Par exemple, remplacez la propriété héritée pour modifier son nom ou faire passer les attributs de Masqué à Visible, Obligatoire à Facultatif ou En lecture seule à Actualisable. Vous ne pouvez pas remplacer ou modifier le type de données de la propriété héritée.

Pour remplacer une propriété de produit, vous créez une instance de la propriété de produit et définissez la propriété BaseDynamicPropertyId sur le GUID de la propriété que vous remplacez. En outre, vous associez la nouvelle instance de propriété à l'enregistrement de famille de produits, de produit ou d'offre groupée enfant où elle est remplacée.

L'exemple de code suivant montre comment remplacer un enregistrement de propriété de produit existant par le GUID _productPropertyId et associer la propriété remplacée de l'enregistrement de produit au GUID _product1Id. Par la suite, vous pouvez mettre à jour les attributs de la nouvelle propriété pour spécifier vos propres valeurs et terminer le remplacement.

// 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);

Pour obtenir l’exemple de code complet, voir Exemple : créer et publier des produits.

Pour une propriété de produit à l'état Active, vous pouvez remplacer la propriété héritée de l'enregistrement de famille de produits, de produit ou d'offre groupée enfant, à condition que les conditions suivantes soient remplies :

  • L'enregistrement de famille de produits, de produit ou d'offre groupée enfant a l'état En cours de révision.

  • La propriété de produit active héritée est déjà remplacée.

Pour remplacer une propriété de produit, vous créez une instance de la propriété de produit et définissez la propriété BaseDynamicPropertyId sur le GUID de la propriété déjà remplacée. En outre, vous associez la nouvelle instance de propriété à l'enregistrement de famille de produits, de produit ou d'offre groupée dont l'état est Under Revision.

L'exemple de code suivant montre comment remplacer un enregistrement de propriété de produit à l'état actif qui est déjà remplacé par le GUID _productOverridenPropertyId et associer la nouvelle propriété de l'enregistrement de produit à l'état Under Revision au GUID _product1Id. Par la suite, vous pouvez mettre à jour les attributs de la nouvelle propriété pour spécifier vos propres valeurs et terminer le remplacement.

// 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);

Pour obtenir l’exemple de code complet, voir Exemple : créer et publier des produits.

Offres groupées et kits

Une offre groupée est une fonctionnalité introduite dans Dynamics 365 pour remplacer la fonctionnalité plus ancienne de kit. Similaire au kit, une offre groupée est un ensemble de produits qui est vendue en tant qu’unité individuelle. L'offre groupée de produits est utile pour regrouper certains produits de telle façon que les clients tirent un plus grand avantage de la gamme complète de produits ou pour proposer des remises sur les produits regroupés dans l'offre et vendus comme une seule unité.

Seuls des produits peuvent être ajoutés à une offre groupée ; vous ne pouvez pas ajouter une famille de produits, une offre groupée ou un kit à une offre groupée. Vous pouvez ajouter des produits à une offre groupée ou à un kit en créant un enregistrement d'association de produit à l'aide de l'entité ProductAssociation. L'enregistrement ProductAssociation.ProductId spécifie l'offre groupée ou le kit que vous voulez ajouter à un produit et ProductAssociation.AssociatedProduct spécifie le produit à ajouter. Le nombre maximal de produits qui peuvent être ajoutés à une offre groupée est déterminé par le paramètre d'organisation suivant : Organization.MaxProductsinBundle.

Vous pouvez également utiliser l'onglet Ventes de la zone des paramètres système de Dynamics 365 ou Dynamics 365 pour Outlook pour spécifier le nombre maximal de produits qui peuvent être ajoutés à une offre groupée.Pour plus d'informations :TechNet : Gérer la configuration du catalogue de produits.

L'exemple de code suivant montre comment ajouter des produits à une offre groupée.

// 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");

Pour obtenir l’exemple de code complet, voir Exemple : Ajouter des produits à une offre groupée.

Différences entre les kits et les offres groupées

Les kits et les offres groupées vous permettent tous deux de regrouper les produits dans une seule unité, mais voici quelques différences entre les deux.

Kits

Offres groupées

Tous les produits d'un kit sont obligatoires.

Certains produits d'une offre groupée peuvent être facultatifs.

Les kits acceptent l'imbrication ; vous pouvez ajouter un kit à un autre kit.

Vous ne pouvez pas ajouter une offre groupée à une autre offre groupée. Vous pouvez ajouter uniquement des produits une offre groupée.

En ajoutant un kit à une opportunité, un devis, une commande ou une facture, vous pouvez voir uniquement les détails du niveau kit ; vous ne pouvez pas voir les différents produits du kit.

En ajoutant une offre groupée à une opportunité, un devis, une commande ou une facture, vous pouvez voir les détails du niveau offre groupée, ainsi que les différents produits de l'offre groupée.

Notes

Les kits sont déconseillés dans Dynamics 365 ; vous devez utiliser des offres groupées à la place.

Définir une relation de produit pour des suggestions améliorées lors de la vente de produit

Vous pouvez définir les produits associés d'un produit qui s'affichent comme suggestions à vos agents de vente pendant la gestion d'une opportunités ou d'une commande. Les suggestions de produits permettent à vos agents de vente de recommander les produits associés et les offres groupées/kits aux clients, et d'augmenter les ventes de produits. Vous pouvez définir les relations suivantes pour un produit : accessoire, vente croisée, substitut et -incitative. Par exemple, Surface Pro peut être ajoutée comme produit incitatif pour Surface RT de telle sorte que lorsque votre agent de vente ajoute Surface RT à une opportunité, un devis, une commande ou une facture, Surface Pro sera suggérée comme option de vente incitative.

Utilisez l'attribut ProductSubstitute.SalesRelationshipType pour définir les relations de produit. Définissez la valeur de l'attribut sur :

  • 0 pour une vente incitative

  • 1 pour une vente croisée

  • 2 pour une vente accessoire

  • 3 pour une vente substitut

Pendant la définition des relations de produit, il est important de définir la direction d'une relation pour empêcher la duplication de données. Les directions prises en charge pour les relations de produit sont :

Relation de produit

Direction

Accessoire

Unidirectionnelle

Vente croisée

Unidirectionnelle ou bidirectionnelle

Substitut

Unidirectionnelle ou bidirectionnelle

Vente incitative

Unidirectionnelle

Utilisez l'attribut ProductSubstitute.Direction pour définir la direction d'une relation de produit. Définissez la valeur de l'attribut sur :

  • 0 pour unidirectionnelle

  • 1 pour bidirectionnelle

L'exemple de code suivant montre comment définir des relations pour les produits.

// 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);

Cloner une famille de produits, un produit ou une offre groupée

Utilisez le message CloneProductRequest pour cloner un enregistrement de famille de produits, de produit ou d'offre groupée, et créer une copie de l'enregistrement sous le même nœud parent. Vous devez fournir l'ID de l'enregistrement à cloner. Le clonage d'un enregistrement de produit copie aussi les propriétés du produit. L'enregistrement cloné est créé avec l'horodatage date et heure ajouté aux valeurs d'origine dans les attributs Product.Name et Product.ProductNumber ; l'horodatage indique le moment où l'enregistrement a été copié. L'exemple de code suivant montre comment cloner un produit.

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);

Étape suivante

Publiez vos enregistrements de produit pour rendre disponibles les produits à la vente par vos agents.Pour plus d'informations :Publication d'une famille de produits, d'un produit ou d'une offre groupée

Voir aussi

Publication, révision, annulation, retrait et activation des produits (cycle de vie du produit)
Exemple : créer et publier des produits
Exemple : Cloner les enregistrements de produit
Exemple : Ajouter des produits à une offre groupée
Entités de catalogue de produits

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright