Compartir a través de


Crear y administrar familias de productos, productos, agrupaciones y propiedades del producto

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Defina el catálogo de productos organizando los productos en una estructura jerárquica mediante la creación de productos y agrupaciones en una familia de productos, la definición de productos relacionados, y la adición de propiedades (atributos) a la familia de productos principales de modo que todos los productos y agrupaciones secundarios en una familia de productos hereden automáticamente las propiedades.

De forma predeterminada, al crear un registro de familia de productos, producto, o agrupación, se encuentran en el estado Borrador. Después de crear un producto, definir productos relacionados y configurar atributos para el registro de familia de productos principales, debe publicar el registro de familia de productos, producto, o agrupación para que esté disponible en el sistema para que los agentes de ventas los vendan.Más información:Publique una familia de productos, un producto, o agrupación

Nota

Para los productos que no están asociados con una familia de productos, es decir, los productos que no tienen un registro de familia de productos primario asignado, puede crearlos directamente en un estado Activo al establecer el atributo Organization.CreateProductsWithoutParentInActiveState como 1 (true). De forma predeterminada, este atributo se establece en 0 (false) para una nueva instalación de Microsoft Dynamics 365 y en 1 (true) si actualiza desde una versión anterior de Dynamics 365 para garantizar la compatibilidad para las aplicaciones que trabajan con la versión anterior de Dynamics 365 donde los registros de productos se crearon en un estado Activo.

También puede usar la ficha Ventas en el área de configuración del sistema en Microsoft Dynamics 365 o Microsoft Dynamics 365 para Outlook para especificar si los productos se crean en un estado Activo.Más información:TechNet: Administrar la configuración del catálogo de productos

En este tema

Defina productos, familias de productos y agrupaciones

Definir las propiedades del producto

Agrupaciones y kits

Defina las relaciones de productos para obtener sugerencias mejoradas durante la venta de productos

Clonar una familia de productos, un producto, o agrupación

Defina productos, familias de productos y agrupaciones

Use el atributo Product.ProductStructure para definir si un elemento es una familia de productos, producto, o agrupación. Establezca el valor de este atributo como:

  • 1 para crear un producto

  • 2 para crear una familia de productos

  • 3 para crear una agrupación

A continuación encontrará algunos aspectos importantes a tener en cuenta cuando define familias de productos, productos, y las agrupaciones:

  • Un registro de familia de productos puede contener varias instancias de familia de productos, producto y agrupación en una estructura jerárquica. Para una instancia de familia de productos secundaria, producto secundario o agrupación secundaria, defina la instancia de familia de productos primaria mediante el atributo Product.ParentProductId. No puede cambiar el registro primario una vez que lo ha establecido.

  • Un producto o agrupación no puede establecerse como principal, lo que implica que un registro de producto o agrupación no puede tener registros secundarios.

  • Una instancia de familia de productos, producto o agrupación puede formar parte de una instancia de familia de productos solo.

  • No hay límite en el nivel de anidamiento de una familia de productos.

  • Los atributos Product.ValidFromDate y Product.ValidToDate no tienen ninguna lógica de negocios predefinida asociada con ellos, pero hay una comprobación para asegurar que la fecha en Product.ValidToDate debería ser posterior o igual que la fecha en Product.ValidFromDate. Si corresponde, puede implementar su propia lógica de negocios basada en estos atributos. Por ejemplo, puede ejecutar un trabajo programado para automáticamente retirar productos de la temporada pasada mediante el valor de fecha en el atributo Product.ValidToDate.

El siguiente código de ejemplo demuestra cómo puede crear un registro de familia de productos y producto secundario.

// 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 las propiedades del producto

