Use composer to install. To proceed, run these commands in your terminal:
composer require creatuity/magento2-order-status-adjust
php bin/magento module:enable Creatuity_OrderStatusAdjust
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
- set status "Hold - Liftgate" if order items total weight is >= 1000 lbs. and order state is "Processing"
- set status "Payment Review" if Check/Money payment method was used, order total was >= $1000.00 and order state is "Pending"
- set status "Pending - VIP" if "Exclusive Payment Method" was used and order state is "Pending"
- set status "Fraud" if Grand Total is >= $1000.00 and order state is "Pending"
Go to Admin Panel -> Stores -> Settings -> Order Status Adjust Rules.
Click on "Add New Rule" button located in the upper-right corner of the screen to add new rule.
Fill all required and possibly optional fields:
- Enabled - yes/no. Indicates if rule is active. If not - it will not be taken into account during Order updates.
- Rule Name - text. Human-friendly name of the rule, to easily distinguish what is its purpose.
- Sort Order - integer. Allows to sort which rules will have precedence. Rules with lower value will be executed as the first ones. If sort order will be same - rule with lower ID will execute as the first one.
- Date and Time
- Start - datetime. Allows to select date and time from which rule will be effective. In Store's timezone.
- End - datetime. Allows to select date and time to which rule will be effective. In Store's timezone.
- Condition - complex. Combination of rules revolving around Orders that can be used to select particular orders and update their status to desired one conditionally.
- Action (Set Order Status) - select. Select desired order status that should be set if rule will be applied.
Save rule
- My rules are not applying
- verify enabled state
- verify start and end date (ensure that they're in store timezone)
- Multiple rules are being applied
- verify if your rules are excluding each other
- example: Rule A sets "On Hold", Rule B sets "Cancelled". Make sure that Rule A is having condition "Status" is not 'On Hold' and Rule B is having condition "Status" is not 'Canceled' in their Conditions
- verify if your rules are excluding each other
- Module is throwing exceptions
- Ensure that you're running on PHP 8.2 and Magento 2.4.6+
- If issue is related to older version of Magento or PHP - feel free to open Issue and ask
Condition | Internal Code |
---|---|
Subtotal (Excl. Tax) | base_subtotal_with_discount |
Subtotal (Incl. Tax) | base_subtotal_total_incl_tax |
Subtotal | base_subtotal |
Tax Total | base_tax_amount |
Grand Total | base_grand_total |
Discount Total | base_discount_amount |
Gift Cards Amount | base_gift_cards_amount |
Total Canceled | base_total_canceled |
Total Invoiced | base_total_invoiced |
Total Paid | base_total_paid |
Total Refunded | base_total_refunded |
Shipping Amount | base_shipping_amount |
Shipping Canceled | base_shipping_canceled |
Shipping Invoiced | base_shipping_invoiced |
Shipping Refunded | base_shipping_refunded |
Total Items Quantity Ordered | total_qty_ordered |
Total Weight | weight |
Payment Method | payment_method |
Shipping Method | shipping_method |
Order Currency Code | order_currency_code |
Order Store ID | store_id |
Coupon Code | coupon_code |
Total Item Count | total_item_count |
Customer Is Guest | customer_is_guest |
Customer Group ID | customer_group_id |
Customer Tax Vat | customer_taxvat |
Remote IP | remote_ip |
Status | status |
State | state |
Module was developed using Adobe Commerce 2.4.5 on PHP 8.1 It should work on any Magento Open Source or Adobe Commerce 2.4.4+ versions though.
You can easily add more Order (or any other) conditions.
- Extend
\Magento\Rule\Model\Condition\AbstractCondition
in a similar manner to how it is extended by\Creatuity\OrderStatusAdjust\Model\Condition\Type\Order
- Open di.xml and add newly created class into conditionTypes argument here:
<type name="Creatuity\OrderStatusAdjust\Model\Condition\Combine"> <arguments> <argument name="conditionTypes" xsi:type="array"> <item name="INSERT_TITLE" xsi:type ="object">INSERT_FULLY_QUALIFIED_CLASS_NAME_WITH_NAMESPACE</item> </argument> </arguments> </type>
- Make sure you've enabled your newly created module and regenerated static files.