/** * Updates positions using the calculations provided with [[getCalculation]] */ private function applyCalculations() { $currency = Yii::$app->params['currency']; foreach ($this->models as $position) { $id = $position->id; $calculation = $this->getCalculation($id); if (!$calculation instanceof Calculation) { Yii::error('Cart position "' . $position->getName() . '" was removed from the cart because of failed value calculation. Normally this should never happen.', 'hipanel.cart'); $this->cart->removeById($position->id); break; } $value = $calculation->forCurrency($currency); if (!$value instanceof Value) { Yii::error('Cart position "' . $position->getName() . '" was removed from the cart because calculation for currency "' . $currency . '" is not available', 'hipanel.cart'); $this->cart->removeById($position->id); break; } $position->setPrice($value->price); $position->setValue($value->value); } }