예제 #1
0
 /**
  * @param Mage_SalesRule_Model_Rule              $rule
  * @param Mage_Sales_Model_Quote_Item_Abstract[] $allItems
  *
  * @return Mage_Sales_Model_Quote_Item_Abstract[]
  */
 public function filterForValidItems(Mage_SalesRule_Model_Rule $rule, array $allItems)
 {
     // Array of items this rule will apply to
     /** @var Mage_Sales_Model_Quote_Item_Abstract[] $validItems */
     $validItems = [];
     // Loop all items checking if rule should apply
     foreach ($allItems as $item) {
         // Skip items flagged for no discount
         if ($item->getNoDiscount()) {
             continue;
         }
         // Skip non-calculated child items
         if ($item->getParentItemId() && !$item->isChildrenCalculated()) {
             continue;
         }
         // Skip non-calculated parent items
         if ($item->getHasChildren() && $item->isChildrenCalculated()) {
             continue;
         }
         // NB: validate() doesn't look like it exists because getActions() has the wrong @return type
         if (!$rule->getActions()->validate($item)) {
             continue;
         }
         // Add item to the valid item list
         $validItems[] = $item;
     }
     return $validItems;
 }