Broadleaf Microservices
  • v1.0.0-latest-prod

Release Notes for 1.8.12-GA

Requirements

  • JDK 11 is required for Broadleaf release trains 1.7.0-GA, and beyond.

  • JDK 17 is supported for Broadleaf release trains 1.8.1-GA, and beyond.

New Features & Notable Changes

  • Updated DefaultPaymentTransactionExecutionService to avoid attempting to execute transactions if the PaymentSummary#amount is less than or equal to 0.

  • Updated the cart resolution flow to optionally avoid executing the stale cart repricing logic. The method parameter flag allowRepriceDueToStaleCartPrices controls whether or not to reprice and can be updated to change the default behavior.

    • By default, this value is set to false for situations where the cart is resolved just so that it can be declared as a named cart. In these situations, there’s no need to reprice the cart. Instead, the repricing will occur when the cart once again becomes the user’s active cart.

  • Updated several DefaultCheckoutWorkflow methods' access modifiers from private to protected

  • Improved payment exceptions logging & tracking within DefaultCheckoutWorkflow

    • Added payment error messages to logging of CheckoutWorkflowActivityException

    • Updated errors in PaymentTransactionExecutionActivity to provide the original exception when creating a CheckoutWorkflowActivityException

  • Introduced the ability to declare the serialization value with add-to-cart requests, so that serialized inventory availability check & reservation request are correctly made within CartOps.

  • Added support to check for existing reservations when checking inventory availability for the same item and user.

    • Added a field for a reference number for a previous reservation to SkuInventoryAvailabilityRequest and updated DefaultInventoryAvailabilityService to set it.

    • Added an attributes map for extensibility to SkuInventoryAvailabilityRequest

Note
For example, if a SKU has total of 2 available and 1 is reserved for userA, and userA checks inventory availability for a quantity of 2 for the same SKU. The existing soft reservation is excluded from the check in this case, effectively making this request to check for an additional quantity of 1 to be available. However, if userB sends the same request to check availability for a quantity of 2 for the same SKU, it would return unavailable since only 1 is available as the other one is reserved for userA.

Bugs Fixed

  • Fixed NullPointerException with DefaultFulfillmentPricingService when changing to an address without a fulfillment option configuration & repricing cart with currency change

  • Added validation to prevent checkout with the stale or unavailable priced fulfillment options

    • If the priced fulfillment option is added to the fulfillment group, and after that, the cart is changed so that the previously selected option is no longer available, then a new option should be selected. The added validation blocks the checkout if the fulfillment option is not updated.

  • Fixed bug where CSR price override doesn’t work when there are multiple items in cart

  • Added null check within DefaultCheckoutService#clearAdjustmentFields(…​) in case adj.getOfferRef() returns null.

  • Fixed application of Offer’s "Apply to Sale Price?" field such that if true, then the better of either default price + offer adjustment or the sale price wins out.

    • This fix includes removing sale prices from the cart item’s sku price info if the default price + offer adjustment produces the better price.

  • Fixed tax-related currency mismatch issues when a cart’s currency changes by ensuring that the following fields are cleared when preparing for cart pricing:

    • CartPricing#includedTaxAmount

    • CartPricing#taxIncludedType

    • FulfillmentItem#fulfillmentItemTaxDetails

  • Fixed checkout validation of CartItem-level offer/campaign code usages via the CartOfferValidationActivity by also sending the offer ids gathered from item-level adjustments to OfferProvider #validateOfferAndOfferCodeUsages(…​).

  • Fixed NullPointerException when adding a bundle type product to cart

  • Fixed PriceInfo from losing data due to always creating a new PriceInfo

  • Fixed issue where soft reservation request not get sent when using COMBINE merging type

  • Fixed bug where the inventory soft reservation is not updated when updating the quantity of an item

  • Fixed bug where the inventory soft reservation is not released when removing an item from the cart

Upgrade Guide

Configuration Properties

Added Properties

  • broadleaf.cartoperation.inventory-provider.release-reservation-uri

    • Description: URI for releasing inventory reservations

    • Default Value: /shop-sku-inventory/release-reservation