Skip to content

Commit 34e3dbd

Browse files
committed
DEVX-813: adding StandalonePriceUtil
1 parent 77c64a2 commit 34e3dbd

3 files changed

Lines changed: 71 additions & 1 deletion

File tree

commercetools/commercetools-importapi-utils/src/main/java/com/commercetools/sdk/CustomerUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private AuthenticationMode toImportApiAuthenticationMode(
5656
return null;
5757
}
5858

59-
private CustomerGroupKeyReference toCustomerGroupKeyReference(@NotNull CustomerGroupReference customerGroup) {
59+
public static CustomerGroupKeyReference toCustomerGroupKeyReference(@NotNull CustomerGroupReference customerGroup) {
6060
return CustomerGroupKeyReference.builder().key(customerGroup.getId()).build();
6161
}
6262

commercetools/commercetools-importapi-utils/src/main/java/com/commercetools/sdk/ProductUtil.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import com.commercetools.api.models.product.ProductProjection;
1818
import com.commercetools.api.models.product.ProductReferenceImpl;
1919
import com.commercetools.api.models.product.ProductVariant;
20+
import com.commercetools.api.models.product_discount.ProductDiscountReference;
2021
import com.commercetools.api.models.product_type.*;
2122
import com.commercetools.importapi.models.common.*;
2223
import com.commercetools.importapi.models.productdrafts.PriceDraftImport;
2324
import com.commercetools.importapi.models.productdrafts.ProductDraftImport;
2425
import com.commercetools.importapi.models.productdrafts.ProductVariantDraftImport;
2526
import com.commercetools.importapi.models.products.ProductImport;
2627
import com.commercetools.importapi.models.productvariants.Attribute;
28+
import org.jetbrains.annotations.NotNull;
2729

2830
public class ProductUtil {
2931
private final KeyResolverService keyResolverService;
@@ -377,4 +379,11 @@ private static Attribute mapAttribute(com.commercetools.api.models.product.Attri
377379
/* TODO: AttributeNestedType is not supported yet */
378380
throw new IllegalArgumentException("Unsupported type: " + value.getClass());
379381
}
382+
383+
public static ProductDiscountKeyReference toProductDiscountKeyReference(
384+
@NotNull ProductDiscountReference discount) {
385+
return ProductDiscountKeyReference.builder()
386+
.key(discount.getId())
387+
.build();
388+
}
380389
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.commercetools.sdk;
2+
3+
import com.commercetools.api.models.channel.ChannelReference;
4+
import com.commercetools.api.models.standalone_price.StandalonePrice;
5+
import com.commercetools.importapi.models.common.ChannelKeyReference;
6+
import com.commercetools.importapi.models.common.DiscountedPrice;
7+
import com.commercetools.importapi.models.common.PriceTier;
8+
import com.commercetools.importapi.models.standalone_prices.StandalonePriceImport;
9+
10+
import java.util.List;
11+
12+
import static com.commercetools.sdk.CommonImportUtil.getImportApiCustom;
13+
import static com.commercetools.sdk.CommonImportUtil.importApiTypedMoney;
14+
import static com.commercetools.sdk.ProductUtil.toProductDiscountKeyReference;
15+
16+
public class StandalonePriceUtil {
17+
public static StandalonePriceImport toStandalonePriceImport(StandalonePrice price) {
18+
return StandalonePriceImport.builder()
19+
.key(price.getKey()) // required field
20+
.sku(price.getSku()) // required field
21+
.value(v -> importApiTypedMoney(price.getValue(), v)) // required field
22+
.country(price.getCountry())
23+
.customerGroup(CustomerUtil.toCustomerGroupKeyReference(price.getCustomerGroup()))
24+
.channel(toImportApiChannelKeyReference(price.getChannel()))
25+
.validFrom(price.getValidFrom())
26+
.validUntil(price.getValidUntil())
27+
.tiers(toImportApiPriceTiers(price.getTiers()))
28+
.discounted(toImportApiDiscountedPrice(price.getDiscounted()))
29+
.custom(getImportApiCustom(price.getCustom()))
30+
.active(price.getActive())
31+
.build();
32+
}
33+
34+
private static DiscountedPrice toImportApiDiscountedPrice(
35+
com.commercetools.api.models.common.DiscountedPrice discounted) {
36+
return DiscountedPrice.builder().value(v -> importApiTypedMoney(discounted.getValue(), v))
37+
.discount(toProductDiscountKeyReference(discounted.getDiscount()))
38+
.build();
39+
}
40+
41+
private static List<PriceTier> toImportApiPriceTiers(List<com.commercetools.api.models.common.PriceTier> tiers) {
42+
if (tiers == null) {
43+
return null;
44+
}
45+
return tiers.stream().map(StandalonePriceUtil::toImportApiPriceTier).toList();
46+
}
47+
48+
private static PriceTier toImportApiPriceTier(com.commercetools.api.models.common.PriceTier tier) {
49+
return PriceTier.builder()
50+
.minimumQuantity(tier.getMinimumQuantity())
51+
.value(v -> importApiTypedMoney(tier.getValue(), v))
52+
.build();
53+
}
54+
55+
private static ChannelKeyReference toImportApiChannelKeyReference(ChannelReference channel) {
56+
if (channel == null) {
57+
return null;
58+
}
59+
return ChannelKeyReference.builder().key(channel.getId()).build();
60+
}
61+
}

0 commit comments

Comments
 (0)