use of org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException in project BroadleafCommerce by BroadleafCommerce.
the class FulfillmentPricingServiceImpl method calculateCostForFulfillmentGroup.
@Override
public FulfillmentGroup calculateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup) throws FulfillmentPriceException {
if (fulfillmentGroup.getFulfillmentOption() == null) {
// There is no shipping option yet. We'll simply set the shipping price to zero for now, and continue.
fulfillmentGroup.setRetailFulfillmentPrice(Money.ZERO);
fulfillmentGroup.setFulfillmentPrice(Money.ZERO);
fulfillmentGroup.setSaleFulfillmentPrice(Money.ZERO);
return fulfillmentGroup;
}
for (FulfillmentPricingProvider provider : providers) {
if (provider.canCalculateCostForFulfillmentGroup(fulfillmentGroup, fulfillmentGroup.getFulfillmentOption())) {
return provider.calculateCostForFulfillmentGroup(fulfillmentGroup);
}
}
throw new FulfillmentPriceException("No valid processor was found to calculate the FulfillmentGroup cost with " + "FulfillmentOption id: " + fulfillmentGroup.getFulfillmentOption().getId() + " and name: " + fulfillmentGroup.getFulfillmentOption().getName());
}
use of org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException in project BroadleafCommerce by BroadleafCommerce.
the class FulfillmentPricingServiceImpl method estimateCostForFulfillmentGroup.
@Override
public FulfillmentEstimationResponse estimateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup, Set<FulfillmentOption> options) throws FulfillmentPriceException {
FulfillmentEstimationResponse response = new FulfillmentEstimationResponse();
HashMap<FulfillmentOption, Money> prices = new HashMap<FulfillmentOption, Money>();
response.setFulfillmentOptionPrices(prices);
for (FulfillmentPricingProvider provider : providers) {
// to, then the response from the pricing provider should not include the options that it could not respond to.
try {
FulfillmentEstimationResponse processorResponse = provider.estimateCostForFulfillmentGroup(fulfillmentGroup, options);
if (processorResponse != null && processorResponse.getFulfillmentOptionPrices() != null && processorResponse.getFulfillmentOptionPrices().size() > 0) {
prices.putAll(processorResponse.getFulfillmentOptionPrices());
}
} catch (FulfillmentPriceException e) {
// Shouldn't completely fail the rest of the estimation on a pricing exception. Another provider might still
// be able to respond
String errorMessage = "FulfillmentPriceException thrown when trying to estimate fulfillment costs from ";
errorMessage += provider.getClass().getName();
errorMessage += ". Underlying message was: " + e.getMessage();
LOG.error(errorMessage);
}
}
return response;
}
use of org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException in project BroadleafCommerce by BroadleafCommerce.
the class OnePageCheckoutProcessor method populateFulfillmentOptionsAndEstimationOnModel.
/**
* A helper method to retrieve all fulfillment options for the cart and estimate the cost of applying
* fulfillment options on the first shippable fulfillment group.
*/
protected void populateFulfillmentOptionsAndEstimationOnModel(Map<String, Object> localVars) {
List<FulfillmentOption> fulfillmentOptions = fulfillmentOptionService.readAllFulfillmentOptions();
Order cart = CartState.getCart();
if (!(cart instanceof NullOrderImpl) && cart.getFulfillmentGroups().size() > 0 && hasPopulatedShippingAddress(cart)) {
Set<FulfillmentOption> options = new HashSet<>();
options.addAll(fulfillmentOptions);
FulfillmentEstimationResponse estimateResponse = null;
try {
estimateResponse = fulfillmentPricingService.estimateCostForFulfillmentGroup(fulfillmentGroupService.getFirstShippableFulfillmentGroup(cart), options);
} catch (FulfillmentPriceException e) {
}
localVars.put("estimateResponse", estimateResponse);
}
localVars.put("fulfillmentOptions", fulfillmentOptions);
}
use of org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException in project BroadleafCommerce by BroadleafCommerce.
the class FulfillmentVariableExpression method getFulfillmentEstimateResponse.
public FulfillmentEstimationResponse getFulfillmentEstimateResponse() {
Order cart = CartState.getCart();
if (!isNullOrder(cart) && cart.getFulfillmentGroups().size() > 0 && cartStateService.cartHasPopulatedShippingAddress()) {
try {
List<FulfillmentOption> fulfillmentOptions = fulfillmentOptionService.readAllFulfillmentOptions();
FulfillmentGroup firstShippableFulfillmentGroup = fulfillmentGroupService.getFirstShippableFulfillmentGroup(cart);
return fulfillmentPricingService.estimateCostForFulfillmentGroup(firstShippableFulfillmentGroup, new HashSet<>(fulfillmentOptions));
} catch (FulfillmentPriceException e) {
// do nothing
}
}
return null;
}
Aggregations