Skip to Content
0
Jan 18, 2019 at 03:10 PM

Compare two fields in one product in promotion condition

216 Views

Hello, I'm creating custom condition in new promotion engine, it should compare two fields from one product. They are added to ProductRAO and populated correctly, but during adding product to basket error is thrown:

 java.lang.RuntimeException: Error evaluating constraint 'recommendedRetailPrice > $v4.europe1Prices' in [Rule "rule_a0b0a74664f5427f91b38749353de7f1_query" in de/hybris/platform/droolsruleenginesales testRuleMedia.drl]


My translator:

 public class SalePriceTranslator extends AbstractRuleConditionTranslator
 {
     public static final String RECOMMENDED_RETAIL_PRICE = "recommendedRetailPrice";
     public static final String WEB_PRICE = "europe1Prices";
 
     @Override
     public RuleIrCondition translate(RuleCompilerContext ruleCompilerContext, RuleConditionData ruleConditionData,
             RuleConditionDefinitionData ruleConditionDefinitionData)
     {
         final String productRaoVariable = ruleCompilerContext.generateVariable(ProductRAO.class);
 
         final List<RuleIrCondition> irConditions = new ArrayList<>();
         final RuleIrTypeCondition irProductCondition = new RuleIrTypeCondition();
         irProductCondition.setVariable(productRaoVariable);
 
         final RuleIrAttributeRelCondition irRrpWebRel = new RuleIrAttributeRelCondition();
         irRrpWebRel.setVariable(productRaoVariable);
         irRrpWebRel.setAttribute(RECOMMENDED_RETAIL_PRICE);
         irRrpWebRel.setOperator(RuleIrAttributeOperator.GREATER_THAN);
         irRrpWebRel.setTargetVariable(productRaoVariable);
         irRrpWebRel.setTargetAttribute(WEB_PRICE);
 
         irConditions.add(irProductCondition);
         irConditions.add(irRrpWebRel);
 
         final RuleIrGroupCondition irSalePriceCondition = new RuleIrGroupCondition();
         irSalePriceCondition.setOperator(RuleIrGroupOperator.AND);
         irSalePriceCondition.setChildren(irConditions);
         return irSalePriceCondition;
     }
 
 }


Is it correct way of comparing fields, or I'm doing something wrong? Thanks