APIs de preços do Commerce
TEste artigo descreve várias APIs de preços fornecidas pelo mecanismo de preços do Microsoft Dynamics 365 Commerce.
O mecanismo de preço do Dynamics 365 Commerce fornece as seguintes APIs do Retail Server que aplicativos externos podem consumir para dar suporte a cenários de preço variados:
- GetActivePrices – Esta API obtém o preço calculado de um produto, incluindo descontos simples.
- CalculateSalesDocument – esta API calcula preços e descontos para produtos em determinadas quantidades, caso eles sejam comprados juntos.
- GetAvailablePromotions – Esta API obtém descontos aplicáveis para produtos no carrinho.
- AddCoupons – Esta API adiciona cupons a um carrinho.
- RemoveCoupons – Esta API remove os cupons de um carrinho.
Para obter mais informações sobre como consumir APIs do Retail Server em aplicativos externos, consulte Consumir interfaces de programação de aplicativo do Retail Server em aplicativos externos.
GetActivePrices
A API GetActivePrices foi introduzida na versão 10.0.4 do Commerce Version. Essa API obtém o preço calculado de um produto, incluindo descontos simples. Ela não calcula os descontos combinados e supõe que cada produto em uma solicitação de API tem uma quantidade de 1. Essa API também pode usar uma lista de produtos como entrada e consultar o preço de produtos individuais em massa.
A API GetActivePrices oferece suporte às funções Funcionário, Cliente, Anônimo e Aplicativo do Commerce.
O principal caso de uso para a API GetActivePrices é a página de detalhes do produto (PDP), em que os varejistas apresentar o melhor preço para um produto, incluindo qualquer desconto efetivo.
Anotação
Se você vir menos produtos devolvidos por uma chamada GetActivePrices
, pode seguir o Validador de configuração de merchandising de canal para validar suas configurações de merchandising.
A tabela a seguir mostra os parâmetros de entrada para a API GetActivePrices.
Organização | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
projectDomain | ProjectionDomain | Necessário | ||
ChannelId | long | Obrigatório | ||
CatalogId | long | Obrigatório | ||
productIds | IEnumerable<long> | Obrigatório | A lista de produtos para os quais serão calculados os preços. | |
activeDate | DateTimeOffset | Necessário | A data em que os preços serão calculados. | |
customerId | cadeia de caracteres | Opcional | O número da conta do cliente. | |
affiliationLoyaltyTiers | IEnumerable<AffiliationLoyaltyTier> | Opcional | As camadas de afiliação e do programa de fidelidade. | |
AffiliationId | long | Necessário | A ID da afiliação. | |
LoyaltyTierId | long | Opcional | A ID da camada do programa de fidelidade. | |
includeSimpleDiscountsInContextualPrice | bool | Opcional | Defina este parâmetro como verdadeiro para incluir descontos simples no cálculo de definição de preços. O valor padrão é false. | |
includeVariantPriceRange | bool | Opcional | Defina este parâmetro como verdadeiro para obter os preços mínimo e máximo entre todas as grades de um produto mestre. O valor padrão é false. | |
includeAttainablePricesAndDiscounts | bool | Opcional | Defina este parâmetro como verdadeiro para obter preços e descontos mais acessíveis. O valor padrão é false. |
Exemplo corpo da solicitação
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
Exemplo corpo da resposta
{
"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
A classe PriceLookupContext foi introduzida no Commerce versão 10.0.37. A classe contém todos os critérios de pesquisa da API GetActivePrices e substitui os parâmetros anteriores de productIds, activeDate, customerId e affiliationLoyaltyTiers. A classe também tem propriedades adicionais que os desenvolvedores podem usar para filtrar descontos durante a pesquisa de desconto.
De acordo com as necessidades da organização, a API GetActivePrices pode aceitar os parâmetros anteriores ou os novos parâmetros associados à classe PriceLookupContext.
Parâmetros de entrada
Organização | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
projectDomain | ProjectionDomain | Necessário | ||
ChannelId | long | Necessário | ||
CatalogId | long | Necessário | ||
priceLookupContext | PriceLookupContext | Necessário | ||
HeaderContext | PriceLookupHeaderContext | Necessário | Contém CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties | |
LineContexts | IEnumerable<PriceLookupLineContext> | Necessário | Contém ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId e SalesLineProperties. | |
includeSimpleDiscountsInContextualPrice | bool | Opcional | Defina este parâmetro como verdadeiro para incluir descontos simples no cálculo de definição de preços. O valor padrão é false. | |
includeVariantPriceRange | bool | Opcional | Defina este parâmetro como verdadeiro para obter os preços mínimo e máximo entre todas as grades de um produto mestre. O valor padrão é false. | |
includeAttainablePricesAndDiscounts | bool | Opcional | Defina este parâmetro como verdadeiro para obter preços e descontos mais acessíveis. O valor padrão é false. |
Para obter mais informações, consulte PriceLookupContext.
CalculateSalesDocument
A API CalculateSalesDocument foi introduzida na versão 10.0.25 do Commerce. Essa API calcula preços e descontos para produtos em determinadas quantidades, caso eles sejam comprados em um pedido. O cálculo de definição de preços por trás da API CalculateSalesDocument considera descontos de uma única linha e de várias linhas.
O principal caso de uso da API CalculateSalesDocument é o cálculo de definição de preços em cenários nos quais o contexto de carrinho total não é mantido (como cotações de venda). Os cenários no PDV (ponto de venda) e comércio eletrônico do Commerce também podem se beneficiar deste caso de uso. Um preço total menor quando os itens do carrinho são calculados como um conjunto (por exemplo, para pacotes discretos, produtos vinculados ou recomendados ou produtos que já foram adicionados ao carrinho) podem persuadir os clientes a adicionar produtos ao carrinho.
O modelo de dados para a solicitação e a resposta da API CalculateSalesDocument é Carrinho. No entanto, no contexto dessa API, o modelo de dados é denominado SalesDocument. Como a maioria das propriedades é opcional, e apenas algumas delas afetam o cálculo de definição de preços, somente os campos relacionados a preços são mostrados na tabela a seguir. Não é recomendável que outros campos sejam envolvidos na solicitação da API.
O escopo da API CalculateSalesDocument é apenas o cálculo de preços e descontos. Os impostos e os encargos não estão envolvidos.
A tabela a seguir mostra os parâmetros de entrada no objeto chamado salesDocument.
Organização | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
Id | cadeia de caracteres | Necessário | O identificador do documento de venda. | |
CartLines | IList<CartLine> | Opcional | A lista de linhas para as quais serão calculados os preços e descontos. | |
ID do Produto | long | Necessário no escopo da CartLine | A ID de registro do produto. | |
ItemId | cadeia de caracteres | Opcional | O identificador do item. Se um valor for fornecido, ele deve corresponder ao valor do parâmetro ProductID. | |
InventoryDimensionId | cadeia de caracteres | Opcional | O identificador de dimensão do estoque. Se um valor for fornecido, a combinação dos valores de ItemId e InventoryDimensionId deverá corresponder ao valor do parâmetro ProductId. | |
Quantidade | decimal | Necessário no escopo da CartLine | A quantidade do produto. | |
UnitOfMeasureSymbol | cadeia de caracteres | Opcional | A unidade do produto. Por padrão, se um valor não for fornecido, a API usará a unidade de venda do produto. | |
CustomerId | cadeia de caracteres | Opcional | O número da conta do cliente. | |
LoyaltyCardId | cadeia de caracteres | Opcional | O identificador do cartão-fidelidade. Qualquer conta de cliente associada ao cartão-fidelidade deve corresponder ao valor do parâmetro CustomerId (se fornecido). O cartão-fidelidade não será levado em consideração se não for encontrado ou o status for Bloqueado. | |
AffiliationLines | IList<AffiliationLoyaltyTier> | Opcional | Linhas da camada de fidelidade da afiliação. Se os valores CustomerId e/ou LoyaltyCardId forem fornecidos, as linhas do nível de fidelidade da afiliação correspondentes serão mescladas com linhas fornecidas no valor AffiliationLines. | |
AffiliationId | long | Necessário no escopo de AffiliationLoyaltyTier | A ID de registro da afiliação. | |
LoyaltyTierId | long | Necessário no escopo de AffiliationLoyaltyTier | A ID do registro da camada de fidelidade. | |
AffiliationTypeValue | int | Necessário no escopo de AffiliationLoyaltyTier | Um valor que indica se a linha de afiliação é do tipo Geral (0) ou do tipo Fidelidade (1). Se o parâmetro for definido como 0, a API vai usar o valor AffiliationId como o identificador e ignorar o valor LoyaltyTierId. Se o parâmetro for definido como 1, a API vai usar o valor LoyaltyTierId como o identificador e ignorar o valor AffiliationId. | |
ReasonCodeLines | Collection<ReasonCodeLine> | Necessário no escopo de AffiliationLoyaltyTier | Linhas do código do motivo. Esse parâmetro não tem efeito sobre o cálculo de preços, mas é necessário como parte do objeto AffiliationLoyaltyTier. | |
CustomerId | cadeia de caracteres | Necessário no escopo de AffiliationLoyaltyTier | O número da conta do cliente. | |
Cupons | IList<Coupon> | Opcional | Os cupons não aplicáveis (inativos, expirados ou não encontrados) não são levados em consideração no cálculo de preço. | |
Código | cadeia de caracteres | Necessário no escopo de Coupon | O código do cupom. | |
CodeId | cadeia de caracteres | Opcional | O identificador do código do cupom. Se um valor for fornecido, ele deverá corresponder ao valor do parâmetro Code. | |
DiscountOfferId | cadeia de caracteres | Opcional | O identificador do desconto. Se um valor for fornecido, ele deverá corresponder ao valor do parâmetro Code. |
Exemplo corpo da solicitação
{
"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"
}
]
}
}
O objeto do carrinho inteiro é devolvido como o corpo da resposta. Para verificar preços e descontos, você deve focar nos campos na tabela a seguir.
Organização | Subnome | Tipo | Descrição |
---|---|---|---|
NetPrice | decimal | O preço líquido de todo o documento de vendas antes da aplicação de eventuais descontos. | |
DiscountAmount | decimal | O valor total do desconto do documento de vendas inteiro. | |
TotalAmount | decimal | O valor total do documento de vendas inteiro. | |
CartLines | IList<CartLine> | Linhas calculadas que incluem detalhes de preço e desconto. | |
Preço | decimal | O preço unitário do produto. | |
NetPrice | decimal | O preço líquido da linha antes da aplicação de eventuais descontos (= Preço × Quantidade). | |
DiscountAmount | decimal | O valor do desconto. | |
TotalAmount | decimal | O resultado do preço total final da linha. | |
PriceLines | IList<PriceLine> | Detalhes de preço, incluindo a origem do preço (preço base, ajuste de preço ou contrato comercial) e o valor. | |
DiscountLines | IList<DiscountLine> | Detalhes do desconto. |
GetAvailablePromotions
Há duas APIs GetAvailablePromotions semelhantes:
- Carts/GetAvailablePromotions aceita uma lista de identificadores de linha do carrinho como parâmetro.
- GetAvailablePromotions aceita um objeto DiscountsSearchCriteria como parâmetro.
Carrinhos/GetAvailablePromotions
Dado um carrinho com várias linhas de carrinho, a API Carrinhos/GetAvailablePromotions retorna todos os descontos aplicáveis para as linhas do carrinho.
O principal caso de uso para a API Carrinhos/GetAvailablePromotions é a página do carrinho, em que os varejistas exibem descontos aplicados ou cupons disponíveis para o carrinho atual.
A tabela a seguir lista os parâmetros de entrada para a API Carrinhos/GetAvailablePromotions.
Nome | Tipo | Obrigatório/Opcional | descrição |
---|---|---|---|
chave | cadeia de caracteres | Obrigatório | A ID do carrinho. |
cartLineIds | IEnumerable<string> | Opcional | Defina este parâmetro para retornar descontos somente para as linhas do carrinho selecionado. |
Exemplo corpo da resposta
{
"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
A API GetAvailablePromotions retorna todos os descontos aplicáveis para determinado canal.
O principal caso de uso para a API GetAvailablePromotions é a página "Todos os descontos", em que os varejistas exibem todos os descontos aplicados para o canal atual.
A tabela a seguir lista os parâmetros de entrada para a API GetAvailablePromotions.
Organização | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
searchCriteria | DiscountsSearchCriteria | Necessário | ||
ChannelId | long | Necessário | ||
Palavra-chave | cadeia de caracteres | Opcional | ||
IsDiscountCodeRequired | bool | Opcional | Indica se o código do cupom é ou não necessário. Se for exibido Nulo, todos os descontos serão recuperados, independentemente dos requisitos de código de cupom. | |
StartDate | DateTimeOffset | Necessário | A data de início (incluída). | |
EndDate | DateTimeOffset | Necessário | A data final (incluída). |
Exemplo corpo da solicitação
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
Exemplo corpo da resposta
{
"@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
A API de Addcupons oferece suporte à adição de uma lista de cupons a um carrinho. Ela retorna o objeto do carrinho depois que os cupons são adicionados.
A tabela a seguir mostra os parâmetros de entrada para a API AddCoupons.
Nome | Tipo | Obrigatório/Opcional | descrição |
---|---|---|---|
chave | cadeia de caracteres | Obrigatório | A ID do carrinho. |
couponCodes | IEnumerable<string> | Obrigatório | Os códigos de cupom a serem adicionados ao carrinho. |
isLegacyDiscountCode | bool | Opcional | Defina este parâmetro como verdadeiro para indicar que o cupom é um código de desconto herdado. O valor padrão é false. |
RemoveCoupons
A API RemoveCoupons oferece suporte à remoção de uma lista de cupons de um carrinho. Ela retorna o objeto do carrinho depois que os cupons são removidos.
A tabela a seguir mostra os parâmetros de entrada para a API RemoveCoupons.
Nome | Tipo | Obrigatório/Opcional | descrição |
---|---|---|---|
chave | cadeia de caracteres | Obrigatório | A ID do carrinho. |
couponCodes | IEnumerable<string> | Necessário | Os códigos de cupom a serem removidos do carrinho. |
GetProductPromotions
A API GetProductPromotions foi introduzida no Commerce versão 10.0.38. Esta API obtém uma lista de produtos promocionais com determinados descontos de produto e também pode usar uma lista de IDs de desconto de produto e contexto de preço como entrada e consultar os produtos promocionais associados. O caso de uso principal da API GetProductPromotions está em páginas de listagem de produtos, nas quais os varejistas demonstram produtos com descontos. Essa API dá suporte ao modelo de preço com base em propriedades e ao modelo de preço herdado.
A tabela a seguir mostra os parâmetros de entrada para a API GetProductPromotions.
Organização | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
productDiscountIds | IEnumerable<string> | Necessário | A lista de IDs de desconto do produto para procurar produtos promocionais. | |
priceLookupContext | PriceLookupContext | Necessário | O contexto de preço. | |
activeDate | DateTimeOffset | Opcional | A data quando a promoção é levada em consideração. |
Restrições e limitações:
- Só pode ter, no máximo, cinco IDs de desconto do produto como entrada.
- Somente descontos simples são compatíveis.
Exemplo corpo da solicitação
{
{
"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",
},
}
Exemplo corpo da resposta
{
"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 obter mais informações, consulte PriceLookupContext.
PriceLookupContext
A classe PriceLookupContext é usada no modelo de preço base da propriedade nas APIs GetProductPromotions e GetActivePrices.
A estrutura da classe PriceLookupContext é mostrada no exemplo a seguir.
{
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>
},
]
}
Exemplo corpo da solicitação
"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": []
}
Observação
- Não há um grupo de clientes especificado no parâmetro PriceLookupHeaderContext porque ele foi inferido pelo número da conta do cliente.
- O ChannelId pode ser especificado no parâmetro PriceLookupHeaderContext. Se não for especificado, o ChannelId do contexto da solicitação (o canal atual durante o uso do Store Commerce) vai ser usado.