creatuity / magento2-order-status-adjust
creatuity/magento2-order-status-adjust
Adjust Order Status to specific one if Criteria are met
Order Status Adjust module for Magento 2
Installation
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
Example Use Cases
- 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"
Usage
Configuration
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
Troubleshooting
- 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
Available Conditions
| 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 |
Compatibility
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.
Plugin Development
You can easily add more Order (or any other) conditions.
- Extend
\Magento\Rule\Model\Condition\AbstractConditionin 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.
No changelog yet
The vendor hasn't published a changelog. Tagged releases appear in the Versions tab.
Requires 1
| Package | Constraint |
|---|---|
| php | >=8.1.0 |
Compatibility
Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.
Code Quality
Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge — a phpcs finding can't make a module incompatible.
Static analysis
Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.
| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Fail | 38 | 1 error, 37 warnings (ruleset: Magento2) — 4 auto-fixable with phpcbf |
| PHPMD | Warning | 24 | 24 rule violations (MissingImport:15, UnusedFormalParameter:5, UndefinedVariable:3, CyclomaticComplexity:1) |
| Cpd | Pass | 0 | |
| Composer validate | Info | 2 | valid; 2 advisory notes (composer validate --strict) |
PHPStan
Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases. Cell → details modal.
Tests
Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.
Unit tests
| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | ||
| 2.4.8 | N/A | N/A | ||
| 2.4.9 | N/A | N/A |
Integration tests
| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | ||
| 2.4.8 | N/A | N/A | ||
| 2.4.9 | N/A | N/A |
Security
Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.
More from creatuity
View vendorTurn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.