示例#1
0
 /**
  * Return items, grouped by brand_purchase_id
  * @param  array  $items array of Purchase_Items
  * @return array
  */
 public static function group_by_brand_purchase(array $items)
 {
     $items = Jam_Array_Model::factory()->model('purchase_item')->load_fields($items)->set($items);
     return Array_Util::group_by($items, function ($item) {
         return $item->brand_purchase_id;
     });
 }
示例#2
0
 public function model_call_group_shipping_methods(Model_Brand_Purchase $brand_purchase, Jam_Event_Data $data)
 {
     $items = $brand_purchase->items(array('can_ship' => TRUE));
     $groups = Array_Util::group_by($items, function ($item) use($brand_purchase) {
         $item->methods_for_location = $item->get_insist('reference')->shipping()->methods_for($brand_purchase->shipping_country());
         return join(',', array_keys($item->methods_for_location));
     });
     $data->return = array_map(function ($group) use($brand_purchase) {
         $methods = $group[0]->methods_for_location;
         return new Group_Shipping_Methods($brand_purchase->shipping, $methods, $group);
     }, $groups);
 }
示例#3
0
 public function total_price()
 {
     $total = $this->total_purchase_price();
     $items = $this->available_items();
     $items = Model_Shipping_Item::filter_discounted_items($items, $total);
     $groups = Array_Util::group_by($items, function ($item) {
         return $item->group_key();
     });
     $group_prices = array_map(function ($grouped_items) use($total) {
         $prices = Model_Shipping_Item::relative_prices($grouped_items);
         return Jam_Price::sum($prices, $total->currency(), $total->monetary(), $total->display_currency());
     }, $groups);
     return Jam_Price::sum($group_prices, $total->currency(), $total->monetary(), $total->display_currency());
 }
示例#4
0
 /**
  * @dataProvider data_group_by
  * @covers Array_Util::group_by
  */
 public function test_group_by($array, $callback, $preserve_keys, $result)
 {
     $this->assertEquals($result, Array_Util::group_by($array, $callback, $preserve_keys));
 }