@Override public boolean containsSku(Sku sku) { for (OrderItem orderItem : getOrderItems()) { if (orderItem instanceof DiscreteOrderItem) { DiscreteOrderItem discreteOrderItem = (DiscreteOrderItem) orderItem; if (discreteOrderItem.getSku() != null && discreteOrderItem.getSku().equals(sku)) { return true; } } else if (orderItem instanceof BundleOrderItem) { BundleOrderItem bundleOrderItem = (BundleOrderItem) orderItem; if (bundleOrderItem.getSku() != null && bundleOrderItem.getSku().equals(sku)) { return true; } } } return false; }
@Override public OrderItem findLastMatchingItem(Order order, Long skuId, Long productId) { if (order.getOrderItems() != null) { for (int i=(order.getOrderItems().size()-1); i >= 0; i--) { OrderItem currentItem = (order.getOrderItems().get(i)); if (currentItem instanceof DiscreteOrderItem) { DiscreteOrderItem discreteItem = (DiscreteOrderItem) currentItem; if (skuId != null) { if (discreteItem.getSku() != null && skuId.equals(discreteItem.getSku().getId())) { return discreteItem; } } else if (productId != null && discreteItem.getProduct() != null && productId.equals(discreteItem.getProduct().getId())) { return discreteItem; } } else if (currentItem instanceof BundleOrderItem) { BundleOrderItem bundleItem = (BundleOrderItem) currentItem; if (skuId != null) { if (bundleItem.getSku() != null && skuId.equals(bundleItem.getSku().getId())) { return bundleItem; } } else if (productId != null && bundleItem.getProduct() != null && productId.equals(bundleItem.getProduct().getId())) { return bundleItem; } } } } return null; }
protected void fixTranslations(Order cart) { for (DiscreteOrderItem orderItem : cart.getDiscreteOrderItems()) { Sku sku = orderItem.getSku(); translateOrderItem(orderItem, sku); } for (OrderItem orderItem : cart.getOrderItems()) { if (orderItem instanceof BundleOrderItem) { BundleOrderItem bundleItem = (BundleOrderItem) orderItem; Sku sku = bundleItem.getSku(); translateOrderItem(orderItem, sku); } } }
protected OrderItem findMatchingItem(Order order, OrderItemRequestDTO itemToFind) { if (order == null) { return null; } for (OrderItem currentItem : order.getOrderItems()) { if (currentItem instanceof DiscreteOrderItem) { DiscreteOrderItem discreteItem = (DiscreteOrderItem) currentItem; if (itemMatches(discreteItem.getSku(), discreteItem.getProduct(), discreteItem.getOrderItemAttributes(), itemToFind)) { return discreteItem; } } else if (currentItem instanceof BundleOrderItem) { BundleOrderItem bundleItem = (BundleOrderItem) currentItem; if (itemMatches(bundleItem.getSku(), bundleItem.getProduct(), null, itemToFind)) { return bundleItem; } } } return null; }
sku = ((DiscreteOrderItem)fulfillmentGroupItem.getOrderItem()).getSku(); } else if (fulfillmentGroupItem.getOrderItem() instanceof BundleOrderItem) { sku = ((BundleOrderItem)fulfillmentGroupItem.getOrderItem()).getSku();
sku = ((DiscreteOrderItem) orderItem).getSku(); } else if (orderItem instanceof BundleOrderItem) { sku = ((BundleOrderItem) orderItem).getSku(); } else { LOG.warn("Could not check availability; did not recognize passed-in item " + orderItem.getClass().getName());
List<SkuFee> fees = null; if (item.getOrderItem() instanceof BundleOrderItem) { fees = ((BundleOrderItem)item.getOrderItem()).getSku().getFees(); } else if (item.getOrderItem() instanceof DiscreteOrderItem) { fees = ((DiscreteOrderItem)item.getOrderItem()).getSku().getFees();
private PaymentRequestDTO populateLineItemsAndSubscriptions(final Order order, PaymentRequestDTO paymentRequest) { for (OrderItem item : order.getOrderItems()) { /* (mst) Previously, there was SKU's Description used here to set item's name but because it is not required in our implementation, I chose to use SKU's Name instead */ final String name = Match.of(item) .whenType(BundleOrderItem.class).then(it -> it.getSku().getName()) .whenType(DiscreteOrderItem.class).then(it -> it.getSku().getName()) .otherwise(OrderItem::getName).get(); final String category = Optional.ofNullable(item.getCategory()) .map(Category::getName) .orElse(null); paymentRequest = paymentRequest.lineItem() .name(name) .amount(String.valueOf(item.getAveragePrice())) .category(category) .quantity(String.valueOf(item.getQuantity())) .total(order.getTotal().toString()) .done(); } return paymentRequest; }