public function PriceRange() { $variations = $this->owner->Variations(); if (!$variations->exists() || !$variations->Count()) { return null; } $prices = $variations->map('ID', 'SellingPrice')->toArray(); $pricedata = array('HasRange' => false, 'Max' => ShopCurrency::create(), 'Min' => ShopCurrency::create(), 'Average' => ShopCurrency::create()); $count = count($prices); $sum = array_sum($prices); $maxprice = max($prices); $minprice = min($prices); $pricedata['HasRange'] = $minprice != $maxprice; $pricedata['Max']->setValue($maxprice); $pricedata['Min']->setValue($minprice); if ($count > 0) { $pricedata['Average']->setValue($sum / $count); } return ArrayData::create($pricedata); }