Delen via


Productfamilies, producten, bundels en producteigenschappen maken en beheren

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Definieer uw productcatalogus door uw producten in een hiërarchische structuur te ordenen bij het maken van producten en bundels onder een productfamilie, het definiëren van gerelateerde producten en het toevoegen van eigenschappen (kenmerken) aan de bovenliggende productfamilie zodat alle onderliggende producten en bundels onder een productfamilie automatisch de eigenschappen overnemen.

Standaard hebben productiefamilies, producten of bundelrecords bij het maken de status Concept. Nadat u een product hebt gemaakt, gerelateerde producten hebt gedefinieerd en kenmerken voor de bovenliggende productfamilierecord hebt geconfigureerd, moet u de productfamilie, het product of de bundelrecord publiceren om deze in het systeem beschikbaar te stellen aan uw verkoopagenten voor de verkoop.Meer informatie:Een productfamilie, product of bundel publiceren

Notitie

Voor producten die niet zijn gekoppeld aan een productfamilie, dat wil zeggen producten waaraan geen bovenliggende productfamilierecord is toegewezen, kunt u deze direct in de status Actief maken door het kenmerk Organization.CreateProductsWithoutParentInActiveState in te stellen op 1 (waar). Dit kenmerk is standaard ingesteld op 0 (onwaar) voor een volledig nieuwe installatie van Microsoft Dynamics 365 en op 1 (waar) als u upgrade van een eerdere versie van Dynamics 365, om te zorgen voor compatibiliteit voor uw toepassingen die werken met de eerdere versie van de Dynamics 365, waarin de productrecords werden gemaakt met de status Actief.

U kunt ook het tabblad Verkoop in het systeeminstellingengebied in Microsoft Dynamics 365 of Microsoft Dynamics 365 voor Outlook gebruiken om op te geven of de producten in een actieve status worden gemaakt.Meer informatie:TechNet: Configuratie van productcatalogi beheren

In dit onderwerp

Producten, productfamilies en bundels definiëren

Producteigenschappen definiëren

Bundels en kits

Productrelaties voor verbeterde suggesties tijdens productverkopen definiëren

Een productfamilie, product of bundel klonen

Producten, productfamilies en bundels definiëren

Gebruik het kenmerk Product.ProductStructure om te definiëren of een item een productfamilie, product of bundel is. Stel de waarde van dit kenmerk in op:

  • 1 om een product te maken

  • 2 om een productfamilie te maken

  • 3 om een bundel te maken

Hier volgen enkele belangrijke punten ter overweging bij het definiëren van productfamilies, producten en bundels:

  • Een productfamilierecord kan meerdere exemplaren van een onderliggende productfamilie, product en bundel in een hiërarchische structuur bevatten. Voor een exemplaar van een onderliggende productfamilie, een onderliggend product of een onderliggende bundel definieert u het exemplaar van de bovenliggende productfamilie via het kenmerk Product.ParentProductId. U kunt de bovenliggende record niet meer wijzigen nadat u deze hebt ingesteld.

  • Een product of bundel kan niet worden ingesteld als bovenliggend element. Dit impliceert dat een product of bundelrecord geen onderliggende records kan hebben.

  • Een exemplaar van een productfamilie, product of bundel kan deel uitmaken van slechts één exemplaar van een productfamilie.

  • Er geldt geen limiet voor het nestingsniveau voor een productfamilie.

  • Aan de kenmerken Product.ValidFromDate en Product.ValidToDate is geen kant-en-klare bedrijfslogica gekoppeld, behalve dat wordt gecontroleerd of de datum in Product.ValidToDate later ligt dan of gelijk is aan de datum in Product.ValidFromDate. Indien nodig kunt u uw eigen bedrijfslogica implementeren op basis van deze kenmerken. U kunt bijvoorbeeld een geplande taak uitvoeren om automatisch producten van het vorige seizoen terug te trekken met behulp van de datumwaarde in het veld Product.ValidToDate.

In de volgende voorbeeldcode ziet u hoe u een afzonderlijke productfamilie en een onderliggende productrecord kunt maken.

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

Producteigenschappen definiëren

