API de precios comerciales

En este artículo se describen varias 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 retail Server que las aplicaciones externas pueden usar 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.

Nota

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.

Nombre Subnombre Tipo Obligatorio/Opcional Descripción
projectDomain ProjectionDomain Obligatorio
ChannelId largo Obligatorio
CatalogId largo Obligatorio
productIds IEnumerable<long> Obligatorio La lista de productos para calcular los precios.
activeDate DateTimeOffset Obligatorio 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 largo Obligatorio Id. de afiliación.
LoyaltyTierId largo 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 false.
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 false.
includeAttainablePricesAndDiscounts bool Opcional Establezca este parámetro en verdadero para obtener precios y descuentos asequibles. El valor predeterminado es false.
Cuerpo de solicitud de ejemplo
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Cuerpo de la 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 versión de Commerce 10.0.37 presenta la clase PriceLookupContext. Esta clase contiene todos los criterios de búsqueda de la API GetActivePrices. 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 los 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 los nuevos parámetros asociados a la clase PriceLookupContext.

Parámetros de entrada

Nombre Subnombre Tipo Obligatorio/Opcional Descripción
projectDomain ProjectionDomain Obligatorio
ChannelId largo Obligatorio
CatalogId largo Obligatorio
priceLookupContext PriceLookupContext Obligatorio
HeaderContext PriceLookupHeaderContext Obligatorio Contiene CustomerAccountNumber, AffiliationLoyaltyTierLines y SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Obligatorio Contiene ProductRecordId, SímboloDeUnidadDeMedida, InventorySiteId, InventoryLocationId, ModoDeEntrega, IdDeCatálogo y PropiedadesDeLíneaDeVentas.
includeSimpleDiscountsInContextualPrice bool Opcional Establezca este parámetro en verdadero para incluir descuentos simples en el cálculo de precios. El valor predeterminado es false.
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 false.
includeAttainablePricesAndDiscounts bool Opcional Establezca este parámetro en verdadero para obtener precios y descuentos asequibles. El valor predeterminado es false.

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 CalculateSalesDocument API considera los descuentos de una sola línea y 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 (PDV) y el comercio electrónico Commerce también pueden beneficiarse de este caso de uso. Un precio total menor cuando los artículos de carro se calculan como un conjunto (por ejemplo, para paquetes discretos, productos vinculados o recomendados, o productos que ya están en el carro) podrían convencer a los clientes de agregar productos al carro.

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 incluya ningún otro campo 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.

Nombre Subnombre Tipo Obligatorio/Opcional Descripción
Id. cadena Obligatorio 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 largo 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 largo Requerido en el alcance de AffiliationLoyaltyTier Id. de registro de afiliación.
LoyaltyTierId largo 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 Colección<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 Cupón de IList<> 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 ámbito de Cupón El código de cupón.
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 ejemplo
{
    "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 comprobar los precios y los descuentos, céntrese en los campos de la tabla siguiente.

Nombre Subnombre Tipo Descripción
NetPrice decimal El precio neto del documento de ventas completo antes de aplicar los descuentos.
DiscountAmount 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).
DiscountAmount 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<LíneaDeDescuento> Detalles del descuento.

GetAvailablePromotions

Hay dos APIs de GetAvailablePromotions similares disponibles:

  • Carts/GetAvailablePromotions acepta una lista de identificadores de línea de carritos 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.

Nombre Tipo Obligatorio/Opcional Descripción
clave cadena Obligatorio El id. del carro.
cartLineIds IEnumerable<cadena> Opcional Establezca este parámetro para devolver descuentos solo para las líneas de carrito seleccionadas.
Cuerpo de la 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 caso de uso principal de 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.

Nombre Subnombre Tipo Obligatorio/Opcional Descripción
searchCriteria DiscountsSearchCriteria Obligatorio
ChannelId largo Obligatorio
Palabra clave cadena Opcional
IsDiscountCodeRequired bool Opcional Indica si el código de cupón es necesario o no. Si se pasa null, la API recupera todos los descuentos, independientemente de los requisitos del código de cupón.
StartDate DateTimeOffset Obligatorio Fecha y hora de inicio (inclusive).
EndDate DateTimeOffset Obligatorio Fecha final (inclusive).
Cuerpo de solicitud de ejemplo
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Cuerpo de la 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.

Nombre Tipo Obligatorio/Opcional Descripción
clave cadena Obligatorio El id. del carro.
couponCodes IEnumerable<cadena> 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 false.

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.

Nombre Tipo Obligatorio/Opcional Descripción
clave cadena Obligatorio El id. del carro.
couponCodes IEnumerable<cadena> Obligatorio Códigos de cupón 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 producto dados. También puede tomar una lista de identificadores de descuento de producto 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.

Nombre Subnombre Tipo Obligatorio/Opcional Descripción
productDiscountIds IEnumerable<cadena> Obligatorio Lista de identificadores de descuento de producto para buscar productos promocionales.
priceLookupContext PriceLookupContext Obligatorio 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 ejemplo
{
    {
    "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 la 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

Use la clase PriceLookupContext para el modelo de precios basado en propiedades en las API GetProductPromotions y GetActivePrices .

En el ejemplo siguiente se muestra la estructura de la clase PriceLookupContext.

{
    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 ejemplo
"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

  • La API deduce el grupo de clientes del número de cuenta de cliente, por lo que la solicitud no especifica un grupo de clientes en el parámetro PriceLookupHeaderContext.
  • Puede especificar channelId en el parámetro PriceLookupHeaderContext. Si no lo especificas, la API usa channelId desde el contexto de solicitud (el canal actual al usar Store Commerce).