Creare e gestire le famiglie di prodotti, i prodotti, le aggregazioni e le proprietà di prodotto

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Definire il catalogo prodotti organizzando i prodotti in una struttura gerarchica creando i prodotti e le aggregazioni in una famiglia di prodotti, definendo i prodotti correlati e aggiungendo le proprietà (attributi) alla famiglia di prodotti padre in modo che tutti i prodotti e le aggregazioni figlio in una famiglia di prodotti ereditino automaticamente le proprietà.

Per impostazione predefinita, quando si crea il record di una famiglia di prodotti, un prodotto o un'aggregazione, questi si trovano in stato Bozza. Dopo aver creato un prodotto, definito i prodotti correlati e configurato gli attributi per il record della famiglia di prodotti, è necessario pubblicare il record di una famiglia di prodotti, un prodotto o un'aggregazione affinché diventi disponibile nel sistema per la vendita da parte degli agenti di vendita.Ulteriori informazioni:Pubblicare una famiglia di prodotti, un prodotto o un'aggregazione

Nota

Per i prodotti non associati a una famiglia di prodotti, cioè, i prodotti senza un record della famiglia di prodotti padre assegnato, puoi crearli direttamente in uno stato Attivo impostando l'attributo Organization.CreateProductsWithoutParentInActiveState su 1 (true). Per impostazione predefinita, questo attributo è impostato su 0 (false) per una nuova installazione di Microsoft Dynamics 365 e su 1 (true) se si sta eseguendo l'aggiornamento a una versione precedente di Dynamics 365 per assicurare la compatibilità delle applicazioni che utilizzano la versione precedente di Dynamics 365 in cui i record di prodotto erano stati creati in uno stato Attivo.

È inoltre possibile utilizzare la scheda Vendite nell'area Impostazioni di sistema in Microsoft Dynamics 365 o in Microsoft Dynamics 365 per Outlook per specificare se i prodotti sono creati in uno stato Attivo.Ulteriori informazioni:TechNet: Gestire la configurazione del catalogo prodotti

In questo argomento

Definire i prodotti le famiglie di prodotto e le aggregazioni

Definire le proprietà di prodotto

Aggregazioni e kit

Definire le relazioni di prodotto per suggerimenti avanzati durante la vendita dei prodotti

Clonare una famiglia di prodotti, un prodotto o un'aggregazione

Definire i prodotti le famiglie di prodotto e le aggregazioni

Utilizzare l'attributo Product.ProductStructure per definire se un elemento è una famiglia di prodotti, un prodotto o un'aggregazione. Impostare il valore di questo attributo su:

  • 1 per creare un prodotto

  • 2 per creare una famiglia di prodotti

  • 3 per creare un'aggregazione

Di seguito sono riportati alcuni aspetti importanti da considerare quando vengono definite le famiglie di prodotti, i prodotti e le aggregazioni:

  • Un record della famiglia di prodotti può contenere più istanze della famiglia di prodotti, del prodotto dell'aggregazione in una struttura gerarchica. Per un'istanza della famiglia di prodotti figlio, del prodotto figlio o dell'aggregazione figlio, si definisce l'istanza della famiglia di prodotti padre tramite l'attributo Product.ParentProductId Non è possibile modificare il record principale dopo averlo impostato.

  • Un prodotto o un'aggregazione non possono essere impostati come padre, ciò implica che un record del prodotto o dell'aggregazione non può avere record figlio.

  • Un'istanza della famiglia di prodotti, del prodotto o dell'aggregazione può far parte solo di un'istanza della famiglia di prodotti.

  • Non esiste un limite al livello di annidamento per una famiglia di prodotti.

  • Gli attributi Product.ValidToDate e Product.ValidFromDate non dispongono di regole business predefinite associate, ad eccezione del fatto che è presente un controllo per assicurarsi che la data in Product.ValidToDate deve essere successiva oppure uguale alla data Product.ValidFromDate. Se necessario, è possibile implementare la propria regole business in base a questi attributi. Ad esempio, è possibile eseguire un processo pianificato per ritirare automaticamente prodotti dell'ultima stagione usando il valore di data nell'attributo Product.ValidToDate.

Nel seguente codice di esempio viene dimostrato come creare il record di una famiglia di prodotti e di un prodotto figlio.

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

Definire le proprietà di prodotto

