Class NullOrderImpl

java.lang.Object
org.broadleafcommerce.core.order.domain.NullOrderImpl
All Implemented Interfaces:
Serializable, org.broadleafcommerce.common.copy.MultiTenantCloneable<Order>, Order

public class NullOrderImpl extends Object implements Order
NullOrderImpl is a class that represents an unmodifiable, empty order. This class is used as the default order for a customer. It is a shared class between customers, and serves as a placeholder order until an item is initially added to cart, at which point a real Order gets created. This prevents creating individual orders for customers that are just browsing the site.
Author:
apazzolini
See Also:
  • Constructor Details

    • NullOrderImpl

      public NullOrderImpl()
  • Method Details

    • getId

      public Long getId()
      Specified by:
      getId in interface Order
    • setId

      public void setId(Long id)
      Specified by:
      setId in interface Order
    • getName

      public String getName()
      Description copied from interface: Order
      Gets the name of the order, mainly in order to support wishlists.
      Specified by:
      getName in interface Order
      Returns:
      the name of the order
    • setName

      public void setName(String name)
      Description copied from interface: Order
      Sets the name of the order in the context of a wishlist. In this fashion, a Customer can have multiple wishlists like "Christmas" or "Gaming Computer" etc.
      Specified by:
      setName in interface Order
    • getAuditable

      public org.broadleafcommerce.common.audit.Auditable getAuditable()
      Description copied from interface: Order
      Gets the auditable associated with this Order instance which tracks changes made to this Order (creation/update)
      Specified by:
      getAuditable in interface Order
      Returns:
    • setAuditable

      public void setAuditable(org.broadleafcommerce.common.audit.Auditable auditable)
      Specified by:
      setAuditable in interface Order
    • getSubTotal

      public org.broadleafcommerce.common.money.Money getSubTotal()
      Description copied from interface: Order
      Returns the subtotal price for the order. The subtotal price is the price of all order items with item offers applied. The subtotal does not take into account the order promotions, shipping costs or any taxes that apply to this order.
      Specified by:
      getSubTotal in interface Order
      Returns:
      the total item price with offers applied
    • setSubTotal

      public void setSubTotal(org.broadleafcommerce.common.money.Money subTotal)
      Description copied from interface: Order
      Sets the subtotal price for the order. The subtotal price is the price of all order items with item offers applied. The subtotal does not take into account the order offers or any taxes that apply to this order.
      Specified by:
      setSubTotal in interface Order
    • assignOrderItemsFinalPrice

      public void assignOrderItemsFinalPrice()
      Description copied from interface: Order
      Assigns a final price to all the order items
      Specified by:
      assignOrderItemsFinalPrice in interface Order
    • getTotal

      public org.broadleafcommerce.common.money.Money getTotal()
      Description copied from interface: Order
      The grand total of this Order which includes all shipping costs and taxes, as well as any adjustments from promotions.
      Specified by:
      getTotal in interface Order
      Returns:
      the grand total price of this Order
    • setTotal

      public void setTotal(org.broadleafcommerce.common.money.Money orderTotal)
      Description copied from interface: Order
      Used in TotalActivity to set the grand total of this Order. This includes the prices of all of the OrderItems as well as any taxes, fees, shipping and adjustments for all 3.
      Specified by:
      setTotal in interface Order
      Parameters:
      orderTotal - the total cost of this Order
    • getTotalAfterAppliedPayments

      public org.broadleafcommerce.common.money.Money getTotalAfterAppliedPayments()
      Description copied from interface: Order
      This is getTotal() minus the sum of all the OrderPayment already applied to this order. An applied payment can be of any type that does NOT have to be the final payment on the order. In this implementation, THIRD_PARTY_ACCOUNT and CREDIT_CARD type payments must be sent to the gateway as the last step in the checkout process and will NOT be considered an applied payment. Since, these types have to be the last payment applied, AdjustOrderPaymentsActivity will adjust the value of the payment based on what has already been applied to the order.

      For example, Gift Cards and Account Credit can be applied BEFORE a final payment (e.g. most Credit Card Gateways) is applied. This OrderPayment does not necessarily have to be confirmed (i.e. captured), as it will happen on callback of the final payment and will be captured in the checkout workflow.

      This method is used in cases where you need to determine the final amount to send to the gateways of what is left on the order minus what has already been applied.

      Specified by:
      getTotalAfterAppliedPayments in interface Order
      Returns:
      the total price minus any payments that have been applied to this order already.
    • getCustomer

      public org.broadleafcommerce.profile.core.domain.Customer getCustomer()
      Description copied from interface: Order
      Gets the Customer for this Order.
      Specified by:
      getCustomer in interface Order
      Returns:
    • setCustomer

      public void setCustomer(org.broadleafcommerce.profile.core.domain.Customer customer)
      Description copied from interface: Order
      Sets the associated Customer for this Order.
      Specified by:
      setCustomer in interface Order
    • getStatus

      public OrderStatus getStatus()
      Description copied from interface: Order
      Gets the status of the Order.
      Specified by:
      getStatus in interface Order
      Returns:
    • setStatus

      public void setStatus(OrderStatus status)
      Description copied from interface: Order
      Sets the status of the Order
      Specified by:
      setStatus in interface Order
    • getOrderItems

      public List<OrderItem> getOrderItems()
      Description copied from interface: Order
      Gets all the OrderItems included in this Order
      Specified by:
      getOrderItems in interface Order
      Returns:
    • setOrderItems

      public void setOrderItems(List<OrderItem> orderItems)
      Specified by:
      setOrderItems in interface Order
    • addOrderItem

      public void addOrderItem(OrderItem orderItem)
      Description copied from interface: Order
      Adds an OrderItem to the list of OrderItems already associated with this Order
      Specified by:
      addOrderItem in interface Order
      Parameters:
      orderItem - the OrderItem to add to this Order
    • getFulfillmentGroups

      public List<FulfillmentGroup> getFulfillmentGroups()
      Description copied from interface: Order
      Gets the FulfillmentGroups associated with this Order. An Order can have many FulfillmentGroups associated with it in order to support multi-address (and multi-type) shipping.
      Specified by:
      getFulfillmentGroups in interface Order
      Returns:
      the FulfillmentGroups associated with this Order
    • setFulfillmentGroups

      public void setFulfillmentGroups(List<FulfillmentGroup> fulfillmentGroups)
      Specified by:
      setFulfillmentGroups in interface Order
    • getCandidateOrderOffers

      public List<CandidateOrderOffer> getCandidateOrderOffers()
      Description copied from interface: Order
      Gets the Offers that could potentially apply to this Order. Used in the promotion engine.
      Specified by:
      getCandidateOrderOffers in interface Order
      Returns:
    • setCandidateOrderOffers

      public void setCandidateOrderOffers(List<CandidateOrderOffer> candidateOrderOffers)
      Description copied from interface: Order
      Sets the Offers that could potentially apply to this Order
      Specified by:
      setCandidateOrderOffers in interface Order
    • getSubmitDate

      public Date getSubmitDate()
      Description copied from interface: Order
      Gets the date that this Order was submitted. Note that if this date is non-null, then the following should also be true:
      Specified by:
      getSubmitDate in interface Order
      Returns:
    • setSubmitDate

      public void setSubmitDate(Date submitDate)
      Description copied from interface: Order
      Set the date that this Order was submitted. Used in the blCheckoutWorkflow as the last step after everything else has been completed (payments charged, integration systems notified, etc).
      Specified by:
      setSubmitDate in interface Order
      Parameters:
      submitDate - the date that this Order was submitted.
    • getTotalTax

      public org.broadleafcommerce.common.money.Money getTotalTax()
      Description copied from interface: Order
      Gets the total tax for this order, which is the sum of the taxes on all fulfillment groups. This total is calculated in the TotalActivity stage of the pricing workflow.
      Specified by:
      getTotalTax in interface Order
      Returns:
      the total tax for the order
    • setTotalTax

      public void setTotalTax(org.broadleafcommerce.common.money.Money totalTax)
      Description copied from interface: Order
      Sets the total tax of this order, which is the sum of the taxes on all fulfillment groups. This total should only be set during the TotalActivity stage of the pricing workflow.
      Specified by:
      setTotalTax in interface Order
      Parameters:
      totalTax - the total tax for this order
    • getTotalShipping

      public org.broadleafcommerce.common.money.Money getTotalShipping()
      Specified by:
      getTotalShipping in interface Order
    • setTotalShipping

      public void setTotalShipping(org.broadleafcommerce.common.money.Money totalShipping)
      Specified by:
      setTotalShipping in interface Order
    • getPayments

      public List<OrderPayment> getPayments()
      Description copied from interface: Order
      Gets all the OrderPayments associated with this Order. An Order can have many OrderPayments associated with it to support things like paying with multiple cards or perhaps paying some of this Order with a gift card and some with a credit card.
      Specified by:
      getPayments in interface Order
      Returns:
      the OrderPayments associated with this Order.
    • setPayments

      public void setPayments(List<OrderPayment> paymentInfos)
      Description copied from interface: Order
      Sets the various payment types associated with this Order
      Specified by:
      setPayments in interface Order
    • hasCategoryItem

      public boolean hasCategoryItem(String categoryName)
      Description copied from interface: Order
      Determines if this Order has an item in the given category.
      Specified by:
      hasCategoryItem in interface Order
      Parameters:
      categoryName - the Category.getName() to check
      Returns:
      true if at least one OrderItem is in the given category, false otherwise.
    • getOrderAdjustments

      public List<OrderAdjustment> getOrderAdjustments()
      Description copied from interface: Order
      Returns a unmodifiable List of OrderAdjustment. To modify the List of OrderAdjustment, please use the addOrderAdjustments or removeAllOrderAdjustments methods.
      Specified by:
      getOrderAdjustments in interface Order
      Returns:
      a unmodifiable List of OrderItemAdjustment
    • getFutureCreditOrderAdjustments

      public List<OrderAdjustment> getFutureCreditOrderAdjustments()
      Description copied from interface: Order
      Returns a List of OrderAdjustment originating from FUTURE_CREDIT Offers.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getFutureCreditOrderAdjustments in interface Order
      Returns:
      a List of OrderItemAdjustment
    • getAllFutureCreditAdjustments

      public List<Adjustment> getAllFutureCreditAdjustments()
      Description copied from interface: Order
      Returns a List of Adjustment originating from FUTURE_CREDIT Offers. This is obtained from the Order, OrderItem, and FulfillmentGroup levels.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getAllFutureCreditAdjustments in interface Order
      Returns:
      a List of OrderItemAdjustment
    • getDiscreteOrderItems

      public List<DiscreteOrderItem> getDiscreteOrderItems()
      Description copied from interface: Order
      Returns all of the OrderItems in this Order that are an instanceof DiscreteOrderItem. This will also go into each BundleOrderItem (if there are any) and return all of the BundleOrderItem.getDiscreteOrderItems() from each of those as well.
      Specified by:
      getDiscreteOrderItems in interface Order
      Returns:
    • getNonDiscreteOrderItems

      public List<OrderItem> getNonDiscreteOrderItems()
      Description copied from interface: Order
      Returns all of the OrderItems in this Order that are an instanceof OrderItemImpl. This will return all of the order items that do not have any reference to a product or sku
      Specified by:
      getNonDiscreteOrderItems in interface Order
      Returns:
    • containsSku

      public boolean containsSku(Sku sku)
      Description copied from interface: Order
      Checks the DiscreteOrderItems in the cart and returns whether or not the given SKU was found. The equality of the SKUs is based on the .equals() method in SkuImpl. This includes checking the DiscreteOrderItems from {link BundleOrderItem.getDiscreteOrderItems()
      Specified by:
      containsSku in interface Order
      Parameters:
      sku - The sku to check for
      Returns:
      whether or not the given SKU exists in the cart
    • getAddedOfferCodes

      public List<OfferCode> getAddedOfferCodes()
      Specified by:
      getAddedOfferCodes in interface Order
    • getFulfillmentStatus

      public String getFulfillmentStatus()
      Specified by:
      getFulfillmentStatus in interface Order
    • getOrderNumber

      public String getOrderNumber()
      Description copied from interface: Order
      The unique number associated with this Order. Generally preferred to use instead of just using Order.getId() since that exposes unwanted information about your database.
      Specified by:
      getOrderNumber in interface Order
      Returns:
      the unique order number for this Order
    • setOrderNumber

      public void setOrderNumber(String orderNumber)
      Description copied from interface: Order
      Set the unique order number for this Order
      Specified by:
      setOrderNumber in interface Order
    • getEmailAddress

      public String getEmailAddress()
      Specified by:
      getEmailAddress in interface Order
    • setEmailAddress

      public void setEmailAddress(String emailAddress)
      Specified by:
      setEmailAddress in interface Order
    • getAdditionalOfferInformation

      public Map<Offer,OfferInfo> getAdditionalOfferInformation()
      Specified by:
      getAdditionalOfferInformation in interface Order
    • setAdditionalOfferInformation

      public void setAdditionalOfferInformation(Map<Offer,OfferInfo> additionalOfferInformation)
      Specified by:
      setAdditionalOfferInformation in interface Order
    • getItemAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getItemAdjustmentsValue()
      Description copied from interface: Order
      Returns the discount value of all the applied item offers for this order. This value is already deducted from the order subTotal.
      Specified by:
      getItemAdjustmentsValue in interface Order
      Returns:
      the discount value of all the applied item offers for this order
    • getFutureCreditItemAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getFutureCreditItemAdjustmentsValue()
      Description copied from interface: Order
      Returns the discount value of the applied future credit item offers for this order.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getFutureCreditItemAdjustmentsValue in interface Order
      Returns:
      the discount value of the applied item offers for this order
    • getFutureCreditFulfillmentGroupAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getFutureCreditFulfillmentGroupAdjustmentsValue()
      Description copied from interface: Order
      Returns the discount value of the applied future credit fulfillment offers for this order.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getFutureCreditFulfillmentGroupAdjustmentsValue in interface Order
      Returns:
      the discount value of the applied future credit fulfillment offers for this order.
    • getOrderAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getOrderAdjustmentsValue()
      Description copied from interface: Order
      Returns the discount value of all the applied order offers. The value returned from this method should be subtracted from the getSubTotal() to get the order price with all item and order offers applied.
      Specified by:
      getOrderAdjustmentsValue in interface Order
      Returns:
      the discount value of all applied order offers.
    • getFutureCreditOrderAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getFutureCreditOrderAdjustmentsValue()
      Description copied from interface: Order
      Returns the discount value of the applied future credit order offers originating.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getFutureCreditOrderAdjustmentsValue in interface Order
      Returns:
      the discount value of applied order offers.
    • getTotalAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getTotalAdjustmentsValue()
      Description copied from interface: Order
      Returns the total discount value for all applied item and order offers in the order. The return value should not be used with getSubTotal() to calculate the final price, since getSubTotal() already takes into account the applied item offers.
      Specified by:
      getTotalAdjustmentsValue in interface Order
      Returns:
      the total discount of all applied item and order offers
    • getTotalFutureCreditAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getTotalFutureCreditAdjustmentsValue()
      Description copied from interface: Order
      Returns the total discount value for applied item, order, and fulfillment offers in the order originating from FUTURE_CREDIT Offers. This should be used to credit the customer after the order has been placed.

      See Offer.getAdjustmentType() for more info on future credit

      Specified by:
      getTotalFutureCreditAdjustmentsValue in interface Order
      Returns:
      the total discount of applied item, order, and fulfillment offers
    • updatePrices

      public boolean updatePrices()
      Description copied from interface: Order
      Updates all of the prices of the OrderItems in this Order
      Specified by:
      updatePrices in interface Order
      Returns:
      true if at least 1 OrderItem returned true from OrderItem#updatePrices, false otherwise.
    • getFulfillmentGroupAdjustmentsValue

      public org.broadleafcommerce.common.money.Money getFulfillmentGroupAdjustmentsValue()
      Specified by:
      getFulfillmentGroupAdjustmentsValue in interface Order
    • addOfferCode

      public void addOfferCode(OfferCode addedOfferCode)
      Specified by:
      addOfferCode in interface Order
    • addAddedOfferCode

      public void addAddedOfferCode(OfferCode offerCode)
      Specified by:
      addAddedOfferCode in interface Order
    • getOrderAttributes

      public Map<String,OrderAttribute> getOrderAttributes()
      Description copied from interface: Order
      A list of arbitrary attributes added to this order.
      Specified by:
      getOrderAttributes in interface Order
    • setOrderAttributes

      public void setOrderAttributes(Map<String,OrderAttribute> orderAttributes)
      Description copied from interface: Order
      Sets the map of order attributes.
      Specified by:
      setOrderAttributes in interface Order
    • getItemCount

      public int getItemCount()
      Description copied from interface: Order
      This method returns the total number of items in this order. It iterates through all of the discrete order items and sums up the quantity. This method is useful for display to the customer the current number of "physical" items in the cart
      Specified by:
      getItemCount in interface Order
      Returns:
      the number of items in the order
    • getCurrency

      public org.broadleafcommerce.common.currency.domain.BroadleafCurrency getCurrency()
      Description copied from interface: Order
      The currency that the Order is priced in. Note that this is only on Order since all of the other entities that are related (like FulfillmentGroup and OrderItem have a link back to here. This also has the side effect that an Order can only be priced in a single currency.
      Specified by:
      getCurrency in interface Order
      Returns:
    • setCurrency

      public void setCurrency(org.broadleafcommerce.common.currency.domain.BroadleafCurrency currency)
      Description copied from interface: Order
      Set the currency that the Order is priced in.
      Specified by:
      setCurrency in interface Order
    • getLocale

      public org.broadleafcommerce.common.locale.domain.Locale getLocale()
      Specified by:
      getLocale in interface Order
    • setLocale

      public void setLocale(org.broadleafcommerce.common.locale.domain.Locale locale)
      Specified by:
      setLocale in interface Order
    • calculateSubTotal

      public org.broadleafcommerce.common.money.Money calculateSubTotal()
      Description copied from interface: Order
      Returns the sum of the item totals.
      Specified by:
      calculateSubTotal in interface Order
      Returns:
    • getTotalFulfillmentCharges

      public org.broadleafcommerce.common.money.Money getTotalFulfillmentCharges()
      Description copied from interface: Order
      Gets the total fulfillment costs that should be charged for this Order. This value should be equivalent to the summation of FulfillmentGroup.getTotal() for each FulfillmentGroup associated with this Order
      Specified by:
      getTotalFulfillmentCharges in interface Order
      Returns:
      the total fulfillment cost of this Order
    • setTotalFulfillmentCharges

      public void setTotalFulfillmentCharges(org.broadleafcommerce.common.money.Money totalFulfillmentCharges)
      Description copied from interface: Order
      Set the total fulfillment cost of this Order. Used in the FulfillmentGroupPricingActivity after the cost of each FulfillmentGroup has been calculated.
      Specified by:
      setTotalFulfillmentCharges in interface Order
    • finalizeItemPrices

      public boolean finalizeItemPrices()
      Description copied from interface: Order
      Updates the averagePriceField for all order items.
      Specified by:
      finalizeItemPrices in interface Order
      Returns:
    • getHasOrderAdjustments

      public boolean getHasOrderAdjustments()
      Description copied from interface: Order
      Returns true if this item has order adjustments.
      Specified by:
      getHasOrderAdjustments in interface Order
      Returns:
    • getOrderMessages

      public List<ActivityMessageDTO> getOrderMessages()
      Specified by:
      getOrderMessages in interface Order
    • setOrderMessages

      public void setOrderMessages(List<ActivityMessageDTO> orderMessages)
      Specified by:
      setOrderMessages in interface Order
    • getTaxOverride

      public Boolean getTaxOverride()
      Specified by:
      getTaxOverride in interface Order
      Returns:
      whether or not to override the tax calculation
    • setTaxOverride

      public void setTaxOverride(Boolean taxOverride)
      Description copied from interface: Order
      Sets whether or not to override the tax calculation
      Specified by:
      setTaxOverride in interface Order
    • createOrRetrieveCopyInstance

      public <G extends Order> org.broadleafcommerce.common.copy.CreateResponse<G> createOrRetrieveCopyInstance(org.broadleafcommerce.common.copy.MultiTenantCopyContext context) throws CloneNotSupportedException
      Specified by:
      createOrRetrieveCopyInstance in interface org.broadleafcommerce.common.copy.MultiTenantCloneable<Order>
      Throws:
      CloneNotSupportedException
    • getBroadleafAccountId

      public Long getBroadleafAccountId()
      Description copied from interface: Order
      This method returns null from the default implementation. The Broadleaf Account module weaves in an implementation that returns the account id associated with the order.

      This method is used by the Broadleaf Offer engine to allow offers to be restricted so that a given account can only use the offer a max number of times.

      Specified by:
      getBroadleafAccountId in interface Order
    • hasValidationErrors

      public Boolean hasValidationErrors()
      Specified by:
      hasValidationErrors in interface Order