Пример #1
0
 /**
  * @deprecated 0.9.2 Having brand refund items per purchase item is deprecated
  * @param  Model_Purchase_Item $purchase_item
  * @return boolean
  */
 public function has_purchase_item(Model_Purchase_Item $purchase_item)
 {
     foreach ($this->items->as_array() as $item) {
         if ($item->purchase_item_id == $purchase_item->id() and $item->is_full_amount()) {
             return TRUE;
         }
     }
     return FALSE;
 }
Пример #2
0
 public function price_for_purchase_item(Model_Purchase_Item $purchase_item)
 {
     $brand_purchase = $purchase_item->get_insist('brand_purchase');
     $brand_total = $brand_purchase->total_price('product');
     $purchase = $brand_purchase->get_insist('purchase');
     $totals = array_map(function ($brand_purchase) {
         return $this->applies_to($brand_purchase) ? $brand_purchase->total_price('product') : 0;
     }, $purchase->brand_purchases->as_array());
     $total = Jam_Price::sum($totals, $purchase_item->currency(), $purchase_item->monetary());
     $multiplier = $total->is(Jam_Price::GREATER_THAN, 0) ? $brand_total->amount() / $total->amount() : 1;
     return $this->amount->monetary($purchase_item->monetary())->multiply_by(-$multiplier);
 }
Пример #3
0
 public function performUnfreeze()
 {
     parent::performUnfreeze();
     if ($this->reference) {
         $this->reference->unfreeze();
     }
 }
Пример #4
0
 /**
  * @covers Model_Purchase_Item::group_by_brand_purchase
  */
 public function test_group_by_brand_purchase()
 {
     $items = array(Jam::build('purchase_item', array('id' => 10, 'brand_purchase_id' => 1)), Jam::build('purchase_item', array('id' => 20, 'brand_purchase_id' => 1)), Jam::build('purchase_item', array('id' => 30, 'brand_purchase_id' => 12)), array('id' => 40, 'brand_purchase_id' => 13), array('id' => 50, 'brand_purchase_id' => 13), 1, array('id' => 2));
     $groups = Model_Purchase_Item::group_by_brand_purchase($items);
     $this->assertEquals(array('1', '12', '13'), array_keys($groups));
     $this->assertEquals(array(10, 20, 1, 2), $this->ids($groups['1']));
     $this->assertEquals(array(30), $this->ids($groups['12']));
     $this->assertEquals(array(40, 50), $this->ids($groups['13']));
 }
Пример #5
0
 /**
  * @codeCoverageIgnore
  */
 public static function initialize(Jam_Meta $meta)
 {
     parent::initialize($meta);
     $meta->table('purchase_items')->fields(array('is_payable' => Jam::field('boolean', array('default' => TRUE)), 'is_discount' => Jam::field('boolean', array('default' => TRUE))));
 }
Пример #6
0
 public static function initialize(Jam_Meta $meta)
 {
     parent::initialize($meta);
     $meta->table('purchase_items');
 }
Пример #7
0
 /**
  * Replace the purchase items from a given type, removing old items
  *
  * @param  array $items array of new items
  * @param  array $types filters
  * @return Model_Purchase $this
  */
 public function replace_items($items, $types = NULL)
 {
     $grouped = Model_Purchase_Item::group_by_brand_purchase($items);
     $current = $this->brand_purchases->as_array('id');
     $replaced = array_intersect_key($grouped, $current);
     $removed = array_diff_key($current, $grouped);
     foreach ($replaced as $index => $items) {
         $current[$index]->replace_items($items, $types);
     }
     $this->brand_purchases->remove(array_values($removed));
     return $this;
 }
Пример #8
0
 /**
  * @codeCoverageIgnore
  */
 public static function initialize(Jam_Meta $meta)
 {
     parent::initialize($meta);
     $meta->fields(array('is_payable' => Jam::field('boolean', array('default' => TRUE))));
 }
Пример #9
0
 public function price_for_purchase_item(Model_Purchase_Item $purchase_item)
 {
     $brand_purchase_price = $purchase_item->get_insist('brand_purchase')->total_price('product');
     return $brand_purchase_price->multiply_by($this->amount)->multiply_by(-1);
 }
Пример #10
0
 public function new_item_from(Model_Purchase_Item $purchase_item, Model_Location $location, Model_Shipping_Method $method = NULL)
 {
     $shipping = $purchase_item->get_insist('reference')->shipping();
     $fields = array('brand_purchase_shipping' => $this, 'purchase_item' => $purchase_item);
     return $shipping->new_shipping_item_from($fields, $location, $method);
 }