Share via


API de precios comerciales

Este artículo describe las distintas API de precios que proporciona el motor de precios de Microsoft Dynamics 365 Commerce.

El motor de precios de Dynamics 365 Commerce proporciona las siguientes API de servidores minoristas que pueden consumir aplicaciones externas para admitir varios escenarios de precios:

  • GetActivePrices – Esta API obtiene el precio calculado de un producto, incluidos los descuentos simples.
  • CalculateSalesDocument – Esta API calcula precios y descuentos para productos en cantidades determinadas si se compran juntos.
  • GetAvailablePromotions – Esta API obtiene descuentos aplicables para productos en el carrito.
  • AddCoupons – Esta API agrega cupones a un carrito.
  • RemoveCoupons – Esta API elimina cupones de un carrito.

Para obtener más información sobre cómo consumir las API de Retail Server en aplicaciones externas, consulte Consumir API de servidores minoristas en aplicaciones externas.

GetActivePrices

La API GetActivePrices se introdujo en la versión 10.0.4 de Commerce. Esta API obtiene el precio calculado de un producto, incluidos los descuentos simples. No calcula los descuentos de varias líneas y asume que cada producto en una solicitud de API tiene una cantidad de 1. Esta API también puede tomar una lista de productos como entrada y consultar el precio de productos individuales de forma masiva.

La API GetActivePrices admite las funciones comerciales Empleado, Cliente, Anónimo y Aplicación.

El principal caso de uso para la API GetActivePrices es la página de detalles del producto (PDP), donde los minoristas muestran el mejor precio para un producto, incluidos los descuentos efectivos.

Billete

Si ve menos productos devueltos por una llamada GetActivePrices, puede seguir el Validador de configuración de comercialización de canal para validar sus configuraciones de comercialización.

La siguiente tabla muestra los parámetros de entrada para la API GetActivePrices.

Name Subnombre Tipo Obligatorio/Opcional Description
projectDomain ProjectionDomain Requerido
ChannelId long Obligatorio
CatalogId long Obligatorio
productIds IEnumerable<long> Obligatorio La lista de productos para calcular los precios.
activeDate DateTimeOffset Requerido La fecha en que se calculan los precios.
customerId cadena Opcional Número de cuenta del cliente.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Opcional Los niveles de afiliación y fidelización.
AffiliationId long Requerido Id. de afiliación.
LoyaltyTierId long Opcional Id. de nivel de fidelización.
includeSimpleDiscountsInContextualPrice bool Opcional Establezca este parámetro en verdadero para incluir descuentos simples en el cálculo de precios. El valor predeterminado es falso.
includeVariantPriceRange bool Opcional Establezca este parámetro en verdadero para obtener los precios mínimo y máximo entre todas las variantes para un producto maestro. El valor predeterminado es falso.
includeAttainablePricesAndDiscounts bool Opcional Establezca este parámetro en verdadero para obtener precios y descuentos asequibles. El valor predeterminado es falso.
Cuerpo de solicitud de muestra
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Cuerpo de respuesta de muestra
{
    "value": 
    [
        {
            "ProductId": 68719489871,
            "ListingId": 68719489871,
            "BasePrice": 0,
            "TradeAgreementPrice": 0,
            "AdjustedPrice": 0,
            "MaxVariantPrice": 0,
            "MinVariantPrice": 0,
            "CustomerContextualPrice": 0,
            "DiscountAmount": 0,
            "CurrencyCode": "USD",
            "ItemId": "82000",
            "InventoryDimensionId": null,
            "UnitOfMeasure": "ea",
            "ValidFrom": "2022-06-20T01:40:05.873-05:00",
            "ProductLookupId": 0,
            "ChannelId": 5637144592,
            "CatalogId": 0,
            "SalesAgreementPrice": 0,
            "PriceSourceTypeValue": 1,
            "DiscountLines": [],
            "AttainablePriceLines": [],
        }
    ]
}

Usar PriceLookupContext

La clase PriceLookupContext se introdujo en la versión 10.0.37 de Commerce. La clase contiene todos los criterios de búsqueda para la API GetActivePrices y reemplaza los parámetros anteriores de productIds, activeDate, customerId y affiliationLoyaltyTiers. La clase también tiene propiedades adicionales que los desarrolladores pueden usar para filtrar descuentos durante la búsqueda de descuentos.