De producteigenschappen helpen om de kenmerken van het product te bepalen zoals omvang, kleur of component. Een producteigenschap wordt gedefinieerd met behulp van de entiteit DynamicProperty. Bij het definiëren van een producteigenschap kunt u deze alleen koppelen aan een productfamilierecord in een Draft-status, en niet aan een product- of bundelrecord. Het maximale aantal producteigenschappen dat aan een concept-productfamilierecord kan worden gekoppeld wordt bepaald door de volgende organisatie-instelling: Organization.MaximumDynamicPropertiesAllowed. Dit aantal wordt van kracht als u een onderliggende productrecord of bundel publiceert onder een productfamilie waaraan de eigenschappen zijn gekoppeld en niet als u de eigenschappen koppelt aan een concept van een productfamilierecord.

Tip

U kunt het tabblad Verkoop in het systeeminstellingengebied in Dynamics 365 of Dynamics 365 voor Outlook gebruiken om het maximumaantal producteigenschappen te configureren.Meer informatie:TechNet: Configuratie van productcatalogi beheren.

Bij het maken van een producteigenschap bepaalt u de naam, het productfamilierecord in de status Draft waarmee het is gekoppeld, de kenmerken van de eigenschap, zoals verborgen, vereist, alleen-lezen en het gegevenstype van de eigenschap. Een producteigenschap kan een van de volgende gegevenstypen zijn:

Waarde

Type gegevens

0

Optieset

1

Decimaal

2

Getal met drijvende komma

3

Eén tekstregel

4

Geheel getal

U kunt het gegevenstype van een producteigenschap niet meer wijzigen nadat deze is gemaakt. Wanneer u een producteigenschap maakt, wordt deze gemaakt in de status Draft.

In de volgende voorbeeldcode ziet u hoe u een productcategorie kunt maken:

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

Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Producten maken en publiceren.

Notitie

Als u een producteigenschap van het gegevenstype Option Set hebt gemaakt, moet u afzonderlijke opties voor de producteigenschap definiëren door het maken van DynamicPropertyOptionSetItem entiteitsrecords. In elke entiteit wordt informatie opgeslagen over de afzonderlijke optie waarin de kenmerken DynamicPropertyOptionSetItem.DynamicPropertyOptionName en DynamicPropertyOptionSetItem.DynamicPropertyOptionValue respectievelijk de waarde en optienaam definiëren, en u kunt afzonderlijke optierecords koppelen aan het bovenliggende exemplaar van de producteigenschap met het kenmerk DynamicPropertyOptionSetItem.DynamicPropertyId.

Voor meer informatie over het maken en beheren van producteigenschappen met de webclient raadpleegt u Help en training: Eigenschappen gebruiken om een product te beschrijven.

Notitie

De manier waarop u een producteigenschap definieert bepaalt op welke manier deze door de verkoopagent kan worden gebruikt tijdens uitvoeringstijd, dat wil zeggen tijdens het toevoegen van een gekoppeld product aan een verkoopkans, prijsopgave, order of factuur. De waarde van een herzienbare producteigenschap kan worden gewijzigd tijdens uitvoeringstijd, terwijl de waarde van een alleen-lezen producteigenschap niet kan worden gewijzigd. Voor een producteigenschappenset die is ingesteld als verplicht, moet de waarde voor de eigenschap tijdens de uitvoeringstijd worden opgegeven. Anders wordt de eigenschap weergegeven als niet-omgezet. Een verborgen eigenschap wordt niet weergegeven aan verkoopagenten tijdens uitvoeringstijd.

Ook hebben producteigenschappen geen invloed op de prijs van een product. Dit impliceert dat de Dynamics 365-prijsengine geen ondersteuning biedt voor het wijzigen van de prijs van een product op basis van een wijziging in de producteigenschapswaarden.

Producteigenschappen wijzigen

Het is belangrijk om de verschillende statussen van de producteigenschap te weten zodat u begrijpt hoe en wanneer deze kunnen worden gewijzigd. Een producteigenschap kan de status Concept, Actief of Afgedankt hebben. Wanneer een product wordt gemaakt, heeft het de status Concept. Dit verandert in de status Actief als de productfamilierecord waaraan het is gekoppeld, wordt gepubliceerd. Als de bijbehorende productfamilierecord wordt afgedankt, verandert de status van de producteigenschap ook in Retired.

Een producteigenschap kan op twee niveaus worden gewijzigd: eerst op het productgroepniveau waartoe de producteigenschap behoort; ten tweede op het onderliggende niveau van productgroep, product of bundel waarvan de producteigenschap wordt overgenomen.

