protected BroadleafCurrency getCurrency(FulfillmentGroup fg) { return fg.getOrder().getCurrency(); }
public BroadleafCurrency getCurrency() { return promotableFulfillmentGroup.getFulfillmentGroup().getOrder().getCurrency(); }
@Override public Money getTotalTax() { return totalTax == null ? null : BroadleafCurrencyUtils.getMoney(totalTax, getFulfillmentGroup().getOrder().getCurrency()); }
@Override @Transactional("blTransactionManager") public FulfillmentGroup save(FulfillmentGroup fulfillmentGroup) { if (fulfillmentGroup.getSequence() == null) { fulfillmentGroup.setSequence( fulfillmentGroupDao.readNextFulfillmentGroupSequnceForOrder( fulfillmentGroup.getOrder())); } return fulfillmentGroupDao.save(fulfillmentGroup); }
@Override public Money getAmount() { return amount == null ? null : BroadleafCurrencyUtils.getMoney(amount, getFulfillmentGroup().getOrder().getCurrency()); }
@Override public Money getTotalTax() { return totalTax == null ? null : BroadleafCurrencyUtils.getMoney(totalTax, getFulfillmentGroup().getOrder().getCurrency()); }
@Override public Money getDiscountedPrice() { return discountedPrice == null ? null : BroadleafCurrencyUtils.getMoney(discountedPrice, getFulfillmentGroup().getOrder().getCurrency()); }
@Override public Money getValue() { return value == null ? null : BroadleafCurrencyUtils.getMoney(value, getFulfillmentGroup().getOrder().getCurrency()); }
fulfillmentGroup.setShippingPrice(BroadleafCurrencyUtils.getMoney(BigDecimal.ZERO, fulfillmentGroup.getOrder().getCurrency())); fulfillmentGroup.setSaleShippingPrice(BroadleafCurrencyUtils.getMoney(BigDecimal.ZERO, fulfillmentGroup.getOrder().getCurrency())); fulfillmentGroup.setRetailShippingPrice(BroadleafCurrencyUtils.getMoney(BigDecimal.ZERO, fulfillmentGroup.getOrder().getCurrency())); return; shippingPrice = sr.getBandResultQuantity(); fulfillmentGroup.setShippingPrice(BroadleafCurrencyUtils.getMoney(shippingPrice, fulfillmentGroup.getOrder().getCurrency())); fulfillmentGroup.setSaleShippingPrice(fulfillmentGroup.getShippingPrice()); fulfillmentGroup.setRetailShippingPrice(fulfillmentGroup.getSaleShippingPrice());
@Override public Money computeDiscountedAmount() { Money discountedAmount = new Money(0); Money priceToUse = getBasePrice(); if (priceToUse != null) { if (offer.getDiscountType().equals(OfferDiscountType.AMOUNT_OFF)) { discountedAmount = BroadleafCurrencyUtils.getMoney(offer.getValue(), promotableFulfillmentGroup.getFulfillmentGroup().getOrder().getCurrency()); } else if (offer.getDiscountType().equals(OfferDiscountType.FIX_PRICE)) { discountedAmount = priceToUse.subtract(BroadleafCurrencyUtils.getMoney(offer.getValue(), promotableFulfillmentGroup.getFulfillmentGroup().getOrder().getCurrency())); } else if (offer.getDiscountType().equals(OfferDiscountType.PERCENT_OFF)) { discountedAmount = priceToUse.multiply(offer.getValue().divide(new BigDecimal("100"))); } if (discountedAmount.greaterThan(priceToUse)) { discountedAmount = priceToUse; } } return discountedAmount; }
shippingPrices.put(option, BroadleafCurrencyUtils.getMoney(lowestBandFulfillmentPrice, fulfillmentGroup.getOrder().getCurrency()));
@Override public ProcessContext<Order> execute(ProcessContext<Order> context) throws Exception { Order order = context.getSeedData(); for(FulfillmentGroup fulfillmentGroup : order.getFulfillmentGroups()) { Money merchandiseTotal = BroadleafCurrencyUtils.getMoney(BigDecimal.ZERO, fulfillmentGroup.getOrder().getCurrency()); for(FulfillmentGroupItem fulfillmentGroupItem : fulfillmentGroup.getFulfillmentGroupItems()) { OrderItem item = fulfillmentGroupItem.getOrderItem(); merchandiseTotal = merchandiseTotal.add(item.getTotalPrice()); } fulfillmentGroup.setMerchandiseTotal(merchandiseTotal); } context.setSeedData(order); return context; }
@Override protected List<USPSContainerItemRequest> createPackages(FulfillmentGroup fulfillmentGroup) throws ShippingPriceException { List<USPSContainerItemRequest> itemRequests = new ArrayList<USPSContainerItemRequest>(); for (FulfillmentGroupItem fgItem : fulfillmentGroup.getFulfillmentGroupItems()) { List<DiscreteOrderItem> discreteItems = new ArrayList<DiscreteOrderItem>(); OrderItem orderItem = fgItem.getOrderItem(); if(BundleOrderItem.class.isAssignableFrom(orderItem.getClass())) { discreteItems.addAll(((BundleOrderItem) orderItem).getDiscreteOrderItems()); } else if (GiftWrapOrderItem.class.isAssignableFrom(orderItem.getClass())) { List<OrderItem> wrappedItems = ((GiftWrapOrderItem) orderItem).getWrappedItems(); if (!fulfillmentGroup.getOrder().getOrderItems().containsAll(wrappedItems)){ throw new ShippingPriceException("To price shipping correctly, the items contained in the GiftWrapOrderItem must also individually appear in the order, not just in the wrappedItems collection of GiftWrapOrderItem."); } continue; } else if (DiscreteOrderItem.class.isAssignableFrom(orderItem.getClass())) { discreteItems.add((DiscreteOrderItem) orderItem); } int counter = 0; for (DiscreteOrderItem discreteItem : discreteItems) { itemRequests.add(createRequest(fulfillmentGroup, discreteItem, counter)); counter++; } } return itemRequests; }
@Override public FulfillmentDto createDto(final FulfillmentGroup fulfillmentGroup, final boolean embed, final boolean link) { final FulfillmentDto fulfillmentDto = new FulfillmentDto(); Optional.ofNullable(fulfillmentGroup.getAddress()).ifPresent(address -> { fulfillmentDto.setAddress(addressConverter.createDto(address, embed, link)); }); fulfillmentDto.setItemHrefs( Optional.ofNullable(fulfillmentGroup.getFulfillmentGroupItems()).orElse(Collections.emptyList()).stream() .map(fulfillmentGroupItem -> linkTo(methodOn(OrderController.class) .getOneItemFromOrder(null, fulfillmentGroup.getOrder().getId(), fulfillmentGroupItem.getOrderItem().getId(), null, null)).toUri().toASCIIString()) .collect(Collectors.toList()) ); fulfillmentDto.setType(Optional.ofNullable(fulfillmentGroup.getType()).map(FulfillmentType::getFriendlyType).orElse(null)); Optional.ofNullable(fulfillmentGroup.getFulfillmentOption()) .map(selectedOption -> selectedOption.getName()) .ifPresent(fulfillmentDto::setSelectedFulfillmentOption); Optional.ofNullable(fulfillmentGroup.getFulfillmentPrice()) .map(Money::getAmount) .ifPresent(fulfillmentDto::setFulfillmentPrice); fulfillmentDto.setFulfillmentOptions(Try.of(() -> fulfillmentServiceProxy.readFulfillmentOptionsWithPricesAvailableForProductsInFulfillmentGroup(fulfillmentGroup)) .map(fulfillmentOptionsMapConverter::createDto) .get()); /* HATEOAS links */ fulfillmentDto.add(linkTo(methodOn(FulfillmentController.class).getOrderFulfillmentById(null, fulfillmentGroup.getOrder().getId(), fulfillmentGroup.getId(), null, null)).withSelfRel()); return fulfillmentDto; }
private FulfillmentGroup createTemporaryFulfillmentGroupWithSingleItem(Product product) { FulfillmentGroup fulfillmentGroup = createTemporaryFulfillmentGroup(); DiscreteOrderItem orderItem = (DiscreteOrderItem) orderItemDao.create(OrderItemType.DISCRETE); orderItem.setSku(product.getDefaultSku()); orderItem.setOrder(fulfillmentGroup.getOrder()); orderItem.setPrice(product.getDefaultSku().getPrice()); FulfillmentGroupItem fgi = fulfillmentGroupItemDao.create(); fgi.setFulfillmentGroup(fulfillmentGroup); fgi.setOrderItem(orderItem); fgi.setQuantity(1); fulfillmentGroup.addFulfillmentGroupItem(fgi); return fulfillmentGroup; }