Skip to content

creatuity/magento2-order-status-adjust

Repository files navigation

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
  • 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.

  1. Extend \Magento\Rule\Model\Condition\AbstractCondition in a similar manner to how it is extended by \Creatuity\OrderStatusAdjust\Model\Condition\Type\Order
  2. 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>
    
  3. Make sure you've enabled your newly created module and regenerated static files.