自定义ATG促销活动以及#34;最高价格的商品"如果有的话,考虑销售价格

时间:2016-08-29 18:14:46

标签: oracle atg atg-dynamo

我需要自定义应用于"最高价格项目的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。

我怎么能这样做我的促销是否足够智能,以检测商品的销售价格何时使用它而不是标价?

1 个答案:

答案 0 :(得分:0)

很抱歉我延迟回复你的答案,我花了很长时间才开始深入研究它,我想分享我的发现:

  1. 在我公司,我们根据ATG建议实施了销售清单价格;它意味着在atg / commerce / pricing / ItemPriceInfo上我们将从“销售价格”列表中填充listPrice,从“销售价格”列表中填充salePrice。

  2. 在整个网站上显示我们必须在两个列表之间选择的商品价格,方法是应用下一个逻辑优先考虑销售价格:

    isOnSale()&amp;&amp; getSalePrice()&lt; getListPrice? getSalePrice():getListPrice();

  3. 在BCC上创建新促销并选择将促销应用于最高(或最低)价格的项目时出现问题,因为默认情况下BCC会在PDML规则中添加XML标签,如:

    &LT; up-to-includes number =“1”sort-by =“priceInfo.listPrice”sort-order =“descending”&gt;

  4. 正如您所注意到的,PDML的作用是根据“priceInfo.listPrice”对所有项目进行排序,然后选择第一项。

  5. 当评估PDML时,ATG通过atg / commerce / pricing / definition / UpToAndIncludingElem的实例映射此XML标记;方法“evaluate”将调用生活在atg / commerce / pricing.definition.CompoundPricingModelExpression中的方法“resolveCollectionList”,最后调用同一类的方法“sortList”。

    1. 这是一种对我有用的hacky方法,但我已经放弃了:
    2. 5.a我反编译UpToAndIncludingElem.class并添加了自己的方法sortList版本,因为这个方法接收参数“sortBy”我添加了一个条件,所以如果它的值是“priceInfo.listPrice”我把它改成了acustom new属性“priceInfo.finalPrice”

      5.b由于我们已经扩展了atg / commerce / pricing / ItemPriceInfo类,我添加了一个名为“finalPrice”的新属性及其setter和一个自定义getter,用于评估是否存在要使用的销售价格,如我在步骤中所述#2

      现在每次在PDML规则中使用该XML标签进行促销以将促销应用于最高(或最低)定价商品时,我的自定义UpToAndIncludingElem的sortList方法将替换sortBy参数以使用“priceInfo.finalPrice”,其中getter方法将考虑销售价格。

      为什么我放弃这种做法?

      1. 因为我覆盖类的方式依赖于顺序类被添加到类路径中的项目中并且让我感到冒险
      2. 我使用的是反编译工具,我无法保证这是最佳的JAVA代码
      3. 如果稍后使用其他ATG版本,此流量会发生变化,我可能会遇到麻烦
      4. 我该怎么做?

        我将保留“priceInfo.finalPrice”的定义,我在ItemPriceInfo类的自定义类中添加了

        我会看看如何更改促销模板,以便对我的自定义属性“priceInfo.finalPrice”进行硬编码,而不是“priceInfo.listPrice”

        感谢那些花时间阅读和回复我的问题的人,我希望我的发现和方法对您有用。

        当然有信心提出或建议事情。