1
私はcommercetools JVM SDKを使用してProductProjectionsをクエリします。絶対的な製品割引が適用される場合、どのように情報を取得しますか?commercetools:製品での製品ディスカウントのタイプを取得するにはどうすればよいですか?
私はcommercetools JVM SDKを使用してProductProjectionsをクエリします。絶対的な製品割引が適用される場合、どのように情報を取得しますか?commercetools:製品での製品ディスカウントのタイプを取得するにはどうすればよいですか?
あなたがこの情報を取得し、ProductDiscountValueでのinstanceofのチェックを使用できるように製品価格の範囲内の製品の割引を拡大する必要があります。
final ProductProjectionQuery query = ProductProjectionQuery.ofCurrent()
//your query predicate
.withPredicates(m -> m.id().is(productId))
//asks to expand in every variant the discount information
.withExpansionPaths(m -> m.allVariants().prices().discounted().discount());
final Optional<ProductProjection> loadedProduct = client().executeBlocking(query).head();
assertThat(loadedProduct.isPresent()).isTrue();
final ProductProjection productProjection = loadedProduct.get();
final List<Price> prices = productProjection.getMasterVariant().getPrices();
//here you need to have a look if it is the right price, maybe http://commercetools.github.io/commercetools-jvm-sdk/apidocs/io/sphere/sdk/products/search/ProductVariantFilterSearchModel.html#scopedPrice-- is a better option for you
final Price price = prices.get(0);
assertThat(price.getDiscounted()).isNotNull();
final ProductDiscount referenceExpandedProductDiscount = price.getDiscounted().getDiscount().getObj();
assertThat(referenceExpandedProductDiscount).isNotNull();
assertThat(referenceExpandedProductDiscount.getValue() instanceof AbsoluteProductDiscountValue)
.as("this is how you check if the discount is absolute")
.isTrue();