Las propiedades del producto ayudan a definir las características de un producto, como el tamaño, color, o componente. Una propiedad del producto se define mediante la entidad DynamicProperty. Cuando define una propiedad del producto, solo puede asociarla a un registro de la familia de productos en estado Draft, y no a un registro de producto o de agrupación. El número máximo de propiedades del producto que se pueden asociar a un registro de la familia de productos de borrador se determina mediante la siguiente opción de la organización: Organization.MaximumDynamicPropertiesAllowed. El número entra en vigor cuando se publica un registro de producto secundario o una agrupación bajo una familia de productos a la que están asociadas las propiedades, y no cuando se asocian las propiedades a un registro de familia de productos de borrador.

Sugerencia

También puede usar la ficha Ventas en el área de configuración del sistema en Dynamics 365 o Dynamics 365 para Outlook para configurar el número máximo de propiedades de producto.Más información:TechNet: Administrar la configuración del catálogo de productos.

Mientras crea una propiedad del producto, especifique su nombre, el registro de la familia del producto en estado Draft a la que está asociado, atributos de la propiedad como si es oculto, requerido o de sólo lectura, y el tipo de datos de la propiedad. Una propiedad del producto puede ser de uno de los siguientes tipos de datos:

Valor

Tipo de datos

0

Conjunto de opciones

1

Decimal

2

Número de punto flotante

3

Línea de texto única

4

Número entero

No puede cambiar el tipo de datos de una propiedad del productos después crearla. Al crear una propiedad del producto, se crea en el estado Draft.

El siguiente código de ejemplo demuestra cómo puede crear una propiedad del producto:

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 ver el ejemplo completo, consulte Ejemplo: Creación y publicación de productos

Nota

Al crear una propiedad del producto del tipo de datos Option Set, debe definir las opciones individuales para la propiedad del producto mediante la creación de registros de entidad DynamicPropertyOptionSetItem. Cada registro de entidad almacena información sobre la opción individual donde los atributos DynamicPropertyOptionSetItem.DynamicPropertyOptionName y DynamicPropertyOptionSetItem.DynamicPropertyOptionValue definen el nombre y el valor de la opción correspondiente, y puede asociar registros de opción individuales a la instancia principal de la propiedad del producto mediante el atributo DynamicPropertyOptionSetItem.DynamicPropertyId.

Para obtener información acerca de la creación y administración de propiedades del producto utilizando el cliente web, vea Ayuda y aprendizaje: Uso de propiedades para describir un producto

Nota

La forma en que se define una propiedad del producto determina cómo lo puede usar el agente de ventas en tiempo de ejecución, es decir, mientras agrega un producto asociado a una oportunidad, una oferta, un pedido, o factura. Un valor de propiedad del producto actualizable se puede cambiar en tiempo de ejecución, a diferencia del valor de una propiedad de producto de solo lectura. Para una propiedad del producto establecida como necesaria, se debe especificar un valor para la propiedad en tiempo de ejecución. De lo contrario, la propiedad se muestra como no resuelta. Una propiedad oculta no se mostrará a los agentes de ventas en tiempo de ejecución.

Asimismo, las propiedades del producto no afectan al precio de un producto. Esto implica que el motor de precios de Dynamics 365 no admite el cambio del precio de un producto en función de un cambio en los valores de propiedad del producto.

Cambiar las propiedades del producto

Es importante conocer las distintos estados de la propiedad del producto para comprender cómo y cuándo se pueden cambiar. Una propiedad del producto puede estar en estado Borrador, Activo, o Retirado. Cuando se crea un producto, su estado es Borrador y cambia al estado Activo una vez que se publica el registro de la familia de productos con el que está asociado. Cuando se retira el registro de la familia de productos asociado, el estado de la propiedad del producto también cambia a Retired.

Una propiedad del producto puede cambiar en dos niveles: primero en el nivel de la familia del producto con el que esté asociada la propiedad del producto; segundo en el nivel de la familia de productos secundarios, producto o agrupación de la que se hereda la propiedad del producto.

Cambiar la propiedad del producto para la familia de productos con la que está asociado

Para un registro de la familia de productos de Draft , puede cambiar una propiedad del producto asociada a él. Una vez que publique el registro de la familia de productos (cambie al estado Active) no puede cambiar la propiedad del producto hasta que revise el registro de la familia de productos. Después de revisar el registro de la familia de productos (cambia al estado Under Revision) y luego sobrescribir la versión publicada (activa) de la propiedad para realizar cambios. Para obtener información sobre ciclo de vida de productos, consulte Publicar, revisar, revertir, retirar, y habilitar los productos (el ciclo de vida de productos)

Cambiar la propiedad del producto heredada para la familia de productos secundarios, el producto, o la agrupación

Para una propiedad del producto con el estado Draft, los registros de familia de productos secundarios, producto y agrupación pueden reemplazar la propiedad heredada para definir su propia versión de la propiedad. Por ejemplo, reemplace la propiedad heredada para cambiar nombre o cambiar sus atributos de oculto a visible, de requerido a opcional, o de solo lectura a actualizable. No puede reemplazar o cambiar el tipo de datos de la propiedad heredada.

Para reemplazar una propiedad del producto, cree una instancia de la propiedad del producto y establezca la propiedad BaseDynamicPropertyId con el GUID de la propiedad que se está reemplazando. Además, asocie también la nueva instancia de la propiedad al registro de la familia de productos secundarios, el producto, o la agrupación donde se reemplaza.

El código de ejemplo siguiente demuestra cómo puede reemplazar un registro existente de propiedad del producto, por ejemplo, con GUID _productPropertyId, y asociar la propiedad reemplazada con el registro del producto, por ejemplo con GUID _product1Id. Después de esto, puede actualizar los atributos de la nueva propiedad para especificar sus propios valores para completar el reemplazo.

// 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 ver el ejemplo completo, consulte Ejemplo: Creación y publicación de productos

Para una propiedad del producto con el estado Active, puede sobrescribir la propiedad heredada para el registro de la familia de productos secundarios, producto, o agrupación siempre que las cláusulas siguientes se cumplan:

  • El registro de la familia de productos secundarios, producto, o agrupación se encuentra en estado En revisión.

  • La propiedad del producto activa heredada ya se ha sobrescrito.

Para sobrescribir una propiedad del producto, cree una instancia de la propiedad del producto y establezca la propiedad BaseDynamicPropertyId con el GUID de la propiedad ya sobrescrita. Además, asocie también la nueva instancia de la propiedad al registro de la familia de productos, el producto, o la agrupación que se encuentra en la fase Under Revision.

El código de ejemplo siguiente demuestra cómo puede sobrescribir un registro de propiedad del producto en estado activo que ya está sobrescrito, por ejemplo, con GUID _productOverridenPropertyId, y asociar la nueva propiedad con el registro del producto en estado Under Revision, por ejemplo con GUID _product1Id. Después de esto, puede actualizar los atributos de la nueva propiedad para especificar sus propios valores y completar la sobrescritura.

// 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 ver el ejemplo completo, consulte Ejemplo: Creación y publicación de productos

Agrupaciones y kits

Una agrupación es una característica introducida en Dynamics 365 para reemplazar la antigua funcionalidad de kit. Al igual que un kit, una agrupación es una colección de productos que se vende como una sola unidad. La agrupación de productos es útil para empaquetar productos de forma que los clientes obtengan más ventajas de toda la línea de productos o para ofrecer descuentos en los productos agrupados, lo que permite agrupar productos y venderlos como una sola unidad.

Sólo se pueden agregar productos una agrupación; no se puede agregar un registro de familia de productos, agrupación o kit a una agrupación. Puede agregar productos a una agrupación o un kit creando un registro de asociación de producto con la entidad ProductAssociation. El registro ProductAssociation.ProductId especifica la agrupación o el kit al que desea agregar un producto y ProductAssociation.AssociatedProduct especifica el producto que se agregará. El número máximo de productos que se pueden agregar a una agrupación se determina mediante la siguiente opción de la organización: Organization.MaxProductsinBundle.

