Example #1
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);
 }
Example #2
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);
 }
Example #3
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);
 }