protected List<String> getAppliedOfferNamesForOrderItem(OrderItem orderItem) { List<String> appliedOfferNames = new ArrayList<>(); for (OrderItemPriceDetail oipd : orderItem.getOrderItemPriceDetails()) { for (OrderItemPriceDetailAdjustment adjustment : oipd.getOrderItemPriceDetailAdjustments()) { appliedOfferNames.add(adjustment.getOfferName()); } } return appliedOfferNames; }
private int countPriceDetails(Order order) { int count = 0; for (OrderItem item : order.getOrderItems()) { count = count + item.getOrderItemPriceDetails().size(); } return count; }
Map<Long, OrderItemPriceDetail> unmatchedDetailsMap = new HashMap<Long, OrderItemPriceDetail>(); for (OrderItemPriceDetail orderItemPriceDetail : orderItem.getOrderItemPriceDetails()) { String detailKey = buildItemPriceDetailKey(orderItemPriceDetail); PromotableOrderItemPriceDetail promotableDetail = promotableDetailsMap.remove(detailKey); newPriceDetail.setOrderItem(orderItem); offerServiceUtilities.updatePriceDetail(newPriceDetail, priceDetail); orderItem.getOrderItemPriceDetails().add(newPriceDetail); Iterator<OrderItemPriceDetail> pdIterator = orderItem.getOrderItemPriceDetails().iterator(); offerServiceUtilities.removeUnmatchedPriceDetails(unmatchedDetailsMap, pdIterator);
if (oi.getOrderItemPriceDetails() == null) { continue; for (OrderItemPriceDetail pd : oi.getOrderItemPriceDetails()) { if (pd.getOrderItemPriceDetailAdjustments() == null) { continue;
@Override public OrderItemPriceDetail initializeOrderItemPriceDetails(OrderItem item) { OrderItemPriceDetail detail = createOrderItemPriceDetail(); detail.setOrderItem(item); detail.setQuantity(item.getQuantity()); detail.setUseSalePrice(item.getIsOnSale()); item.getOrderItemPriceDetails().add(detail); return detail; }
if (item.getOrderItemPriceDetails() != null) { for (OrderItemPriceDetail detail : item.getOrderItemPriceDetails()) { result.addAll(CollectionUtils.collect(detail.getOrderItemPriceDetailAdjustments(), adjustmentToOfferTransformer));
private int checkOrderItemOfferAppliedCount(Order order) { int count = 0; for (OrderItem item : order.getOrderItems()) { for (OrderItemPriceDetail detail : item.getOrderItemPriceDetails()) { count = count + (detail.getOrderItemPriceDetailAdjustments().size() * detail.getQuantity()); } } return count; }
private int countItemAdjustments(Order order) { int adjustmentCount = 0; for (OrderItem item : order.getOrderItems()) { for (OrderItemPriceDetail detail : item.getOrderItemPriceDetails()) { if (detail.getOrderItemPriceDetailAdjustments() != null) { adjustmentCount += detail.getOrderItemPriceDetailAdjustments().size(); } } } return adjustmentCount; }
protected void initializePriceDetails() { if (includeAdjustments) { for (OrderItemPriceDetail detail : orderItem.getOrderItemPriceDetails()) { PromotableOrderItemPriceDetail poid = itemFactory.createPromotableOrderItemPriceDetail(this, detail.getQuantity());
private int checkOrderItemOfferAppliedQuantity(Order order, Offer offer) { int count = 0; for (OrderItem item : order.getOrderItems()) { for (OrderItemPriceDetail detail : item.getOrderItemPriceDetails()) { for (OrderItemPriceDetailAdjustment adjustment : detail.getOrderItemPriceDetailAdjustments()) { if (adjustment.getOffer().getId().equals(offer.getId())) { count += detail.getQuantity(); } } } } return count; }
OrderItemPriceDetail clonedEntry = entry.createOrRetrieveCopyInstance(context).getClone(); clonedEntry.setOrderItem(cloned); cloned.getOrderItemPriceDetails().add(clonedEntry);
public void testRoundingRequired() throws Exception { Order order = dataProvider.createBasicOrder(); Money subTotal = new Money(order.getCurrency()); for (OrderItem orderItem : order.getOrderItems()) { orderItem.getOrderItemPriceDetails().clear(); orderItem.setQuantity(2); orderItem.setSalePrice(new Money(10D)); subTotal = subTotal.add(orderItem.getTotalPrice()); } order.setSubTotal(subTotal); OrderAdjustment adjustment = new OrderAdjustmentImpl(); adjustment.setValue(new Money(new BigDecimal(".05"), order.getCurrency())); adjustment.setOrder(order); order.getOrderAdjustments().add(adjustment); ProcessContext<Order> context = new DefaultProcessContextImpl<Order>(); context.setSeedData(order); fulfillmentItemPricingActivity.execute(context); assertTrue(sumProratedOfferAdjustments(order).equals( new Money(new BigDecimal(".05"), order.getCurrency()))); }
public void testDistributeOneDollarAcrossFiveEqualItems() throws Exception { Order order = dataProvider.createBasicOrder(); Money subTotal = new Money(order.getCurrency()); for (OrderItem orderItem : order.getOrderItems()) { orderItem.setSalePrice(new Money(10D)); orderItem.getOrderItemPriceDetails().clear(); subTotal = subTotal.add(orderItem.getTotalPrice()); } OrderAdjustment adjustment = new OrderAdjustmentImpl(); adjustment.setValue(new Money(new BigDecimal("1"), order.getCurrency())); order.getOrderAdjustments().add(adjustment); adjustment.setOrder(order); order.setSubTotal(subTotal); ProcessContext<Order> context = new DefaultProcessContextImpl<Order>(); context.setSeedData(order); fulfillmentItemPricingActivity.execute(context); // Each item is equally priced, so the adjustment should be .20 per item. Money proratedAdjustment = new Money(".20"); for (FulfillmentGroup fulfillmentGroup : order.getFulfillmentGroups()) { for (FulfillmentGroupItem fulfillmentGroupItem : fulfillmentGroup.getFulfillmentGroupItems()) { assertTrue(fulfillmentGroupItem.getProratedOrderAdjustmentAmount().compareTo( proratedAdjustment.multiply(fulfillmentGroupItem.getQuantity())) == 0); } } }
for (OrderItemPriceDetail detail : item.getOrderItemPriceDetails()) { itemAdjustmentCount += detail.getOrderItemPriceDetailAdjustments().size();