@Override public List<OrderMultishipOption> generateOrderMultishipOptions(Order order) { List<OrderMultishipOption> orderMultishipOptions = new ArrayList<OrderMultishipOption>(); for (DiscreteOrderItem discreteOrderItem : order.getDiscreteOrderItems()) { orderMultishipOptions.addAll(createPopulatedOrderMultishipOption(order, discreteOrderItem, discreteOrderItem.getQuantity())); } return orderMultishipOptions; }
protected int populateItemMatchesForSku(List<DiscreteOrderItem> matchingItems, Order order, List<DiscreteOrderItem> unbundledItems, Long skuId) { int skuMatches = 0; for (OrderItem orderItem : order.getOrderItems()) { if (orderItem instanceof DiscreteOrderItem) { DiscreteOrderItem item = (DiscreteOrderItem) orderItem; if (skuId.equals(item.getSku().getId())) { matchingItems.add(item); skuMatches = skuMatches + item.getQuantity(); } } } if (unbundledItems != null) { for (DiscreteOrderItem discreteOrderItem : unbundledItems) { if (skuId.equals(discreteOrderItem.getSku().getId())) { skuMatches = skuMatches + discreteOrderItem.getQuantity(); } } } return skuMatches; }
@Override public int getItemCount() { int count = 0; for (DiscreteOrderItem doi : getDiscreteOrderItems()) { if (doi.getParentOrderItem() == null) { count += doi.getQuantity(); } } for (OrderItem oi : getNonDiscreteOrderItems()) { count += oi.getQuantity(); } return count; }
orderDiscreteOrderItemCounts.put(item.getId(), item.getQuantity());
for(DiscreteOrderItem item : item1.getDiscreteOrderItems()) { if (skuMap.get(item.getSku().getId()) == null) { skuMap.put(item.getSku().getId(), Integer.valueOf(item.getQuantity())); } else { Integer qty = skuMap.get(item.getSku().getId()); skuMap.put(item.getSku().getId(), Integer.valueOf(qty + item.getQuantity())); if (skuMap.containsKey(item.getSku().getId())) { Integer qty = skuMap.get(item.getSku().getId()); Integer newQty = Integer.valueOf(qty - item.getQuantity()); if (newQty.intValue() == 0) { skuMap.remove(item.getSku().getId());
protected int countMaximumApplications(Order order, SkuBundleItem skuBundleItem, Set<Long> processedBundles) { int skuMatches = 0; Long skuId = skuBundleItem.getSku().getId(); for (OrderItem orderItem : order.getOrderItems()) { if (orderItem instanceof DiscreteOrderItem) { DiscreteOrderItem item = (DiscreteOrderItem) orderItem; if (skuId.equals(item.getSku().getId())) { skuMatches = skuMatches + item.getQuantity(); } } else if (orderItem instanceof BundleOrderItem) { BundleOrderItem bundleItem = (BundleOrderItem) orderItem; if (bundleItem.getProductBundle() != null && bundleItem.getProductBundle().getAutoBundle()) { if (! processedBundles.contains(bundleItem.getId())) { for(DiscreteOrderItem discreteItem : bundleItem.getDiscreteOrderItems()) { if (skuId.equals(discreteItem.getSku().getId())) { skuMatches = skuMatches + (discreteItem.getQuantity() * bundleItem.getQuantity()); } } } } } } return skuMatches / skuBundleItem.getQuantity(); }
/** * Takes an order item id and rebuilds the dependant order item tree with the current quantities and options set. * * If the method was invoked via an AJAX call, it will render the "ajax/configure" template. * Otherwise, it will perform a 302 redirect to "/cart/configure" * * @param request * @param response * @param model * @param orderItemId * @throws IOException * @throws AddToCartException * @throws PricingException */ public String reconfigure(HttpServletRequest request, HttpServletResponse response, Model model, Long orderItemId) throws IOException, AddToCartException, PricingException, Exception { DiscreteOrderItem orderItem = (DiscreteOrderItem) orderItemService.readOrderItemById(orderItemId); Long productId = orderItem.getProduct().getId(); Product product = catalogService.findProductById(productId); ConfigurableOrderItemRequest itemRequest = orderItemService.createConfigurableOrderItemRequestFromProduct(product); orderItemService.modifyOrderItemRequest(itemRequest); orderItemService.mergeOrderItemRequest(itemRequest, orderItem); // update quantities and product options itemRequest.setQuantity(orderItem.getQuantity()); model.addAttribute("baseItem", itemRequest); model.addAttribute("isUpdateRequest", Boolean.TRUE); model.addAttribute("originalOrderItem", orderItemId); model.addAttribute(ALL_PRODUCTS_ATTRIBUTE_NAME, orderItemService.findAllProductsInRequest(itemRequest)); return isAjaxRequest(request) ? getConfigureView() : getConfigurePageRedirect(); }
Integer quantity = skuInventoryMap.get(discreteItem.getSku()); if (quantity == null) { quantity = (discreteItem.getQuantity() * bundleItem.getQuantity()); } else { quantity += (discreteItem.getQuantity() * bundleItem.getQuantity());
OrderItemRequestDTO itemRequest = new OrderItemRequestDTO(); itemRequest.setProductId(doi.getProduct().getId()); itemRequest.setQuantity(doi.getQuantity()); itemsToReprice.add(itemRequest); itemsToReset.add(orderItem); OrderItemRequestDTO itemRequest = new OrderItemRequestDTO(); itemRequest.setProductId(doi.getProduct().getId()); itemRequest.setQuantity(doi.getQuantity()); itemsToReprice.add(itemRequest); itemsToReset.add(orderItem);
@Override public Money getRetailPrice() { if (shouldSumItems()) { Money bundleRetailPrice = BroadleafCurrencyUtils.getMoney(getOrder().getCurrency()); for (DiscreteOrderItem discreteOrderItem : discreteOrderItems) { BigDecimal itemRetailPrice = discreteOrderItem.getRetailPrice().getAmount(); BigDecimal quantityPrice = itemRetailPrice.multiply(new BigDecimal(discreteOrderItem.getQuantity())); bundleRetailPrice = bundleRetailPrice.add(BroadleafCurrencyUtils.getMoney(quantityPrice, getOrder().getCurrency())); } for (BundleOrderItemFeePrice fee : getBundleOrderItemFeePrices()) { bundleRetailPrice = bundleRetailPrice.add(fee.getAmount()); } return bundleRetailPrice; } else { return super.getRetailPrice(); } }
/** * Removes all automatic bundles from the order and replaces with DiscreteOrderItems. * * @param order */ private List<DiscreteOrderItem> unBundleItems(Order order) throws PricingException{ List<DiscreteOrderItem> unbundledItems = null; for (OrderItem orderItem : order.getOrderItems()) { if (orderItem instanceof BundleOrderItem) { BundleOrderItem bundleOrderItem = (BundleOrderItem) orderItem; if (bundleOrderItem.getProductBundle() != null && bundleOrderItem.getProductBundle().getAutoBundle()) { if (unbundledItems == null) { unbundledItems = new ArrayList<DiscreteOrderItem>(); } for(DiscreteOrderItem item : bundleOrderItem.getDiscreteOrderItems()) { DiscreteOrderItem newOrderItem = (DiscreteOrderItem) item.clone(); newOrderItem.setQuantity(item.getQuantity() * bundleOrderItem.getQuantity()); newOrderItem.setSkuBundleItem(null); newOrderItem.setBundleOrderItem(null); newOrderItem.updateSaleAndRetailPrices(); newOrderItem.setOrder(order); unbundledItems.add(newOrderItem); } } } } return unbundledItems; }
protected DiscreteOrderItemRequest createDiscreteOrderItemRequest(DiscreteOrderItem discreteOrderItem) { DiscreteOrderItemRequest itemRequest = new DiscreteOrderItemRequest(); itemRequest.setCategory(discreteOrderItem.getCategory()); itemRequest.setProduct(discreteOrderItem.getProduct()); itemRequest.setQuantity(discreteOrderItem.getQuantity()); itemRequest.setSku(discreteOrderItem.getSku()); if (discreteOrderItem.getPersonalMessage() != null) { PersonalMessage personalMessage = orderItemService.createPersonalMessage(); try { BeanUtils.copyProperties(personalMessage, discreteOrderItem.getPersonalMessage()); personalMessage.setId(null); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } itemRequest.setPersonalMessage(personalMessage); } return itemRequest; }
@Override public Money getTaxablePrice() { if (shouldSumItems()) { Money currentBundleTaxablePrice = BroadleafCurrencyUtils.getMoney(getOrder().getCurrency()); for (DiscreteOrderItem discreteOrderItem : discreteOrderItems) { BigDecimal currentItemTaxablePrice = discreteOrderItem.getTaxablePrice().getAmount(); BigDecimal priceWithQuantity = currentItemTaxablePrice.multiply(new BigDecimal(discreteOrderItem.getQuantity())); currentBundleTaxablePrice = currentBundleTaxablePrice.add(BroadleafCurrencyUtils.getMoney(priceWithQuantity, getOrder().getCurrency())); } for (BundleOrderItemFeePrice fee : getBundleOrderItemFeePrices()) { if (fee.isTaxable()) { currentBundleTaxablePrice = currentBundleTaxablePrice.add(fee.getAmount()); } } return currentBundleTaxablePrice; } else { return super.getTaxablePrice(); } }
fulfillmentGroup = addItemToFulfillmentGroup(order, doi, doi.getQuantity() * orderItem.getQuantity(), fulfillmentGroup); order = fulfillmentGroup.getOrder();
@Override public Money getSalePrice() { if (shouldSumItems()) { Money bundleSalePrice = null; if (hasSaleItems()) { bundleSalePrice = BroadleafCurrencyUtils.getMoney(getOrder().getCurrency()); for (DiscreteOrderItem discreteOrderItem : discreteOrderItems) { BigDecimal itemSalePrice = null; if (discreteOrderItem.getSalePrice() != null) { itemSalePrice = discreteOrderItem.getSalePrice().getAmount(); } else { itemSalePrice = discreteOrderItem.getRetailPrice().getAmount(); } BigDecimal quantityPrice = itemSalePrice.multiply(new BigDecimal(discreteOrderItem.getQuantity())); bundleSalePrice = bundleSalePrice.add(BroadleafCurrencyUtils.getMoney(quantityPrice, getOrder().getCurrency())); } for (BundleOrderItemFeePrice fee : getBundleOrderItemFeePrices()) { bundleSalePrice = bundleSalePrice.add(fee.getAmount()); } } return bundleSalePrice; } else { return super.getSalePrice(); } }
assert item.getQuantity() == numOrderItems; assert item.getSku() != null; assert item.getSku().equals(sku); assert fgItem.getQuantity() == item.getQuantity();
protected boolean orderItemsSemanticallyEqual(DiscreteOrderItem one, DiscreteOrderItem two) { if ((one == null && two != null) || (one != null && two == null)) { return false; } if (!one.getClass().equals(two.getClass())) { return false; } if (!one.getSku().getId().equals(two.getSku().getId())) { return false; } if (one.getQuantity() != two.getQuantity()) { return false; } if (((one.getProduct() == null && two.getProduct() != null) || (one.getProduct() != null && two.getProduct() == null)) && !one.getProduct().getId().equals(two.getProduct().getId())) { return false; } if (((one.getCategory() == null && two.getCategory() != null) || (one.getCategory() != null && two.getCategory() == null)) && !one.getCategory().getId().equals(two.getCategory().getId())) { return false; } return true; }
FulfillmentGroupItem newFulfillmentGroupItem = fulfillmentGroupItem.clone(); newFulfillmentGroupItem.setOrderItem(newOrderItem); newFulfillmentGroupItem.setQuantity(newOrderItem.getQuantity()); newFulfillmentGroupItem = fulfillmentGroupItemDao.save(newFulfillmentGroupItem); FulfillmentGroupItem newFulfillmentGroupItem = fulfillmentGroupItem.clone(); newFulfillmentGroupItem.setOrderItem(discreteOrderItem); newFulfillmentGroupItem.setQuantity(discreteOrderItem.getQuantity());
assert item.getQuantity() == 2; // item-was merged with prior item. assert fgItem.getQuantity() == item.getQuantity(); assert item2.getSku() != null; assert item2.getSku().equals(sku); assert item2.getQuantity() == 1; // item-was not auto-merged with prior items. order = orderService.findOrderById(orderId); assert(order.getOrderItems().size()==3);
.quantity(discreteOrderItem.getQuantity()) .productName(discreteOrderItem.getName()) .productHref(linkTo(methodOn(ProductController.class)