También puede usar la ficha Ventas en el área de configuración del sistema en Dynamics 365 o Dynamics 365 para Outlook para especificar el número máximo de productos que se puedan agregar a una agrupación.Más información:TechNet: Administrar la configuración del catálogo de productos

El siguiente código de ejemplo demuestra cómo puede agregar productos a una agrupación.

// 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 ver el ejemplo completo, consulte Ejemplo: Agregar productos a una agrupación.

Diferencias entre kits y agrupaciones

Los kits y las agrupaciones permiten agrupar productos en una sola unidad, pero éstas son algunas diferencias entre los dos.

Kits

Agrupaciones

Todos los productos en un kit son obligatorios.

Algunos productos en la agrupación pueden ser opcionales.

Los kits admiten anidamiento; puede agregar un kit a otro kit.

No puede agregar una agrupación a otra. Solo puede agregar productos a una agrupación.

Mientras agrega un kit a una oportunidad, oferta, pedido o factura, puede ver solo los detalles a nivel del kit; no puede ver los productos individuales en el kit.

Mientras agrega una agrupación a una oportunidad, oferta, pedido o factura, puede ver solo los detalles a nivel de la agrupación, así como los productos individuales en la agrupación.

Nota

Los kits quedaron en desuso en Dynamics 365; por lo que deberá utilizar agrupaciones.

Defina las relaciones de productos para obtener sugerencias mejoradas durante la venta de productos

Puede definir productos relacionados para un producto que se muestran como sugerencias a los agentes de ventas durante la administración de oportunidades o pedidos. Las sugerencias de productos para un producto ayudan a los agentes de ventas a recomendar productos relacionados y agrupaciones/kits a los clientes, y aumentan las ventas de productos. Puede definir las siguientes relaciones de un producto: accesorio, venta cruzada, sustituto e incremento de ventas. Por ejemplo, Surface Pro puede agregarse como producto de incremento de ventas para Surface RT de modo que cuando su agente de ventas esté agregando Surface RT a cualquier oportunidad, oferta, pedido, factura, se sugiera Surface Pro como opción de incremento de ventas.

Use el atributo ProductSubstitute.SalesRelationshipType para definir relaciones de productos. Establezca el valor de este atributo como:

  • 0 para incremento de ventas

  • 1 para venta cruzada

  • 2 para accesorio

  • 3 para sustituto

Cuando define relaciones de productos, es importante definir la dirección de la relación para evitar duplicación de datos. Las direcciones compatibles en las relaciones de productos son:

Relación de productos

Dirección

Accesorio

Unidireccional

Venta cruzada

Unidireccional o bidireccional

Sustituto

Unidireccional o bidireccional

Incremento de ventas

Unidireccional

Use el atributo ProductSubstitute.Direction para especificar la dirección de una relación de productos. Establezca el valor de este atributo como:

  • 0 para unidireccional

  • 1 para bidireccional

El siguiente código de ejemplo demuestra cómo puede definir relaciones para productos.

// 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 una familia de productos, un producto, o agrupación

Utilice el mensaje CloneProductRequest para clonar un registro de familia de productos, producto, o agrupación, y crear una copia del registro bajo el mismo nodo primario. Debe proporcionar el Id. del registro a clonar. Al clonar un registro del producto también se copian las propiedades del producto. El registro clonado se crea con un sello de fecha y hora anexado a valores originales en los atributos Product.Name y Product.ProductNumber; el sello de fecha y hora denota la hora en que se clonó el registro. El siguiente código de ejemplo demuestra cómo clonar un producto.

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

Paso siguiente

Publique los registros del producto para hacer que los productos estén disponibles que los vendan los agentes de ventas.Más información:Publique una familia de productos, un producto, o agrupación

Ver también

Publicar, revisar, revertir, retirar, y habilitar los productos (el ciclo de vida de productos)
Ejemplo: Creación y publicación de productos
Ejemplo: Clonar registros de productos
Ejemplo: Agregar productos a una agrupación
Entidades del catálogo de productos

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright