【问题标题】:How to acces all SubGroup computed items for a single computed product line item如何访问单个计算产品行项目的所有子组计算项目
【发布时间】:2021-01-13 14:09:09
【问题描述】:

我的规则集中有两个自定义计算规则,一个用于单个 PLI 价格,一个用于总计:

在“calculatePostpaidPrices”中,我创建了多个 ComputedDurationItems(自定义类),它们作为 SubGroup 存储在单个 ComputedProductLineItem 上。 这种关系可以在这里观察到:

现在在第二条规则“calculatePostpaidTotals”(左侧)中,我试图从第一条规则中获取单个 PLI 的所有持续时间项目,现在该怎么做(右侧是计算结果视图)美好的):

请注意,子组已与本食谱中的职责子组相同: https://support.intershop.com/kb/index.php/Display/23V395#l100 但是本食谱中没有示例如何在下一个计算规则中检索职责(子组)。

【问题讨论】:

    标签: intershop


    【解决方案1】:

    看了一些内置的平台计算规则后,我求助于创建这个方法:

     private Map<ComputedProductLineItem, Collection<ComputedDurationItem>> mapDurationItemsToComputedPLIs(
    CalculationRule<ComputedItem, ComputedItem, LineItemCtnr>.Input input) {
    Map<ComputedProductLineItem, Collection<ComputedDurationItem>> durationsMap = new HashMap<>();
    Collection<ComputedDurationItem> durationItems = input.getItems(durationsSubGroup);
    
    for (ComputedDurationItem durationItem : durationItems) {
      ComputedProductLineItem parentPLI = input.getItem(this.durationsSubGroup.getParentCell(durationItem));
    
      if (!durationsMap.containsKey(parentPLI))
        durationsMap.put(parentPLI, new ArrayList<ComputedDurationItem>(1));
    
      durationsMap.get(parentPLI).add(durationItem);
    }
    
    return durationsMap;  
    }
    

    然后我使用创建的地图只获取特定 PLI 的持续时间项目。 基本上,这里的情况是您无法获取 PLI 的“子”项目,但您可以获取 DurationItem 的父项目或子组中的任何其他项目并在此方法中使用。

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 2021-02-13
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多