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 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 los productos en el carrito.
- AddCoupons : esta API agrega cupones a un carrito.
- RemoveCoupons : esta API elimina los 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. |
Ejemplo de cuerpo de la solicitud
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
Ejemplo de cuerpo de la respuesta
{
"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.
Parámetros de entrada
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. |
Ejemplo de cuerpo de la solicitud
{
"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 carro 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. |
Ejemplo de cuerpo de la respuesta
{
"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). |
Ejemplo de cuerpo de la solicitud
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
Ejemplo de cuerpo de la respuesta
{
"@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.
Ejemplo de cuerpo de la solicitud
{
{
"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",
},
}
Ejemplo de cuerpo de la respuesta
{
"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>
},
]
}
Ejemplo de cuerpo de la solicitud
"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).