Según las necesidades de su organización, la API GetActivePrices puede aceptar los parámetros anteriores o nuevos parámetros asociados con la clase PriceLookupContext.

Input parameters

Name Subnombre Tipo Obligatorio/Opcional Description
projectDomain ProjectionDomain Requerido
ChannelId long Requerido
CatalogId long Requerido
priceLookupContext PriceLookupContext Requerido
HeaderContext PriceLookupHeaderContext Requerido Contiene CustomerAccountNumber, AffiliationLoyaltyTierLines y SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Requerido Contains ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId y SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool Opcional Establezca este parámetro en verdadero para incluir descuentos simples en el cálculo de precios. El valor predeterminado es falso.
includeVariantPriceRange bool Opcional Establezca este parámetro en verdadero para obtener los precios mínimo y máximo entre todas las variantes para un producto maestro. El valor predeterminado es falso.
includeAttainablePricesAndDiscounts bool Opcional Establezca este parámetro en verdadero para obtener precios y descuentos asequibles. El valor predeterminado es falso.

Para obtener más información, consulte PriceLookupContext.

CalculateSalesDocument

La API CalculateSalesDocument se introdujo en la versión 10.0.25 de Commerce. Esta API calcula precios y descuentos para productos en cantidades determinadas si se compran juntos en un pedido. El cálculo de precios detrás de la API CalculateSalesDocument considera tanto los descuentos de una sola línea como los descuentos de varias líneas.

El principal caso de uso para la API CalculateSalesDocument es el cálculo de precios en escenarios donde el contexto completo del carrito no persiste (como cotizaciones de ventas). Los escenarios en el punto de venta (POS) y el comercio electrónico Commerce también pueden beneficiarse de este caso de uso. Un precio total más bajo cuando los artículos del carrito se calculan como un conjunto (por ejemplo, para paquetes discretos, productos vinculados o recomendados, o productos que ya se agregaron al carrito) podría persuadir a los clientes para que agreguen productos al carrito.

El modelo de datos tanto para la solicitud como para la respuesta de la API CalculateSalesDocument es Carro. Sin embargo, en el contexto de esta API, el modelo de datos se denomina SalesDocument. Debido a que la mayoría de las propiedades son opcionales y solo algunas de ellas afectan el cálculo de precios, en la siguiente tabla solo se muestran los campos relacionados con los precios. No recomendamos que ningún otro campo esté involucrado en la solicitud de API.

El alcance de la API CalculateSalesDocument es solo el cálculo de precios y descuentos. Los impuestos y cargos no están involucrados.

La siguiente tabla muestra los parámetros de entrada dentro del objeto que se llama salesDocument.

Name Subnombre Tipo Obligatorio/Opcional Description
Id. cadena Requerido EL identificador del documento de ventas.
CartLines IList<CartLine> Opcional La lista de líneas para calcular los precios y los descuentos.
Id. de producto long Requerido en el alcance de CartLine Id. de registro de producto.
ItemId cadena Opcional Identificador de artículo. Si se proporciona un valor, debe coincidir con el valor del parámetro ProductId.
InventoryDimensionId cadena Opcional Identificador de dimensión de inventario. Si se proporciona un valor, la combinación de los valores ItemId y InventoryDimensionId deben coincidir con el valor del parámetro ProductId.
Quantity decimal Requerido en el alcance de CartLine Cantidad del producto.
UnitOfMeasureSymbol cadena Opcional Unidad del producto. De manera predeterminada, si no se proporciona un valor, la API usa la unidad de venta del producto.
CustomerId cadena Opcional Número de cuenta del cliente.
LoyaltyCardId cadena Opcional Identificador de la tarjeta de fidelización. Cualquier cuenta de cliente que esté asociada con la tarjeta de fidelización debe coincidir con el valor del parámetro CustomerId (si se proporciona). La tarjeta de fidelización no se tiene en cuenta si no se encuentra o su estado es Bloqueado.
AffiliationLines IList<AffiliationLoyaltyTier> Opcional Líneas del nivel de fidelización de la afiliación. Si los valores CustomerId y/o LoyaltyCardId se proporcionan, las líneas de nivel de fidelidad de afiliación correspondientes se fusionan con las líneas que se proporcionan en el valor AffiliationLines.
AffiliationId long Requerido en el alcance de AffiliationLoyaltyTier Id. de registro de afiliación.
LoyaltyTierId long Requerido en el alcance de AffiliationLoyaltyTier Id. de registro del nivel de fidelización.
AffiliationTypeValue int Requerido en el alcance de AffiliationLoyaltyTier Un valor que indica si la línea de afiliación es del tipo General (0) o del tipo Fidelización (1). Si el parámetro se establece en 0, la API toma el valor AffiliationId como el identificador e ignora el valor LoyaltyTierId. Si el parámetro se establece en 1, la API toma el valor LoyaltyTierId como el identificador e ignora el valor AffiliationId.
ReasonCodeLines Collection<ReasonCodeLine> Requerido en el alcance de AffiliationLoyaltyTier Líneas de código de motivo. Este parámetro no tiene efecto en el cálculo del precio, pero se requiere como parte del objeto AffiliationLoyaltyTier.
CustomerId cadena Requerido en el alcance de AffiliationLoyaltyTier Número de cuenta del cliente.
Vales IList<Coupon> Opcional Los cupones que no sean aplicables (inactivos, caducados o no encontrados) no se tienen en cuenta en el cálculo del precio.
Código cadena Requerido en el alcance de Coupon El código de vale.
CodeId cadena Opcional El identificador del código de vale. Si se proporciona un valor, debe coincidir con el valor del parámetro Code.
DiscountOfferId cadena Opcional El identificador del descuento. Si se proporciona un valor, debe coincidir con el valor del parámetro Code.
Cuerpo de solicitud de muestra
{
    "salesDocument": 
    {
        "Id": "CalculateSalesDocument",
        "CartLines": 
        [
            {
                "ProductId": 68719491408,
                "ItemId": "91003",
                "InventoryDimensionId": "",
                "Quantity": 1,
                "UnitOfMeasureSymbol": "ea"
            },
            {
                "ProductId": 68719493014,
                "Quantity": 2,
                "UnitOfMeasureSymbol": "ea"
            }
        ],
        "CustomerId": "3003",
        "AffiliationLines": 
        [
            {
                "AffiliationId": 68719476742,
                "LoyaltyTierId": 0,
                "AffiliationTypeValue": 0,
                "ReasonCodeLines": [],
                "CustomerId": null
            }
        ],
        "LoyaltyCardId": "55103",
        "Coupons": 
        [
            {
                "CodeId": "CODE-0005",
                "Code": "CPN0004",
                "DiscountOfferId": "ST100077"
            }
        ]
    }
}

Todo el objeto del carrito se devuelve como el cuerpo de la respuesta. Para consultar precios y descuentos, debes centrarte en los campos de la siguiente tabla.

Name Subnombre Tipo Description
NetPrice decimal El precio neto del documento de ventas completo antes de aplicar los descuentos.
Importe de descuento decimal El importe total del descuento del documento de ventas completo.
TotalAmount decimal El importe total del documento de ventas completo.
CartLines IList<CartLine> Líneas calculadas que incluyen detalles de precios y descuentos.
Precio decimal Precio unitario del producto.
NetPrice decimal El precio neto de la línea antes de aplicar los descuentos (= Precio × Cantidad).
Importe de descuento decimal Importe de descuento.
TotalAmount decimal El resultado final del precio total de la línea.
PriceLines IList<PriceLine> Detalles del precio, incluida la fuente del precio (precio base, ajuste de precio o acuerdo comercial) y el importe.
DiscountLines IList<DiscountLine> Detalles del descuento.

GetAvailablePromotions

Hay dos API GetAvailablePromotions similares:

  • Carts/GetAvailablePromotions acepta una lista de identificadores de línea de carrito como parámetro.
  • GetAvailablePromotions acepta un objeto DiscountsSearchCriteria como parámetro.

Carts/GetAvailablePromotions

Dado un carro que tiene varias líneas de carros, la API Carts/GetAvailablePromotions devuelve todos los descuentos aplicables para las líneas del carrito.

El principal caso de uso para la API Carts/GetAvailablePromotions es la página del carrito, donde los minoristas muestran los descuentos aplicados o los cupones disponibles para el carrito actual.

La siguiente tabla muestra los parámetros de entrada para la API Carts/GetAvailablePromotions.

Name Tipo Obligatorio/Opcional Description
clave cadena Obligatorio El id. del carro.
cartLineIds IEnumerable<string> Opcional Establezca este parámetro para devolver descuentos solo para las líneas de carrito seleccionadas.
Cuerpo de respuesta de muestra
{
    "value": 
    [
        {
            "LineId": "f495ffa507bc4f63a47a409cd8713dd7",
            "Promotion": {
                "OfferId": "ST100012",
                "OfferName": "Loyalty 5% off over $100",
                "PeriodicDiscountTypeValue": 4,
                "IsDiscountCodeRequired": false,
                "ValidationPeriodId": null,
                "AdditionalRestrictions": null,
                "Description": "All loyalty members get 5% with transaction total above $10 unless some exclusive or best price discounts are already applied on the transaction",
                "ValidFromDate": "2022-06-20T06:52:56.2460219Z",
                "ValidToDate": "2022-06-20T06:52:56.2460224Z",
                "CouponCodes": [],
                "ValidationPeriod": null
            }
        }
    ]
}

GetAvailablePromotions

La API GetAvailablePromotions devuelve todos los descuentos aplicables para el canal dado.

El principal caso de uso para la API GetAvailablePromotions es la página "Todos los descuentos", donde los minoristas muestran todos los descuentos para el canal actual.

La siguiente tabla muestra los parámetros de entrada para la API GetAvailablePromotions.