Producteigenschap wijzigen voor de gekoppelde productfamilie

Voor een productfamilierecord Draft kunt u een gekoppelde producteigenschap wijzigen. Zodra u de productfamilierecord (wijzigingen in status Active) publiceert, kunt u de producteigenschap niet wijzigen totdat u de productfamilierecord aanpast. Na het wijzigen van de productfamilierecord (wijzigingen in status Under Revision), overschrijft u de gepubliceerde versie van de eigenschap om de wijzigingen door te voeren. Meer informatie over de productlevenscyclus vindt u in Producten publiceren, herzien, herstellen, terugtrekken en activeren (productlevenscyclus)

De overgenomen producteigenschap voor de onderliggende productfamilie, product of bundel wijzigen

Voor een producteigenschap in de status Draft kunnen de onderliggende records voor productfamilie, product en bundel de overgenomen eigenschap negeren om hun eigen versie van de eigenschap te definiëren. Negeer bijvoorbeeld de overgenomen eigenschap om de naam of kenmerken te wijzigen van verborgen in zichtbaar, van vereist in optioneel, of van alleen-lezen in herzienbaar. U kunt het gegevenstype van de overgenomen eigenschap niet negeren of wijzigen.

Als u een producteigenschap wilt negeren, maakt u een exemplaar van de producteigenschap en stelt u de eigenschap BaseDynamicPropertyId in op de GUID van de eigenschap die u wilt negeren. Bovendien koppelt u ook het nieuwe eigenschapexemplaar aan de onderliggende record voor productfamilie, product of bundel waar deze wordt genegeerd.

In de volgende voorbeeldcode ziet u hoe u een bestaande record voor de producteigenschap kunt negeren met de GUID _productPropertyId en de genegeerde eigenschap kunt koppelen aan de productrecord, met GUID _product1Id Vervolgens kunt u de kenmerken van de nieuwe eigenschap bijwerken om uw eigen waarden op te geven en het negeren te voltooien.

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

Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Producten maken en publiceren.

Voor een producteigenschap in de status Active kunt u de overgenomen eigenschap voor de onderliggende record van productfamilie, product of bundel overschrijven op voorwaarde dat de volgende uitspraken waar zijn:

  • De onderliggende record voor productfamilie, product of bundel hebben de status Wordt herzien.

  • De overgenomen actieve producteigenschap wordt al genegeerd.

Als u een producteigenschap wilt overschrijven, maakt u een exemplaar van de producteigenschap en stelt u de eigenschap BaseDynamicPropertyId in op de GUID van de reeds genegeerde eigenschap. Bovendien koppelt u ook het nieuwe eigenschapexemplaar aan de record voor productfamilie, product of bundel die in de fase Under Revision staat.

In de volgende voorbeeldcode ziet u hoe u een record voor de producteigenschap in de actieve status die al is genegeerd, kunt overschrijven met de GUID _productOverridenPropertyId en de nieuwe eigenschap kunt koppelen aan de productrecord in de status Under Revision, met GUID _product1Id. Vervolgens kunt u de kenmerken van de nieuwe eigenschap bijwerken om uw eigen waarden op te geven en het overschrijven te voltooien.

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

Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Producten maken en publiceren.

Bundels en kits

Een bundel is een functie die in Dynamics 365 is geïntroduceerd ter vervanging van de oudere kitfunctionaliteit. Net als een kit is een bundel een verzameling producten die als één eenheid wordt verkocht. Producten bundelen is nuttig bij het zodanig groeperen van producten dat klanten meer baat hebben bij het volledige aanbod van producten of bij het bieden van kortingen op gebundelde producten zodat u producten kunt groeperen en als één eenheid verkopen.

Alleen producten kunnen aan een bundel worden toegevoegd; u kunt een geen productfamilie, bundel of kitrecord aan een bundel toevoegen. U kunt producten aan een bundel of een kit toevoegen door een productkoppelingsrecord te maken met de entiteit ProductAssociation. De ProductAssociation.ProductId-record geeft de bundel of de kit op waaraan u een product wilt toevoegen en de ProductAssociation.AssociatedProduct geeft het product aan dat moet worden toegevoegd. Het maximale aantal producten dat aan een bundel kan worden toegevoegd, wordt bepaald door de volgende organisatie-instelling: Organization.MaxProductsinBundle.

U kunt het tabblad Verkoop in het systeeminstellingengebied in Dynamics 365 of Dynamics 365 voor Outlook gebruiken om het maximumaantal producten op te geven dat aan een bundel kan worden toegevoegd.Meer informatie:TechNet: Configuratie van productcatalogi beheren

In de volgende voorbeeldcode ziet u hoe u producten kunt toevoegen aan een bundel.

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

Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Producten toevoegen aan een bundel.

Verschillen tussen kits en bundels

Zowel kits als bundels stellen u in staat producten in één eenheid te groeperen, maar zijn enkele verschillen tussen de twee.

Kits

Bundels

Alle producten in een kit zijn verplicht.

Sommige producten in een bundel kunnen optioneel zijn.

Kits ondersteunen nesten; u kunt een kit toevoegen aan een andere kit.

U kunt niet een bundel toevoegen aan een andere bundel. U kunt alleen producten toevoegen aan een bundel.

Tijdens het toevoegen van een kit aan een verkoopkans, prijsopgave, order of factuur kunt u alleen de details op kitniveau bekijken; u kunt geen afzonderlijke producten in de kit weergeven.

Tijdens het toevoegen van een bundel aan een verkoopkans, prijsopgave, order of factuur kunt u zowel de details op bundelniveau als afzonderlijke producten in de bundel bekijken.

Notitie

Kits zijn afgeschaft in Dynamics 365; u moet in plaats hiervan bundels gaan gebruiken.

Productrelaties voor verbeterde suggesties tijdens productverkopen definiëren

U kunt gerelateerde producten definiëren voor een product die worden weergegeven als suggesties voor uw verkoopagenten tijdens het beheren van verkoopkansen of orders. De productsuggesties voor een product stellen uw verkoopagenten in staat gerelateerde producten en bundels/kits aan te bevelen aan de klanten en de productverkopen te vergroten. U kunt de volgende relaties voor een product definiëren: accessoire, cross-sell, vervangend product en up-sell. Zo kan bijvoorbeeld Surface Pro worden toegevoegd aan Surface RT als product voor up-selling zodat, wanneer u verkoopagent Surface RT toevoegt aan een verkoopkans, prijsopgave, order of factuur, Surface Pro wordt gesuggereerd als optie voor up-selling.

Gebruik het kenmerk ProductSubstitute.SalesRelationshipType om productrelaties te definiëren. Stel de waarde van dit kenmerk in op:

  • 0 voor up-sell

  • 1 voor cross-sell

  • 2 voor accessoire

  • 3 voor vervangend product

Bij het definiëren van productrelaties is het belangrijk dat u de richting van de relatie definieert op verdubbeling van gegevens te voorkomen. De ondersteunde richtingen voor de productrelaties zijn:

Productrelatie

Richting

Accessoire

In één richting

Cross-sell

In één richting of in twee richtingen

Vervanging

In één richting of in twee richtingen

Up-sell

In één richting

Gebruik het kenmerk ProductSubstitute.Direction om de richting voor een productrelatie op te geven. Stel de waarde van dit kenmerk in op:

  • 0 voor in één richting

  • 1 voor in twee richtingen

In de volgende voorbeeldcode ziet u hoe u relaties kunt definiëren voor producten.

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

Een productfamilie, product of bundel klonen

Gebruik het bericht CloneProductRequest om een productfamilie-, product- of bundelrecord te klonen en een kopie van de record te maken onder hetzelfde bovenliggende knooppunt. U moet de id opgeven van de record die u wilt klonen. Bij het klonen van een productrecord worden ook de eigenschappen van het product gekopieerd. De gekloonde record wordt gemaakt met de datum en tijd toegevoegd aan de oorspronkelijke waarden in de kenmerken Product.Name en Product.ProductNumber; de datumtijdstempel geeft de tijd aan waarop de record is gekloond. In de volgende voorbeeldcode ziet u hoe u een productrecord kloont.

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

Volgende stap

Publiceer uw productrecords om producten beschikbaar te stellen voor verkoop aan uw verkoopagenten.Meer informatie:Een productfamilie, product of bundel publiceren

Zie ook

Producten publiceren, herzien, herstellen, terugtrekken en activeren (productlevenscyclus)
Voorbeeld: Producten maken en publiceren
Voorbeeld: productrecords klonen
Voorbeeld: Producten toevoegen aan een bundel
Productcatalogusentiteiten

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht