@Override
 public PromotionStatusEnum isApplicable(OrderRequest request) {
   if (log.isDebugEnabled()) {
     log.debug(
         "Checking if BuyWorthXGetYRsOffOnZCategoryRuleImpl applies on order : "
             + request.getOrderId());
   }
   Money orderValue = new Money(request.getOrderValue());
   if (request.isValidClient(client_list)) {
     if (orderValue.gteq(minOrderValue)) {
       if (request.isAllProductsInCategory(categories)) {
         return PromotionStatusEnum.SUCCESS;
       }
       return PromotionStatusEnum.CATEGORY_MISMATCH;
     }
     return PromotionStatusEnum.LESS_ORDER_AMOUNT;
   }
   return PromotionStatusEnum.INVALID_CLIENT;
 }