我需要自定义应用于"最高价格项目的ATG促销活动"但它会考虑什么时候有销售价格并使用它而不是默认的定价。
基于我在配置"条件和提供"时从atg.ui.commerce.pricing.DescriptionBuilder.java中读到的内容。在BCC中标记选项时生成PMDL规则:
"价格最高的项目"根据"将折扣应用于"它使用此部分生成PDML规则:
<up-to-and-including number="1" sort-by="priceInfo.listPrice" sort-order="descending">
但正如您所见,ATG始终使用在PDML规则中硬编码的priceInfo.listPrice。
我怎么能这样做我的促销是否足够智能,以检测商品的销售价格何时使用它而不是标价?
答案 0 :(得分:0)
很抱歉我延迟回复你的答案,我花了很长时间才开始深入研究它,我想分享我的发现:
在我公司,我们根据ATG建议实施了销售清单价格;它意味着在atg / commerce / pricing / ItemPriceInfo上我们将从“销售价格”列表中填充listPrice,从“销售价格”列表中填充salePrice。
在整个网站上显示我们必须在两个列表之间选择的商品价格,方法是应用下一个逻辑优先考虑销售价格:
isOnSale()&amp;&amp; getSalePrice()&lt; getListPrice? getSalePrice():getListPrice();
在BCC上创建新促销并选择将促销应用于最高(或最低)价格的项目时出现问题,因为默认情况下BCC会在PDML规则中添加XML标签,如:
&LT; up-to-includes number =“1”sort-by =“priceInfo.listPrice”sort-order =“descending”&gt;
正如您所注意到的,PDML的作用是根据“priceInfo.listPrice”对所有项目进行排序,然后选择第一项。
当评估PDML时,ATG通过atg / commerce / pricing / definition / UpToAndIncludingElem的实例映射此XML标记;方法“evaluate”将调用生活在atg / commerce / pricing.definition.CompoundPricingModelExpression中的方法“resolveCollectionList”,最后调用同一类的方法“sortList”。
5.b由于我们已经扩展了atg / commerce / pricing / ItemPriceInfo类,我添加了一个名为“finalPrice”的新属性及其setter和一个自定义getter,用于评估是否存在要使用的销售价格,如我在步骤中所述#2
现在每次在PDML规则中使用该XML标签进行促销以将促销应用于最高(或最低)定价商品时,我的自定义UpToAndIncludingElem的sortList方法将替换sortBy参数以使用“priceInfo.finalPrice”,其中getter方法将考虑销售价格。
为什么我放弃这种做法?
我该怎么做?
我将保留“priceInfo.finalPrice”的定义,我在ItemPriceInfo类的自定义类中添加了
我会看看如何更改促销模板,以便对我的自定义属性“priceInfo.finalPrice”进行硬编码,而不是“priceInfo.listPrice”
感谢那些花时间阅读和回复我的问题的人,我希望我的发现和方法对您有用。
当然有信心提出或建议事情。