Discounts

Type
Class
Namespace
craft\commerce\services
Inherits
craft\commerce\services\Discounts » yii\base\Component » yii\base\BaseObject
Implements
yii\base\Configurable
Since
2.0y

Discount service.

View source

# Public Properties

Property Description
allActiveDiscounts array
allDiscounts craft\commerce\models\Discount[]
behaviors yii\base\Behavior – List of behaviors attached to this component

# allActiveDiscounts

Type
array
Access
Read-only
Since
2.2.14

View source

# allDiscounts

Type
craft\commerce\models\Discount[]
Access
Read-only

View source

# Public Methods

Method Description
__call() Calls the named method which is not a class method.
__clone() This method is called after the object is created by cloning an existing one.
__construct() Constructor.
__get() Returns the value of a component property.
__isset() Checks if a property is set, i.e. defined and not null.
__set() Sets the value of a component property.
__unset() Sets a component property to be null.
attachBehavior() Attaches a behavior to this component.
attachBehaviors() Attaches a list of behaviors to the component.
behaviors() Returns a list of behaviors that this component should behave as.
canGetProperty() Returns a value indicating whether a property can be read.
canSetProperty() Returns a value indicating whether a property can be set.
className() Returns the fully qualified name of this class.
clearCustomerUsageHistoryById()
clearDiscountUsesById() Clear total discount uses
clearEmailUsageHistoryById()
deleteDiscountById() Delete a discount by its ID.
detachBehavior() Detaches a behavior from the component.
detachBehaviors() Detaches all behaviors from the component.
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component.
getAllActiveDiscounts() Get all currently active discounts
getAllDiscounts() Get all discounts.
getBehavior() Returns the named behavior object.
getBehaviors() Returns all behaviors attached to this component.
getCustomerUsageStatsById() Customer usage stats for discount
getDiscountByCode() Returns an enabled discount by its code.
getDiscountById() Get a discount by its ID.
getDiscountsRelatedToPurchasable()
getEmailUsageStatsById() Email usage stats for discount
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event.
hasMethod() Returns a value indicating whether a method is defined.
hasProperty() Returns a value indicating whether a property is defined for this component.
init() Initializes the object.
matchLineItem() Match a line item against a discount.
matchOrder()
off() Detaches an existing event handler from this component.
on() Attaches an event handler to an event.
orderCompleteHandler() Updates discount uses counters.
orderCouponAvailable() Is discount coupon available to the order
populateDiscountRelations() Populates a discount's relations.
reorderDiscounts() Reorder discounts by an array of ids.
saveDiscount() Save a discount.
trigger() Triggers an event.

# clearCustomerUsageHistoryById()

Since
3.0

View source

Arguments

Throws

# clearDiscountUsesById()

Since
3.0

Clear total discount uses

View source

Arguments

Throws

# clearEmailUsageHistoryById()

Since
3.0

View source

Arguments

Throws

# deleteDiscountById()

Delete a discount by its ID.

View source

Arguments

Returns

boolean

# getAllActiveDiscounts()

Since
2.2.14

Get all currently active discounts

View source

Arguments

Returns

array

Throws

# getAllDiscounts()

Get all discounts.

View source

Returns

craft\commerce\models\Discount[]

# getCustomerUsageStatsById()

Customer usage stats for discount

View source

Arguments

Returns

array – Return in the format ['uses' => int, 'customers' => int]

# getDiscountByCode()

Returns an enabled discount by its code.

View source

Arguments

Returns

craft\commerce\models\Discount, null

# getDiscountById()

Get a discount by its ID.

View source

Arguments

Returns

craft\commerce\models\Discount, null

# getDiscountsRelatedToPurchasable()

Since
2.2

View source

Arguments

Returns

array

# getEmailUsageStatsById()

Email usage stats for discount

View source

Arguments

Returns

array – Return in the format ['uses' => int, 'emails' => int]

# matchLineItem()

Match a line item against a discount.

View source

Arguments

Returns

boolean

# matchOrder()

View source

Arguments

Returns

boolean

# orderCompleteHandler()

Updates discount uses counters.

View source

Arguments

# orderCouponAvailable()

Is discount coupon available to the order

View source

Arguments

Returns

boolean

# populateDiscountRelations()

Populates a discount's relations.

View source

Arguments

# reorderDiscounts()

Reorder discounts by an array of ids.

View source

Arguments

Returns

boolean

# saveDiscount()

Save a discount.

View source

Arguments

Returns

boolean

Throws

# Events

# EVENT_AFTER_DELETE_DISCOUNT

Type
craft\commerce\events\DiscountEvent

The event that is triggered after a discount is deleted.

use craft\commerce\events\DiscountEvent;
use craft\commerce\services\Discounts;
use craft\commerce\models\Discount;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_AFTER_DELETE_DISCOUNT,
    function(DiscountEvent $event) {
        // @var Discount $discount
        $discount = $event->discount;

        // Remove this discount from a payment gateway
        // ...
    }
);

# EVENT_AFTER_SAVE_DISCOUNT

Type
craft\commerce\events\DiscountEvent

The event that is triggered after a discount is saved.

use craft\commerce\events\DiscountEvent;
use craft\commerce\services\Discounts;
use craft\commerce\models\Discount;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_AFTER_SAVE_DISCOUNT,
    function(DiscountEvent $event) {
        // @var Discount $discount
        $discount = $event->discount;
        // @var bool $isNew
        $isNew = $event->isNew;

        // Set this discount as default in an external CRM
        // ...
    }
);

# EVENT_BEFORE_MATCH_LINE_ITEM

Type
craft\commerce\events\MatchLineItemEvent

The event that is triggered when a line item is matched with a discount.

This event will be raised if all standard conditions are met. You may set the isValid property to false on the event to prevent the matching of the discount to the line item.

use craft\commerce\services\Discounts;
use craft\commerce\events\MatchLineItemEvent;
use craft\commerce\models\Discount;
use craft\commerce\models\LineItem;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_BEFORE_MATCH_LINE_ITEM,
    function(MatchLineItemEvent $event) {
        // @var LineItem $lineItem
        $lineItem = $event->lineItem;
        // @var Discount $discount
        $discount = $event->discount;

        // Check some business rules and prevent a match in special cases
        // ...
    }
);

# EVENT_BEFORE_SAVE_DISCOUNT

Type
craft\commerce\events\DiscountEvent

The event that is triggered before a discount is saved.

use craft\commerce\events\DiscountEvent;
use craft\commerce\services\Discounts;
use craft\commerce\models\Discount;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_BEFORE_SAVE_DISCOUNT,
    function(DiscountEvent $event) {
        // @var Discount $discount
        $discount = $event->discount;
        // @var bool $isNew
        $isNew = $event->isNew;

        // Let an external CRM know about a client’s new discount
        // ...
    }
);

# EVENT_DISCOUNT_MATCHES_LINE_ITEM

Type
craft\commerce\events\MatchLineItemEvent

The event that is triggered when a line item is matched with a discount.

This event will be raised if all standard conditions are met. You may set the isValid property to false on the event to prevent the matching of the discount to the line item.

use craft\commerce\services\Discounts;
use craft\commerce\events\MatchLineItemEvent;
use craft\commerce\models\Discount;
use craft\commerce\models\LineItem;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_DISCOUNT_MATCHES_LINE_ITEM,
    function(MatchLineItemEvent $event) {
        // @var LineItem $lineItem
        $lineItem = $event->lineItem;
        // @var Discount $discount
        $discount = $event->discount;

        // Check some business rules and prevent a match in special cases
        // ...
    }
);

# EVENT_DISCOUNT_MATCHES_ORDER

Type
craft\commerce\events\MatchOrderEvent

The event that is triggered when an order is matched with a discount.

You may set the isValid property to false on the event to prevent the matching of the discount with the order.

use craft\commerce\services\Discounts;
use craft\commerce\events\MatchOrderEvent;
use craft\commerce\models\Discount;
use craft\commerce\elements\Order;
use yii\base\Event;

Event::on(
    Discounts::class,
    Discounts::EVENT_DISCOUNT_MATCHES_ORDER,
    function(MatchLineOrder $event) {
        // @var Order $order
        $order = $event->order;
        // @var Discount $discount
        $discount = $event->discount;

        // Check some business rules and prevent a match in special cases
        // ... $event->isValid = false; // set to false if you want it to NOT match as it would.
    }
);