Fixed an issue where the fulfillment (shipping) charges of a fulfillment group would always be split in half when creating a split fulfillment.
This was caused by the splitting service making assumptions on the OrderFulfillmentItem domain prior to the introduction of the Broadleaf FulfillmentServices.
The DefaultFulfillmentSplittingService now derives the shipping charges of a split fulfillment from the new proratedFulfillmentCharge field of OrderFulfillmentItem.
Fixed the issue where a failed attempt to consume CheckoutCompletionEvents via the CheckoutCompletionListener could produce duplicates of the order’s fulfillments when message processing is re-attempted. Instead, we now check if the fulfillments already exist, prior to creating them.
Fixed a check for taxes in InclusiveTaxHelper which would only determine if a tax was a fulfillment tax if the fullfillment tax name was exactly FULFILLMENT/SHIPPING/HANDLING. It now checks if it starts with the fulfillment tax name.
Set the OrderFulfillmentItem.merchandiseSubtotal from the OrderItem.subtotal when building the OrderFulfillmentItem.
Before it was calculated as unitPrice * quantity. This may produce a slightly inaccurate result if the unitPrice was adjusted, for example, by subtracting a percentage of the calculated included tax. In this case, the precision of the MonetaryAmount when using division (e.g. the unit price taking 1/3rd of the included tax) can cause the calculated unit price to be off by a penny when rounding.
Note: If broadleaf.orderoperation.ordergeneration.remove-vat-from-item-price = true, then OrderItem.subtotal will already have the included merchandise tax subtracted from it before the OrderFulfillmentItem.merchandiseSubtotal is declared.
Fixed an issue with rounding of the OrderFulfillmentItem#proratedFulfillmentCharge after split.
Add new endpoints to read the Orders with additional data for authorized and anonymous customers - GET /api/order-operations/order-info/{customerId} and GET /api/order-operations/order-info/anonymous?email={customerEmail} accordingly.