Name Subnombre Tipo Obligatorio/Opcional Description
searchCriteria DiscountsSearchCriteria Requerido
ChannelId long Requerido
Palabra clave cadena Opcional
IsDiscountCodeRequired bool Opcional Indica si el código de cupón es necesario o no. Si se pasa nulo, se recuperan todos los descuentos, independientemente de los requisitos del código de cupón.
StartDate DateTimeOffset Requerido Fecha y hora de inicio (inclusive).
EndDate DateTimeOffset Requerido Fecha final (inclusive).
Cuerpo de solicitud de muestra
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Cuerpo de respuesta de muestra
{
    "@odata.context": "https://usnconeboxax1ret.cloud.onebox.dynamics.com/Commerce/$metadata#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.Promotion)",
    "value": [
        {
            "OfferId": "ST100024",
            "OfferName": "Weekly ad",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": true,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100019",
            "OfferName": "Take 20 off anything",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": true,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100015",
            "OfferName": "Watches",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100012",
            "OfferName": "Loyalty 5% off over $100",
            "PeriodicDiscountTypeValue": 4,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "All loyalty members get 5% with transaction total above $10 unless some exclusive or best price discounts are already applied on the transaction",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100011",
            "OfferName": "Loyalty 50% off sunglasses",
            "PeriodicDiscountTypeValue": 1,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Gold tier Loyalty customers get 50% on Sunglasses when purchased with a Top, Scarf or Men's Casual shirts",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100009",
            "OfferName": "Student discount",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Students get 10% off for on Jeans and Backpacks",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100004",
            "OfferName": "Soccer sale",
            "PeriodicDiscountTypeValue": 3,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Providing you great discounts ranging from 10% to 20% on all branded Soccer balls.  We carry a full line of soccer balls.  Buy one for yourself or gift it to someone.  We promise you that you won't be disappointed.  If you don't see something that you are looking for please call us.  This offer is only valid at our Retail Malls.",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100003",
            "OfferName": "BMX helmet sale",
            "PeriodicDiscountTypeValue": 0,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Get 20% off on all branded youth BMX helmets when you buy two or more.  Choose from our great selection of BMX bike helmets from top brands, including ProTec, Giro, Bell and SixSixOne BMX helmets.  This offer is only available at our Retail Mall stores",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        }
    ]
}

AddCoupons

La API AddCoupons admite agregar una lista de cupones a un carrito. Devuelve el objeto del carrito después de agregar los cupones.

La siguiente tabla muestra los parámetros de entrada para la API AddCoupons.

Name Tipo Obligatorio/Opcional Description
clave cadena Obligatorio El id. del carro.
couponCodes IEnumerable<string> Obligatorio Códigos de vale para agregar al carrito.
isLegacyDiscountCode bool Opcional Establezca este parámetro en verdadero para indicar que el vale es un código de descuento heredado. El valor predeterminado es falso.

RemoveCoupons

La API RemoveCoupons admite la eliminación de una lista de cupones de un carrito. Devuelve el objeto del carrito después de quitar los cupones.

La siguiente tabla muestra los parámetros de entrada para la API RemoveCoupons.

Name Tipo Obligatorio/Opcional Description
clave cadena Obligatorio El id. del carro.
couponCodes IEnumerable<string> Requerido Códigos de vale para quitar del carrito.

GetProductPromotions

La API GetProductPromotions se introdujo en la versión 10.0.38 de Commerce. Esta API obtiene una lista de productos promocionales con descuentos de productos determinados y también puede tomar una lista de ID de descuento de productos y contexto de precios como entrada y consultar los productos promocionales asociados. El principal caso de uso de la API GetProductPromotions es en las páginas de listado de productos, donde los minoristas muestran productos con descuentos. Esta API admite tanto el modelo de precios basado en propiedades como el modelo de precios heredado.

La siguiente tabla muestra los parámetros de entrada para la API GetProductPromotions.

Name Subnombre Tipo Obligatorio/Opcional Description
productDiscountIds IEnumerable<string> Requerido La lista de identificadores de descuento de productos para buscar productos promocionales.
priceLookupContext PriceLookupContext Requerido El contexto de la fijación de precios.
activeDate DateTimeOffset Opcional La fecha en la que se considera la promoción.

Restricciones y limitaciones:

  • Solo se puede aceptar un máximo de cinco ID de descuento de producto como entrada.
  • Sólo se admiten descuentos simples.
Cuerpo de solicitud de muestra
{
    {
    "productDiscountIds": 
    [
        "ST100009",
        "ST100024"
    ],
    "priceLookupContext": 
    {
        "HeaderContext": 
        {
            "AffiliationLoyaltyTierLines": 
            [
                {
                    "AffiliationId": 5637144577,
                    "LoyaltyTierId": 0, 
                    "AffiliationTypeValue": 0,
                    "ReasonCodeLines": [],
                    "CustomerId": "2001"
                }
            ]
        },
        "LineContexts": []
    },
    "activeDate": "2023-08-20T14:40:05.873+08:00",
    },
}
Cuerpo de respuesta de muestra
{
    "value": 
    [
        {
            "ProductId": 68719489871,
            "ProductDiscounts":
            [
                {
                    "OfferId": "ST100009",
                    "OfferName": "Student discount",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "Students get 10% off on Jeans and Backpacks",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                },
                {
                    "OfferId": "ST100024",
                    "OfferName": "Weekly ad",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                }
            ]   
        },
        {
            "ProductId": 68719489872,
            "ProductDiscounts":
            [
                {
                    "OfferId": "ST100009",
                    "OfferName": "Student discount",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "Students get 10% off on Jeans and Backpacks",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                }
            ]   
        }
    ]
}

Para obtener más información, consulte PriceLookupContext.

PriceLookupContext

La clase PriceLookupContext se utiliza para el modelo de precios basado en propiedades en las API GetProductPromotions y GetActivePrices .

La estructura de la clase PriceLookupContext se muestra en el siguiente ejemplo.

{
    HeaderContext: PriceLookupHeaderContext
    {
        CustomerAccountNumber: string
        AffiliationLoyaltyTierLines: IEnumerable<AffiliationLoyaltyTier>
        ChannelId: long?
        SalesOrderProperties: IEnumerable<AttributeValueBase>
    },
    LineContexts: IEnumerable<PriceLookupLineContext>
    [
        {
            ProductRecordId: string
            UnitOfMeasureSymbol: string
            InventorySiteId: string
            InventoryLocationId: string
            DeliveryMode: string
            CatalogId: string
            SalesLineProperties: IEnumerable<AttributeValueBase>
        },
    ]
}
Cuerpo de solicitud de muestra
"PriceLookupContext":
{
    "HeaderContext": 
    {
        "CustomerAccount": 2001,
        "AffiliationLoyaltyTierLines": 
        [
            {
                "AffiliationId": 5637144577,
                "LoyaltyTierId": 0, 
                "AffiliationTypeValue": 0,
                "ReasonCodeLines": [],
                "CustomerId": "2001"
            }
        ],
        "SalesOrderProperties":
        [
            {
                "@odata.type": "#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue",
                "Name": "CalcDate",
                "TextValue": "2022-10-10"
            }
        ]
    },
    "LineContexts": []
}

Nota

  • No hay un grupo de clientes especificado en el parámetro PriceLookupHeaderContext porque se dedujo del número de cuenta del cliente.
  • El ChannelId se puede especificar en el parámetro PriceLookupHeaderContext. Si no se especifica, se utiliza el ChannelId del contexto de la solicitud (el canal actual cuando se usa Store Commerce).