Le proprietà di prodotto consentono di definire le caratteristiche del prodotto ad esempio il colore, le dimensioni o il componente. Una proprietà di prodotto viene definita utilizzando l'entità DynamicProperty. Durante la definizione di una proprietà di prodotto, puoi associarla solo a un record di una famiglia di prodotti nello stato Draft e non a un record di aggregazione o prodotto. Il numero massimo di proprietà di prodotto che è possibile associare a un record famiglia di prodotti in bozza è determinato dalle seguenti impostazioni dell'organizzazione: Organization.MaximumDynamicPropertiesAllowed. Il numero diventa effettivo solo quando si pubblica un record di prodotto figlio o un'aggregazione in una famiglia di prodotto a cui le proprietà sono collegate e non nel momento in cui si allegano le proprietà a un record della famiglia di prodotti in bozza.

Suggerimento

È inoltre possibile utilizzare la scheda Vendite dell'area impostazioni di sistema in Dynamics 365 o Dynamics 365 per Outlook per configurare il numero massimo di proprietà del prodotto.Ulteriori informazioni:TechNet: Gestire la configurazione del catalogo prodotti.

Quando crei una proprietà di prodotto, specifichi il nome, il record famiglia di prodotti in stato di Draft a cui è associato, gli attributi della proprietà, ad esempio se è nascosto, obbligatorio o di sola lettura e il tipo di dati della proprietà. La proprietà di prodotto può essere uno dei tipi di dati seguenti:

Valore

Tipo di dati

0

Set di opzioni

1

Decimal

2

Numero a virgola mobile

3

Una riga di testo

4

Numero intero

Non puoi modificare il tipo di dati di una proprietà di prodotto una volta creata. Quando crei una proprietà di prodotto, lo stato della proprietà è Draft.

Il seguente codice di esempio illustra come creare una proprietà di prodotto:

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

Per un esempio completo, vedere Esempio: Creare e pubblicare prodotti.

Nota

Quando crei una proprietà di prodotto di tipo di dati Option Set, devi definire le diverse opzioni per la proprietà di prodotto creando record di entità DynamicPropertyOptionSetItem. In ogni record di entità sono memorizzate le informazioni sulla singola opzione in cui gli attributi DynamicPropertyOptionSetItem.DynamicPropertyOptionName e DynamicPropertyOptionSetItem.DynamicPropertyOptionValue definiscono rispettivamente il nome e il valore dell'opzione e puoi associare i singoli record opzione all'istanza di proprietà di prodotto padre utilizzando l'attributo DynamicPropertyOptionSetItem.DynamicPropertyId.

Per ulteriori informazioni sulla creazione e la gestione delle proprietà di prodotto utilizzando il client Web, vedi Guida e formazione: Utilizzare le proprietà per descrivere un prodotto.

Nota

Il modo in cui si definisce una proprietà del prodotto determina il modo in cui può essere utilizzata dall'agente di vendita nel runtime, ovvero, mentre viene aggiunto un prodotto associato a un'opportunità, un'offerta, un ordine o una fattura. Un valore della proprietà di prodotto aggiornabile può essere modificato al runtime, mentre non è possibile modificare il valore di una proprietà di prodotto di sola lettura. Per un set di proprietà del prodotto come richiesto, è necessario specificare un valore per la proprietà al momento del run-time. In caso contrario, la proprietà viene visualizzata come non risolta. La proprietà nascosta non verrà visualizzata agli agenti di vendita al momento del run-time.

Inoltre, le proprietà del prodotto non influiscono sulla determinazione dei prezzi di un prodotto. Questo implica che il motore di determinazione dei prezzi di Dynamics 365 non supporta la modifica del prezzo di un prodotto in base a una modifica nei valori della proprietà del prodotto.

Modificare le proprietà di prodotto

È importante conoscere i vari stati della proprietà del prodotto per comprendere come e quando può essere modificata. Una proprietà del prodotto può essere nello stato Bozza, Attivo o Ritirato. Quando un prodotto viene creato, lo stato è Bozza e diventa Attivo quando viene pubblicato il record della famiglia di prodotti a cui è associato. Quando il record della famiglia di prodotti associato viene ritirato, anche lo stato della proprietà del prodotto diventa Retired.

Una proprietà del prodotto può essere modificata a due livelli: innanzitutto a livello di famiglia di prodotti a cui la proprietà del prodotto è associata; in secondo luogo a livello di famiglia di prodotti, prodotto o aggregazione figlio in cui la proprietà del prodotto viene ereditata.

Modifica della proprietà del prodotto per la famiglia di prodotti a cui è associata

Per un record della famiglia di prodotti Draft , puoi modificare una proprietà del prodotto associata. Dopo la pubblicazione del record della famiglia di prodotti (lo stato diventa Active), non puoi più modificare le proprietà del prodotto finché il record della famiglia di prodotti non viene rivisto. Dopo aver rivisto il record della famiglia di prodotti (lo stato diventa Under Revision), sovrascrivere la versione (attiva) pubblicata della proprietà per apportare modifiche. Per informazioni sul ciclo di vita del prodotto, vedi Pubblicare, aggiornare, annullare, ritirare e attivare i prodotti (ciclo di vita prodotto)

Modifica della proprietà del prodotto ereditata per la famiglia di prodotti, il prodotto o l'aggregazione figlio

Per una proprietà del prodotto con lo stato Draft, i record della famiglia di prodotti, del prodotto e dell'aggregazione figlio possono sostituire la proprietà ereditata per definire una propria versione della proprietà. Ad esempio, sostituire la proprietà ereditata per modificarne il nome o per impostare gli attributi da nascosto a visibile, da obbligatorio a facoltativo o da in sola lettura ad aggiornabile. Non puoi sostituire o modificare il tipo di dati della proprietà ereditata.

Per sostituire una proprietà del prodotto, crea un'istanza della proprietà del prodotto e imposta la proprietà BaseDynamicPropertyId sul GUID della proprietà che stai sostituendo. Inoltre, puoi associare la nuova istanza della proprietà al record della famiglia di prodotti, del prodotto o dell'aggregazione figlio in cui viene sostituita.

Nel seguente esempio di codice viene illustrato come è possibile sostituire un record della proprietà del prodotto esistente con il GUID _productPropertyId e associare la proprietà sostituita al record del prodotto con il GUID _product1Id. Successivamente, puoi aggiornare gli attributi della nuova proprietà per specificare valori personalizzati e completare la sostituzione.

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

Per un esempio completo, vedere Esempio: Creare e pubblicare prodotti.

Per una proprietà del prodotto con lo stato Active, puoi sovrascrivere la proprietà ereditata per il record della famiglia di prodotti, del prodotto o dell'aggregazione figlio, se entrambe le seguenti clausole sono vere:

  • Il record della famiglia di prodotti, del prodotto o dell'aggregazione figlio è nello stato In revisione.

  • La proprietà del prodotto attiva ereditata è già sostituita.

Per sostituire una proprietà del prodotto, crea un'istanza della proprietà del prodotto e imposta la proprietà BaseDynamicPropertyId sul GUID della proprietà già sostituita. Inoltre, puoi associare la nuova istanza della proprietà al record della famiglia di prodotti, del prodotto o dell'aggregazione figlio nella fase Under Revision.

Nel seguente esempio di codice viene illustrato come è possibile sostituire un record della proprietà del prodotto nello stato Attivo già sostituita con il GUID _productOverridenPropertyId e associare la nuova proprietà al record del prodotto nello stato Under Revision con il GUID _product1Id. Successivamente, puoi aggiornare gli attributi della nuova proprietà per specificare valori personalizzati e completare la sostituzione.

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

Per un esempio completo, vedere Esempio: Creare e pubblicare prodotti.

Aggregazioni e kit

Un'aggregazione è una funzionalità introdotta in Dynamics 365 per sostituire la precedente funzionalità del kit. Analogamente a un kit, un'aggregazione è una raccolta di prodotti che viene venduta come singola unità. L'aggregazione di prodotti è utile per raggruppare i prodotti in modo che i clienti ottengano più vantaggi dalla linea completa di prodotti o per offrire sconti sui prodotti aggregati che consentono di raggruppare prodotti e venderli come singola unità.

Solo i prodotti possono essere aggiunti a un'aggregazione; non è possibile aggiungere il record di una famiglia di prodotti, un'aggregazione, o un kit a un'aggregazione. È possibile aggiungere prodotti a un'aggregazione o a un kit creando un record di associazione prodotti utilizzando l'entità ProductAssociation. Il record di ProductAssociation.ProductId specifica l'aggregazione o il kit a cui si desidera aggiungere un prodotto e ProductAssociation.AssociatedProduct specifica il prodotto da aggiungere. Il numero massimo di prodotti che è possibile aggiungere a un'aggregazione è determinato dalla seguente impostazione dell'organizzazione Organization.MaxProductsinBundle.

