minishop2 доп.стоимость у метода оплаты.

При указании дополнительной стоимость на способ оплаты -5%, считается вместе с наценкой за доставку, подскажите как сделать что бы доп.стоимость начислялась только на сумму товара а доставка прибавлялась отдельно, думаю так логичней изначально сделать.
Александр
04 сентября 2017, 02:03
modx.pro
1 968
0

Комментарии: 6

Володя
04 сентября 2017, 11:12
0
Напишите свой класс заказа docs.modx.pro/components/minishop2/development/service/order
в нем измените метод getCost
    Александр
    04 сентября 2017, 11:22
    0
    Спасибо, подскажите для этой задачи что именно прописать в getCost?
      Володя
      04 сентября 2017, 11:27
      0
      что именно прописать в getCost?
      Думайте самостоятельно.
      Сначала выполните все шаги для подключения своего класса заказа, затем добавьте в него родной метод, а после измените его под вашу логику.
Александр
06 сентября 2017, 05:40
1
+1
Может кому пригодиться, исправленный метод getCost:

public function getCost($with_cart = true, $only_cost = false) {
		$response = $this->ms2->invokeEvent('msOnBeforeGetOrderCost', array(
			'order' => $this,
			'cart' => $this->ms2->cart,
			'with_cart' => $with_cart,
			'only_cost' => $only_cost,
		));
		if (!$response['success']) {return $this->error($response['message']);}

		$cart = $this->ms2->cart->status();
		$cost = $with_cart
			? $cart['total_cost']
			: 0;

        $add_price = 0;
         
		/* @var msDelivery $delivery */
		if (!empty($this->order['delivery']) && $delivery = $this->modx->getObject('msDelivery', $this->order['delivery'])) {
			//$cost = $delivery->getCost($this, $cost);
			$add_price += $delivery->getCost($this, $cost) - $cost;
			$deliveryCost = $delivery->getCost($this, 0);
			
		    //	$deliveryCost = $delivery->getCost($this, 0);//Добавил переменную где получаем price доставки
		}

		/* @var msPayment $payment */
		if (!empty($this->order['payment']) && $payment = $this->modx->getObject('msPayment', $this->order['payment'])) {
			
			 $add_price += $payment->getCost($this, $cost) - $cost;
			//$cost = $payment->getCost($this, $cost);
		}
        
        $cost += $add_price;
         
		$response = $this->ms2->invokeEvent('msOnGetOrderCost', array(
			'order' => $this,
			'cart' => $this->ms2->cart,
			'with_cart' => $with_cart,
			'only_cost' => $only_cost,
			'cost' => $cost
		));
		if (!$response['success']) {return $this->error($response['message']);}
		$cost = $response['data']['cost'];

		return $only_cost
			? $cost
			: $this->success('', array('cost' => $cost, 'delivery_cost'=>$deliveryCost));//Добавил deliveryCost
	}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6