Class PriceInfoContributionUtils
java.lang.Object
com.broadleafcommerce.catalog.service.util.commerce.PriceInfoContributionUtils
Utility methods for
PriceInfos created for the response to a
ProductDetailsRequest.- Author:
- Nathan Moore (nathandmoore)
-
Constructor Summary
ConstructorsConstructorDescriptionPriceInfoContributionUtils(com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddCostDetail(@NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull Variant variant, Product product) protected voidaddDefaultPriceDetail(@NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull Variant variant, Product product) protected voidaddDetail(Map<String, PriceTypeDetail> priceTypeDetails, String detailType, javax.money.MonetaryAmount amountForType, boolean amountIsFromVariant) protected voidaddSalePriceDetail(@NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull Variant variant, Product product) createItemChoicePriceInfo(@NonNull ItemChoice itemChoice) Creates aPriceInfofor anItemChoiceprotected PriceInfocreatePriceInfoForCustomSpecificItem(@NonNull SpecificItemChoiceDetail specificItemChoice) Extension point for creating aPriceInfofor aSpecificItemChoiceDetailifits typecan be more thanDefaultSpecificItemChoiceType.PRODUCTorDefaultSpecificItemChoiceType.VARIANTwhen it and its parentItemChoicehave nooverridePrices.createPriceInfoForIncludedProduct(@NonNull IncludedProduct includedProduct) Creates aPriceInfofor anIncludedProduct.createPriceInfoForProduct(@NonNull Product product) protected PriceInfocreatePriceInfoForSpecificItem(@NonNull Map<String, javax.money.MonetaryAmount> pricingFields, boolean isOnSale) createPriceInfoForVariant(@NonNull Variant variant) createPriceInfoForVariant(@NonNull Variant variant, Product parentProduct) protected PriceInfocreatePriceInfoSpecificChoiceWithoutOverride(@NonNull SpecificItemChoiceDetail specificChoice, PriceInfo itemChoicePriceInfo) Creates aPriceInfofor aSpecificItemChoicethat does not have aSpecificItemChoice.getOverridePrice().createSpecificItemChoicePriceInfo(@NonNull SpecificItemChoiceDetail specificChoice, PriceInfo itemChoicePriceInfo) Creates aPriceInfofor aSpecificItemChoiceDetail.createSpecificItemVariantPriceInfo(SpecificItemVariantPricing variantPricing) protected PriceInfogetPriceInfoForSpecificChoiceWithOverride(@NonNull SpecificItemChoiceDetail specificChoice) protected com.broadleafcommerce.common.extension.TypeFactoryprotected booleanisOnSale(PriceTypeDetail priceDetail, PriceTypeDetail saleDetail) protected voidupdateVariantPriceInfo(@NonNull Variant variant, @NonNull PriceInfo priceInfo, @NonNull Map<String, PriceTypeDetail> priceTypeDetails)
-
Constructor Details
-
PriceInfoContributionUtils
public PriceInfoContributionUtils(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
createPriceInfoForProduct
-
createPriceInfoForVariant
-
createPriceInfoForVariant
-
updateVariantPriceInfo
protected void updateVariantPriceInfo(@NonNull @NonNull Variant variant, @NonNull @NonNull PriceInfo priceInfo, @NonNull @NonNull Map<String, PriceTypeDetail> priceTypeDetails) -
isOnSale
-
addCostDetail
protected void addCostDetail(@NonNull @NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull @NonNull Variant variant, @Nullable Product product) -
addSalePriceDetail
protected void addSalePriceDetail(@NonNull @NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull @NonNull Variant variant, @Nullable Product product) -
addDefaultPriceDetail
protected void addDefaultPriceDetail(@NonNull @NonNull Map<String, PriceTypeDetail> priceTypeDetails, @NonNull @NonNull Variant variant, @Nullable Product product) -
addDetail
protected void addDetail(Map<String, PriceTypeDetail> priceTypeDetails, String detailType, javax.money.MonetaryAmount amountForType, boolean amountIsFromVariant) -
createPriceInfoForIncludedProduct
public PriceInfo createPriceInfoForIncludedProduct(@NonNull @NonNull IncludedProduct includedProduct) Creates aPriceInfofor anIncludedProduct.- Parameters:
includedProduct-IncludedProductfor which to create aPriceInfo- Returns:
- a
PriceInfofor anIncludedProduct
-
createItemChoicePriceInfo
Creates aPriceInfofor anItemChoice- Parameters:
itemChoice-ItemChoicefor which to make aPriceInfo- Returns:
- a
PriceInfofor anItemChoice
-
createSpecificItemChoicePriceInfo
public PriceInfo createSpecificItemChoicePriceInfo(@NonNull @NonNull SpecificItemChoiceDetail specificChoice, @Nullable PriceInfo itemChoicePriceInfo) Creates aPriceInfofor aSpecificItemChoiceDetail. This will first look for anoverride priceon the specific item, then on the parentItemChoice, and, if neither of the previous are present, it will use the specificProductorVariant.- Parameters:
specificChoice-SpecificItemChoicefor which to make aPriceInfo- Returns:
- a
PriceInfofor aSpecificItemChoiceDetail
-
createSpecificItemVariantPriceInfo
-
getPriceInfoForSpecificChoiceWithOverride
protected PriceInfo getPriceInfoForSpecificChoiceWithOverride(@NonNull @NonNull SpecificItemChoiceDetail specificChoice) - Parameters:
specificChoice-SpecificItemChoicefor which to create aPriceInfo- Returns:
- a
PriceInfofor aSpecificItemChoicethat has aSpecificItemChoice.getOverridePrice().
-
createPriceInfoSpecificChoiceWithoutOverride
protected PriceInfo createPriceInfoSpecificChoiceWithoutOverride(@NonNull @NonNull SpecificItemChoiceDetail specificChoice, @Nullable PriceInfo itemChoicePriceInfo) Creates aPriceInfofor aSpecificItemChoicethat does not have aSpecificItemChoice.getOverridePrice().- Parameters:
specificChoice-SpecificItemChoicefor which to create aPriceInfoitemChoicePriceInfo- ThePriceInfoof the parentItemChoice- Returns:
- a
PriceInfofor aSpecificItemChoicethat does not have aSpecificItemChoice.getOverridePrice().
-
createPriceInfoForSpecificItem
protected PriceInfo createPriceInfoForSpecificItem(@NonNull @NonNull Map<String, javax.money.MonetaryAmount> pricingFields, boolean isOnSale) Creates aPriceInfowithPriceTypeDetailsappropriate for aProduct,Variant, or similar entity. Normally, this means that it will look at the pricing fields of aVariantorProduct; however, the method has been generalized to take in any number of arbitrary pricing fields.- Parameters:
pricingFields- An arbitrary set of pricing fields. By default the keys should match the values ofDefaultPriceType.isOnSale- Whether the item is on sale.- Returns:
- a
PriceInfowithPriceTypeDetailsappropriate for aProduct,Variant, or similar entity
-
createPriceInfoForCustomSpecificItem
protected PriceInfo createPriceInfoForCustomSpecificItem(@NonNull @NonNull SpecificItemChoiceDetail specificItemChoice) Extension point for creating aPriceInfofor aSpecificItemChoiceDetailifits typecan be more thanDefaultSpecificItemChoiceType.PRODUCTorDefaultSpecificItemChoiceType.VARIANTwhen it and its parentItemChoicehave nooverridePrices.- Parameters:
specificItemChoice- TheSpecificItemChoiceDetailfor which to make aPriceInfo- Returns:
- A
PriceInfofor aSpecificItemChoiceDetailwhen neither it nor its parentItemChoicehaveoverridePrices.
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-