APIs de preços do Commerce
Isto artigo descreve várias APIs de preços que são fornecidas pelo motor de preços Microsoft Dynamics 365 Commerce .
O motor de fixação de preços Dynamics 365 Commerce fornece as seguintes APIs do Retail Server que as aplicações externas podem consumir para suportar vários cenários de fixação de preços:
- GetActivePrices - Esta API obtém o preço calculado de um produto, incluindo descontos simples.
- CalculateSalesDocument - Esta API calcula os preços e descontos dos produtos em determinadas quantidades, se forem comprados em conjunto.
- GetAvailablePromotions - Esta API obtém os descontos aplicáveis aos produtos no carrinho.
- AddCoupons - Esta API adiciona cupões a um carrinho.
- RemoveCoupons - Esta API remove cupões de um carrinho.
Para mais informações sobre como consumir APIs do Servidor de Retalho em aplicações externas, ver Consumir APIs do Servidor de Retalho em aplicações externas.
ObterPreçosActivos
A API GetActivePrices foi introduzida na versão 10.0.4 do Commerce. Esta API obtém o preço calculado de um produto, incluindo descontos simples. Não calcula descontos de várias linhas e assume que cada produto num pedido de API tem uma quantidade de 1. Esta API também pode receber uma lista de produtos como entrada e consultar o preço de produtos individuais em massa.
A API GetActivePrices suporta as funções comerciais Employee, Customer, Anonymous, e Application .
O principal caso de utilização da API GetActivePrices é a página de detalhes do produto (PDP), onde os retalhistas mostram o melhor preço para um produto, incluindo quaisquer descontos efectivos.
Nota
Se houver menos produtos devolvidos para uma chamada GetActivePrices
, pode seguir Validador de configuração de merchandising de canal para validar as suas configurações de merchandising.
A tabela seguinte mostra os parâmetros de entrada para a API GetActivePrices .
Nome | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
Domínio do projeto | Domínio de Projeção | Obrigatório | ||
ChannelId | longo | Obrigatório | ||
CatalogId | longo | Obrigatório | ||
productIds | IEnumerable<long> | Obrigatório | A lista de produtos para os quais calcular os preços. | |
activeDate | DateTimeOffset | Obrigatório | A data em que os preços são calculados. | |
clienteId | cadeia | Opcional | O número da conta do cliente. | |
affiliationLoyaltyTiers | IEnumerable<AffiliationLoyaltyTier> | Opcional | Os níveis de filiação e de fidelização. | |
AffiliationId | longo | Obrigatório | O ID de afiliação. | |
LoyaltyTierId | longo | Opcional | A identificação do escalão de fidelização. | |
includeSimpleDiscountsInContextualPrice | bool | Opcional | Defina isto parâmetro como true para incluir descontos simples no cálculo do preço. O valor predefinido é false. | |
includeVariantPriceRange | bool | Opcional | Definir isto parâmetro para true para obter os preços mínimo e máximo entre todas as variantes de um produto principal. O valor predefinido é false. | |
incluirPreçosEDescontosAlcançáveis | bool | Opcional | Definir isto parâmetro para true para obter preços e descontos acessíveis. O valor predefinido é false. |
Exemplo de corpo do pedido
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
Exemplo de corpo de 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": [],
}
]
}
Utilizar PriceLookupContext
A classe PriceLookupContext foi introduzida na versão 10.0.37 do Commerce. A classe contém todos os critérios de pesquisa para a API GetActivePrices e substitui os parâmetros anteriores de productIds, activeDate, customerId e affiliationLoyaltyTiers. A classe também tem propriedades adicionais que os programadores podem utilizar para filtrar descontos durante a pesquisa de descontos.
De acordo com as necessidades da sua organização, a API GetActivePrices pode aceitar os parâmetros anteriores ou novos parâmetros associados à classe PriceLookupContext.
Parâmetros de entrada
Nome | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
Domínio do projeto | Domínio de Projeção | Obrigatório | ||
ChannelId | longo | Obrigatório | ||
CatalogId | longo | Obrigatório | ||
priceLookupContext | PriceLookupContext | Obrigatório | ||
HeaderContext | PriceLookupHeaderContext | Obrigatório | Contém CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties | |
Contextos de linha | IEnumerable<PriceLookupLineContext> | Obrigatório | Contém ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId e SalesLineProperties. | |
includeSimpleDiscountsInContextualPrice | bool | Opcional | Defina isto parâmetro como true para incluir descontos simples no cálculo do preço. O valor predefinido é false. | |
includeVariantPriceRange | bool | Opcional | Definir isto parâmetro para true para obter os preços mínimo e máximo entre todas as variantes de um produto principal. O valor predefinido é false. | |
incluirPreçosEDescontosAlcançáveis | bool | Opcional | Definir isto parâmetro para true para obter preços e descontos acessíveis. O valor predefinido é false. |
Para mais informações, ver PriceLookupContext.
CalcularVendasDocumento
A API CalculateSalesDocument foi introduzida na versão 10.0.25 do Commerce. Esta API calcula preços e descontos para produtos em determinadas quantidades se forem comprados em conjunto numa encomenda. O cálculo de preços subjacente à API CalculateSalesDocument considera tanto os descontos de uma linha como os descontos de várias linhas.
O principal caso de utilização da API CalculateSalesDocument é o cálculo de preços em cenários em que o contexto completo do carrinho de compras não persiste (como as cotações de vendas). Os cenários no ponto de venda (POS) e no comércio eletrónico também podem beneficiar deste caso de utilização. Um preço total mais baixo quando os itens do carrinho são calculados como um conjunto (por exemplo, para pacotes discretos, produtos ligados ou recomendados, ou produtos que já foram adicionados ao carrinho) pode persuadir os clientes a adicionar produtos ao carrinho.
O modelo de dados para o pedido e a resposta da API CalculateSalesDocument é Cart. No entanto, no contexto desta API, o modelo de dados tem o nome de SalesDocument. Como a maioria das propriedades é opcional e apenas algumas delas afetam o cálculo do preço, apenas os campos relacionados ao preço são mostrados na tabela a seguir. Não recomendamos a inclusão de outros campos no pedido de API.
O âmbito da API CalculateSalesDocument é apenas o cálculo de preços e descontos. Os impostos e taxas não estão envolvidos.
A tabela seguinte mostra os parâmetros de entrada dentro do objeto que se chama salesDocument.
Nome | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
ID | cadeia | Obrigatório | O identificador do documento de venda. | |
CartLines | IList<CartLine> | Opcional | A lista de linhas para as quais calcular preços e descontos. | |
ID do Produto | longo | Necessário no âmbito da CartLine | O ID do registo do produto. | |
ItemId | cadeia | Opcional | O identificador do item. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro ProductId . | |
InventoryDimensionId | cadeia | Opcional | O identificador da dimensão do inventário. Se for fornecido um valor, a combinação dos valores ItemId e InventoryDimensionId deve corresponder ao valor do parâmetro ProductId . | |
Quantidade | decimal | Necessário no âmbito da CartLine | A quantidade do produto. | |
UnitOfMeasureSymbol | cadeia | Opcional | A unidade do produto. Por defeito, se não for fornecido um valor, a API utiliza a unidade de venda do produto. | |
CustomerId | cadeia | Opcional | O número da conta do cliente. | |
LoyaltyCardId | cadeia | Opcional | O identificador do cartão de fidelidade. Qualquer conta de cliente associada ao cartão de fidelização deve corresponder ao valor do parâmetro CustomerId (se fornecido). O cartão de fidelização não é considerado se não for encontrado ou se o seu estado for Bloqueado. | |
Linhas de filiação | IList<AffiliationLoyaltyTier> | Opcional | Linhas de escalão de fidelidade à filiação. Se forem fornecidos os valores CustomerId e/ou LoyaltyCardId , as linhas do nível de fidelização de filiação correspondentes são fundidas com as linhas fornecidas no valor AffiliationLines . | |
AffiliationId | longo | Necessário no âmbito de AffiliationLoyaltyTier | O ID do registo de afiliação. | |
LoyaltyTierId | longo | Necessário no âmbito de AffiliationLoyaltyTier | O ID do registo do nível de fidelização. | |
AffiliationTypeValue | parâm. | Necessário no âmbito de AffiliationLoyaltyTier | Um valor que indica se a linha de filiação é do tipo Geral (0) ou do tipo Lealdade (1). Se o parâmetro for definido como 0, a API considera o valor AffiliationId como identificador e ignora o valor LoyaltyTierId . Se o parâmetro for definido como 1, a API considera o valor LoyaltyTierId como identificador e ignora o valor AffiliationId . | |
ReasonCodeLines | Coleção<ReasonCodeLine> | Necessário no âmbito de AffiliationLoyaltyTier | Linhas de código do motivo. Isto parâmetro não tem qualquer efeito no cálculo do preço, mas é necessário como parte do objeto AffiliationLoyaltyTier . | |
CustomerId | cadeia | Necessário no âmbito de AffiliationLoyaltyTier | O número da conta do cliente. | |
Cupões | IList<Cupão> | Opcional | Os cupões que não são aplicáveis (inactivos, expirados ou não encontrados) não são considerados no cálculo do preço. | |
Código | cadeia | Necessário no âmbito do Cupão | O código do cupão. | |
CodeId | cadeia | Opcional | O identificador do código do cupão. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro Code . | |
DiscountOfferId | cadeia | Opcional | O identificador de desconto. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro Code . |
Exemplo de corpo do pedido
{
"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 carrinho completo é devolvido como corpo da resposta. Para verificar os preços e descontos, deve concentrar-se nos campos do quadro seguinte.
Nome | Subnome | Tipo | Descrição |
---|---|---|---|
Preço líquido | decimal | O preço líquido de todo o documento de venda antes da aplicação de quaisquer descontos. | |
DiscountAmount | decimal | O valor total do desconto de todo o documento de vendas. | |
TotalMontante | decimal | O montante total de todo o documento de venda. | |
CartLines | IList<CartLine> | Linhas calculadas que incluem detalhes de preços e descontos. | |
Preço | decimal | O preço unitário do produto. | |
Preço líquido | decimal | O preço líquido da linha antes da aplicação de quaisquer descontos (= Preço × Quantidade). | |
DiscountAmount | decimal | O montante do desconto. | |
TotalMontante | decimal | O resultado final do preço total da linha. | |
Linhas de preço | IList<PriceLine> | Detalhes do preço, incluindo a fonte do preço (preço de base, ajustamento de preço ou acordo comercial) e o montante. | |
DiscountLines | IList<DiscountLine> | Detalhes do desconto. |
ObterPromoçõesDisponíveis
Existem duas APIs semelhantes em GetAvailablePromotions :
- Carts/GetAvailablePromotions aceita uma lista de identificadores de linha de carrinho como parâmetro.
- GetAvailablePromotions aceita um objeto DiscountsSearchCriteria como parâmetro.
Carrinhos/GetAvailablePromotions
Dado um carrinho que tem várias linhas de carrinho, a API Carts/GetAvailablePromotions devolve todos os descontos aplicáveis às linhas de carrinho.
O principal caso de utilização da API Carts/GetAvailablePromotions é a página do carrinho, onde os retalhistas mostram os descontos aplicados ou os cupões disponíveis para o carrinho atual.
A tabela seguinte apresenta os parâmetros de entrada para a API Carts/GetAvailablePromotions .
Nome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|
chave | cadeia | Obrigatório | O ID do carrinho. |
cartLineIds | IEnumerable<string> | Opcional | Defina isto parâmetro para devolver descontos apenas para as linhas de carrinho seleccionadas. |
Exemplo de corpo de 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
}
}
]
}
ObterPromoçõesDisponíveis
A API GetAvailablePromotions devolve todos os descontos aplicáveis ao canal em causa.
O principal caso de utilização da API GetAvailablePromotions é a página "Todos os descontos", onde os retalhistas mostram todos os descontos para o canal atual.
A tabela seguinte lista os parâmetros de entrada para a API GetAvailablePromotions .
Nome | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
searchCriteria | DescontosCritérios de pesquisa | Obrigatório | ||
ChannelId | longo | Obrigatório | ||
Keyword | cadeia | Opcional | ||
IsDiscountCodeRequired | bool | Opcional | Indica se o código do cupão é obrigatório ou não. Se for passado null, todos os descontos são recuperados, independentemente dos requisitos do código de cupão. | |
Data de início | DateTimeOffset | Obrigatório | A data de início (inclusive). | |
Data de fim | DateTimeOffset | Obrigatório | A data final (inclusive). |
Exemplo de corpo do pedido
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
Exemplo de corpo de 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
}
}
]
}
]
}
AdicionarCupons
A API AddCoupons suporta a adição de uma lista de cupões a um carrinho. Devolve o objeto carrinho depois de os cupões terem sido adicionados.
A tabela seguinte mostra os parâmetros de entrada para a API AddCoupons .
Nome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|
chave | cadeia | Obrigatório | O ID do carrinho. |
Códigos de cupão | IEnumerable<string> | Obrigatório | Os códigos de cupão a adicionar ao carrinho. |
isLegacyDiscountCode | bool | Opcional | Defina isto parâmetro como true para indicar que o cupão é um código de desconto antigo. O valor predefinido é false. |
RemoverCupons
A API RemoveCoupons suporta a remoção de uma lista de cupões de um carrinho. Devolve o objeto carrinho depois de os cupões terem sido retirados.
A tabela seguinte mostra os parâmetros de entrada para a API RemoveCoupons .
Nome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|
chave | cadeia | Obrigatório | O ID do carrinho. |
Códigos de cupão | IEnumerable<string> | Obrigatório | Os códigos de cupão a remover do carrinho. |
GetProductPromotions
A API GetProductPromotions foi introduzida na versão 10.0.38 do Commerce. Esta API obtém uma lista de produtos promocionais com determinados descontos de produto e também pode receber uma lista de IDs de desconto de produto e contexto de preços como entrada e consultar os produtos promocionais associados. O principal caso de utilização da API GetProductPromotions é nas páginas de listagem de produtos, onde os retalhistas apresentam produtos com descontos. Esta API suporta tanto o modelo de fixação de preços com base na propriedade como o modelo de fixação de preços antigo.
A tabela seguinte mostra os parâmetros de entrada para a API GetProductPromotions .
Nome | Subnome | Tipo | Obrigatório/Opcional | Descrição |
---|---|---|---|---|
productDiscountIds | IEnumerable<string> | Obrigatório | A lista de IDs de desconto de produtos para procurar produtos promocionais. | |
priceLookupContext | PriceLookupContext | Obrigatório | O contexto da fixação de preços. | |
activeDate | DateTimeOffset | Opcional | A data em que a promoção é considerada. |
Restrições e limitações:
- Só pode aceitar um máximo de cinco IDs de desconto de produto como entrada.
- Apenas são suportados descontos simples.
Exemplo de corpo do pedido
{
{
"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 de corpo de 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 mais informações, ver PriceLookupContext.
PriceLookupContext
A classe PriceLookupContext é utilizada para o modelo de preços baseado em propriedades nas APIs GetProductPromotions e GetActivePrices .
A estrutura da classe PriceLookupContext é apresentada no exemplo seguinte.
{
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 de corpo do pedido
"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
- Não existe um grupo de clientes especificado no parâmetro PriceLookupHeaderContext porque isto foi inferido pelo número de conta do cliente.
- O ChannelId pode ser especificado no parâmetro PriceLookupHeaderContext. Se não for especificado, é utilizado o ChannelId do contexto do pedido (o canal atual quando se utiliza o Store Commerce).