150 lines
4.2 KiB
Plaintext
150 lines
4.2 KiB
Plaintext
import { Table } from "docs-ui"
|
||
|
||
export const metadata = {
|
||
title: `Application Method`,
|
||
}
|
||
|
||
# {metadata.title}
|
||
|
||
In this guide, you'll learn what an application method is in the Promotion Module.
|
||
|
||
## What is an Application Method?
|
||
|
||
The [ApplicationMethod data model](/references/promotion/models/ApplicationMethod) defines how a promotion is applied. It has the following properties that determine its behavior:
|
||
|
||
<Table>
|
||
<Table.Header>
|
||
<Table.Row>
|
||
<Table.HeaderCell>
|
||
|
||
Property
|
||
|
||
</Table.HeaderCell>
|
||
<Table.HeaderCell>
|
||
|
||
Purpose
|
||
|
||
</Table.HeaderCell>
|
||
<Table.HeaderCell>
|
||
|
||
Possible Values
|
||
|
||
</Table.HeaderCell>
|
||
</Table.Row>
|
||
</Table.Header>
|
||
<Table.Body>
|
||
<Table.Row>
|
||
<Table.Cell>
|
||
|
||
`type`
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
Does the promotion discount a fixed amount or a percentage?
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
`fixed`, `percentage`
|
||
|
||
</Table.Cell>
|
||
</Table.Row>
|
||
<Table.Row>
|
||
<Table.Cell>
|
||
|
||
`target_type`
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
Is the promotion applied to a cart item, shipping method, or the entire order?
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
`items`, `shipping_methods`, `order`
|
||
|
||
</Table.Cell>
|
||
</Table.Row>
|
||
<Table.Row>
|
||
<Table.Cell>
|
||
|
||
`allocation`
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
Is the discounted amount applied to each item or split between the applicable items?
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
`each`, `across`
|
||
|
||
</Table.Cell>
|
||
</Table.Row>
|
||
</Table.Body>
|
||
</Table>
|
||
|
||
## Target Promotion Rules
|
||
|
||
When the promotion is applied to a cart item or a shipping method (in other words, when `target_type` is `items` or `shipping_methods`), you can restrict which items/shipping methods the promotion is applied to.
|
||
|
||
The `ApplicationMethod` data model has a collection of [PromotionRule](/references/promotion/models/PromotionRule) records to restrict which items or shipping methods the promotion applies to. The `target_rules` property in the `ApplicationMethod` represents this relation.
|
||
|
||

|
||
|
||
In this example, the promotion is only applied to product variants in the cart that have the SKU `SHIRT`.
|
||
|
||
---
|
||
|
||
## Buy Promotion Rules
|
||
|
||
When the promotion’s type is `buyget`, you must specify the “buy X” condition. For example, a cart must have two shirts before the promotion can be applied.
|
||
|
||
The application method has a collection of `PromotionRule` items to define the “buy X” rule. The `buy_rules` property in the `ApplicationMethod` represents this relation.
|
||
|
||

|
||
|
||
In this example, the cart must have two product variants with the SKU `SHIRT` for the promotion to be applied.
|
||
|
||
---
|
||
|
||
## Maximum Quantity Restriction
|
||
|
||
When the `allocation` property in the `ApplicationMethod` is set to `each`, you can set the `max_quantity` property of `ApplicationMethod` to limit how many item quantities the promotion is applied to.
|
||
|
||
For example, if the `max_quantity` property is set to `1` and the customer has a line item with quantity two in the cart, the promotion is only applied to one of them.
|
||
|
||
```json title="Example Cart"
|
||
{
|
||
"cart": {
|
||
"items": [
|
||
{
|
||
"id": "item_1",
|
||
"quantity": 2 // The promotion is applied to 1 of this item
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
This condition is applied on the quantity of every applicable item in the cart. For example, if set to `1` and the customer has two applicable items in the cart, the promotion is applied to one of each of them.
|
||
|
||
```json title="Example Cart"
|
||
{
|
||
"cart": {
|
||
"items": [
|
||
{
|
||
"id": "item_1",
|
||
"quantity": 2 // The promotion is applied to 1 of this item
|
||
},
|
||
{
|
||
"id": "item_2",
|
||
"quantity": 3 // The promotion is applied to 1 of this item
|
||
}
|
||
]
|
||
}
|
||
}
|
||
``` |