Class AbstractPromotionAction

    • Constructor Detail

      • AbstractPromotionAction

        public AbstractPromotionAction()
    • Method Detail

      • apply

        public final boolean apply()
        Apply the action to the order. Do not call AbstractOrder.recalculate() to update the totals as this disposes of all applied discounts and the promotions engine is unable to intercept the recalculate call to reinstate these.
        Returns:
        true if discounts have been applied and calculateTotals needs to be called, false otherwise.
      • apply

        public abstract boolean apply​(SessionContext ctx)
        Apply the action to the order. Do not call AbstractOrder.recalculate() to update the totals as this disposes of all applied discounts and the promotions engine is unable to intercept the recalculate call to reinstate these.
        Parameters:
        ctx - The hybris context
        Returns:
        true if discounts have been applied and calculateTotals needs to be called, false otherwise.
      • undo

        public final boolean undo()
        Unapply the action from the order.
        Returns:
        true if discounts have been removed and calculateTotals needs to be called, false otherwise.
      • undo

        public abstract boolean undo​(SessionContext ctx)
        Unapply the action from the order.
        Parameters:
        ctx - The hybris context
        Returns:
        true if discounts have been removed and calculateTotals needs to be called, false otherwise.
      • isAppliedToOrder

        public final boolean isAppliedToOrder()
        Test if this action is applied to the order. This is different from isMarkedApplied as there are many ways of removing the effect of the action other than calling the undo() method.
        Returns:
        true if the action is applied, false otherwise.
      • isAppliedToOrder

        public abstract boolean isAppliedToOrder​(SessionContext ctx)
        Test if this action is applied to the order.
        Parameters:
        ctx - The hybris context
        Returns:
        true if the action is applied, false otherwise.
      • getValue

        public abstract double getValue​(SessionContext ctx)
        Get the total value of this action. For actions providing a discount this should be a positive value.
        Parameters:
        ctx - The hybris context
        Returns:
        The double value that is the value of this action
      • deepClone

        protected AbstractPromotionAction deepClone​(SessionContext ctx)
        Deep clone this action instance.
        Parameters:
        ctx - The hybris context
        Returns:
        a clone of this instance
      • deepCloneAttributes

        protected void deepCloneAttributes​(SessionContext ctx,
                                           java.util.Map values)
        Called to deep clone attributes of this instance. The values map contains all the attributes defined on this instance. The map will be used to initialse a new instance of the Action that is a clone of this instance. This method can remove, replace or add to the Map of attributes.
        Parameters:
        ctx - The hybris context
        values - The map to write into
      • insertFirstGlobalDiscountValue

        protected static void insertFirstGlobalDiscountValue​(SessionContext ctx,
                                                             AbstractOrder order,
                                                             DiscountValue discountValue)
        Add a global DiscountValue to the Order at the first position in the list of discounts
        Parameters:
        ctx - The hybris context
        order - The order
        discountValue - The discount to add
      • insertFirstOrderEntryDiscountValue

        protected static void insertFirstOrderEntryDiscountValue​(SessionContext ctx,
                                                                 AbstractOrderEntry orderEntry,
                                                                 DiscountValue discountValue)
        Add a DiscountValue to the OrderEntry at the first position in the list of discounts
        Parameters:
        ctx - The hybris context
        orderEntry - The order
        discountValue - The discount to add