@Override public OrderItem clone() { BundleOrderItemImpl orderItem = (BundleOrderItemImpl) super.clone(); if (discreteOrderItems != null) { for (DiscreteOrderItem discreteOrderItem : discreteOrderItems) { DiscreteOrderItem temp = (DiscreteOrderItem) discreteOrderItem.clone(); temp.setBundleOrderItem(orderItem); orderItem.getDiscreteOrderItems().add(temp); } } if (bundleOrderItemFeePrices != null) { for (BundleOrderItemFeePrice feePrice : bundleOrderItemFeePrices) { BundleOrderItemFeePrice cloneFeePrice = feePrice.clone(); cloneFeePrice.setBundleOrderItem(orderItem); orderItem.getBundleOrderItemFeePrices().add(cloneFeePrice); } } orderItem.setBaseRetailPrice(convertToMoney(baseRetailPrice)); orderItem.setBaseSalePrice(convertToMoney(baseSalePrice)); orderItem.setSku(sku); orderItem.setProductBundle(productBundle); return orderItem; }
/** * 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; }
if (discreteOrderItem.getSku().getActiveStartDate() != null) { if (discreteOrderItem.getSku().isActive(discreteOrderItem.getProduct(), orderItem.getCategory())) { OrderItem newItem = addOrderItemToOrder(customerCart, discreteOrderItem.clone(), false); mergeCartResponse.getAddedItems().add(newItem); oldNewItemMap.put(orderItem, newItem); OrderItem newItem = addOrderItemToOrder(customerCart, discreteOrderItem.clone(), false); mergeCartResponse.getAddedItems().add(newItem); oldNewItemMap.put(orderItem, newItem);
DiscreteOrderItem newSkuBundleItem = (DiscreteOrderItem) baseItem.clone(); newSkuBundleItem.setSkuBundleItem(skuBundleItem); newSkuBundleItem.setBundleOrderItem(bundleOrderItem); DiscreteOrderItem newOrderItem = (DiscreteOrderItem) baseItem.clone(); newOrderItem.setBundleOrderItem(null); newOrderItem.setSkuBundleItem(null);