- Change existing data model guides and add new ones for DML - Change module's docs around service factory + remove guides that are now necessary - Hide/remove all mentions of module relationships, or label them as coming soon. - Change all data model creation snippets to use DML - use `property` instead of `field` when referring to a data model's properties. - Fix all snippets in commerce module guides to use new method suffix (no more main model methods) - Rework recipes, removing/hiding a lot of sections as a lot of recipes are incomplete with the current state of DML. ### Other changes - Highlight fixes in some guides - Remove feature flags guide - Fix code block styles when there are no line numbers. ### Upcoming changes in other PRs - Re-generate commerce module references (for the updates in the method names) - Ensure that the data model references are generated correctly for models using DML. - (probably at a very later point) revisit recipes
90 lines
2.6 KiB
Plaintext
90 lines
2.6 KiB
Plaintext
import { Table } from "docs-ui"
|
||
|
||
export const metadata = {
|
||
title: `Application Method`,
|
||
}
|
||
|
||
# {metadata.title}
|
||
|
||
In this document, you'll learn what an application method is.
|
||
|
||
## What is an Application Method?
|
||
|
||
The [ApplicationMethod data model](/references/promotion/models/ApplicationMethod) defines how a promotion is applied:
|
||
|
||
<Table>
|
||
<Table.Header>
|
||
<Table.Row>
|
||
<Table.HeaderCell>
|
||
|
||
Property
|
||
|
||
</Table.HeaderCell>
|
||
<Table.HeaderCell>
|
||
|
||
Purpose
|
||
|
||
</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.Row>
|
||
<Table.Row>
|
||
<Table.Cell>
|
||
|
||
`target_type`
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
Is the promotion applied on a cart item, shipping method, or the entire order?
|
||
|
||
</Table.Cell>
|
||
</Table.Row>
|
||
<Table.Row>
|
||
<Table.Cell>
|
||
|
||
`allocation`
|
||
|
||
</Table.Cell>
|
||
<Table.Cell>
|
||
|
||
Is the discounted amount applied on each item or split between the applicable items?
|
||
|
||
</Table.Cell>
|
||
</Table.Row>
|
||
</Table.Body>
|
||
</Table>
|
||
|
||
## Target Promotion Rules
|
||
|
||
When the promotion is applied to a cart item or a shipping method, you can restrict which items/shipping methods the promotion is applied to.
|
||
|
||
The `ApplicationMethod` data model has a collection of `PromotionRule` records to restrict which items or shipping methods the promotion applies to. The `target_rules` property represents this relation.
|
||
|
||

|
||
|
||
In this example, the promotion is only applied on products in the cart having 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 represents this relation.
|
||
|
||

|
||
|
||
In this example, the cart must have two products with the SKU `SHIRT` for the promotion to be applied. |