È inoltre possibile utilizzare la scheda Vendite dell'area impostazioni di sistema in Dynamics 365 o Dynamics 365 per Outlook per specificare il numero massimo di prodotti che è possibile aggiungere a un'aggregazione.Ulteriori informazioni:TechNet: Gestire la configurazione del catalogo prodotti

Il seguente codice di esempio illustra come aggiungere prodotto a un'aggregazione.

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

Per un esempio completo, vedere Esempio: Aggiungere prodotti a un'aggregazione.

Differenze tra i kit e le aggregazioni

I kit e le aggregazioni consentono di raggruppare i prodotti in un'unica unità, ma di seguito sono riportate alcune differenze tra i due.

Kit

Aggregazioni

Tutti i prodotti in un kit sono obbligatori.

Alcuni prodotti in un'aggregazione possono essere facoltativi.

I kit supportano l'annidamento: è possibile aggiungere un kit a un altro kit.

Non è possibile aggiungere un'aggregazione a un'altra aggregazione. A un'aggregazione è possibile aggiungere solo prodotti.

Mentre si aggiunge un kit a un'opportunità, un'offerta, un ordine o una fattura, è possibile visualizzare solo i dettagli del livello di kit; non è possibile visualizzare i prodotti singoli nel kit.

Mentre si aggiunge un'aggregazione a un'opportunità, un'offerta, un ordine o una fattura, è possibile visualizzare i dettagli del livello di aggregazione e i prodotti singoli nell'aggregazione.

Nota

I kit sono deprecati in Dynamics 365; in alternativa usa le aggregazioni.

Definire le relazioni di prodotto per suggerimenti avanzati durante la vendita dei prodotti

È possibile definire i prodotti correlati per un prodotto visualizzati sotto forma di suggerimenti agli agenti di vendita durante la gestione dell'ordine o dell'opportunità. I suggerimenti dl prodotto per un prodotto consentono agli agenti di vendita di consigliare prodotti correlati, aggregazioni o kit a clienti e aumentare le vendite del prodotto. È possibile definire le seguenti relazioni per un prodotto: accessorio, cross-sell, prodotto sostitutivo e upsell. Ad esempio, è possibile aggiungere Surface Pro come prodotto di upsell per Surface RT, in modo che quando l'agente di vendita aggiunge Surface RT a un'opportunità, un'offerta, un ordine o un fattura, Surface Pro sarà consigliato come opzione di upsell.

Utilizzare l'attributo ProductSubstitute.SalesRelationshipType per definire le relazioni del prodotto. Impostare il valore di questo attributo su:

  • 0 per upsell

  • 1 per cross-sell

  • 2 per accessorio

  • 3 per sostituto

Mentre si definiscono le relazioni dei prodotti, è importante definire la direzione della relazione per evitare la duplicazione dei dati. Le direzioni supportate sono delle relazioni prodotto sono:

Relazione prodotti

Direzione

Accessorio

Unidirezionale

Cross-sell

Unidirezionale o bidirezionale

Prodotto sostitutivo

Unidirezionale o bidirezionale

Upsell

Unidirezionale

Utilizzare l'attributo ProductSubstitute.Direction per specificare la direzione di una relazione del prodotto. Impostare il valore di questo attributo su:

  • 0 per unidirezionale

  • 1 per bidirezionale

Il seguente codice di esempio illustra come definire le relazioni per i prodotti.

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

Clonare una famiglia di prodotti, un prodotto o un'aggregazione

Utilizzare il messaggio CloneProductRequest per clonare il record di una famiglia di prodotti, un prodotto o un'aggregazione e creare una copia del record nello stesso nodo padre. È necessario fornire l'ID del record da clonare. Con la clonazione di un record di prodotto vengono copiate anche le proprietà del prodotto. Il record clonato viene creato con il datestamp e il timestamp collegati ai valori negli attributi Product.ProductNumber e Product.Name; datestamp e il timestamp indicano il momento in cui il record è stata duplicato. Il seguente codice di esempio illustra come clonare un prodotto.

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

Passaggio successivo

Pubblicare i record di prodotto per rendere disponibili i prodotti alla vendita da parte degli agenti di vendita.Ulteriori informazioni:Pubblicare una famiglia di prodotti, un prodotto o un'aggregazione

Vedere anche

Pubblicare, aggiornare, annullare, ritirare e attivare i prodotti (ciclo di vita prodotto)
Esempio: Creare e pubblicare prodotti
Esempio: clona record di prodotto
Esempio: Aggiungere prodotti a un'aggregazione
Entità catalogo prodotti

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright