@Override public void preValidateUpdateQuantityOperation(Order cart, OrderItemRequestDTO dto) { ExtensionResultHolder erh = new ExtensionResultHolder(); extensionManager.getProxy().preValidateUpdateQuantityOperation(cart, dto, erh); if (erh.getThrowable() instanceof IllegalCartOperationException) { throw ((IllegalCartOperationException) erh.getThrowable()); } else if (erh.getThrowable() != null) { throw new RuntimeException(erh.getThrowable()); } }
@Override public void preValidateCartOperation(Order cart) { ExtensionResultHolder erh = new ExtensionResultHolder(); extensionManager.getProxy().preValidateCartOperation(cart, erh); if (erh.getThrowable() instanceof IllegalCartOperationException) { throw ((IllegalCartOperationException) erh.getThrowable()); } else if (erh.getThrowable() != null) { throw new RuntimeException(erh.getThrowable()); } }
@Override @Transactional("blTransactionManager") public Order addOfferCodes(Order order, List<OfferCode> offerCodes, boolean priceOrder) throws PricingException, OfferException { preValidateCartOperation(order); Set<Offer> addedOffers = offerService.getUniqueOffersFromOrder(order); if (extensionManager != null) { extensionManager.getProxy().addOfferCodes(order, offerCodes, priceOrder); } if (offerCodes != null && !offerCodes.isEmpty()) { for (OfferCode offerCode : offerCodes) { if (order.getAddedOfferCodes().contains(offerCode) || addedOffers.contains(offerCode.getOffer())) { throw new OfferAlreadyAddedException("The offer has already been added."); } else if (!offerService.verifyMaxCustomerUsageThreshold(order, offerCode)) { throw new OfferMaxUseExceededException("The customer has used this offer code more than the maximum allowed number of times."); } else if (!offerCode.isActive() || !offerCode.getOffer().isActive()) { throw new OfferExpiredException("The offer has expired."); } order.getAddedOfferCodes().add(offerCode); } order = save(order, priceOrder); } return order; }
@Override @Transactional("blTransactionManager") public Order createNamedOrderForCustomer(String name, Customer customer) { Order namedOrder = orderDao.create(); namedOrder.setCustomer(customer); namedOrder.setName(name); namedOrder.setStatus(OrderStatus.NAMED); if (extensionManager != null) { extensionManager.getProxy().attachAdditionalDataToNewNamedCart(customer, namedOrder); } if (BroadleafRequestContext.getBroadleafRequestContext() != null) { namedOrder.setLocale(BroadleafRequestContext.getBroadleafRequestContext().getLocale()); } return persist(namedOrder); // No need to price here }
extensionManager.getProxy().attachAdditionalDataToOrder(order, priceOrder);