_orderTotalFactory = $orderTotalFactory; } /** * Init model class by configuration * * @param string $class * @param string $totalCode * @param array $totalConfig * @return \Magento\Sales\Model\Order\Total\AbstractTotal * @throws \Magento\Framework\Exception\LocalizedException */ protected function _initModelInstance($class, $totalCode, $totalConfig) { $model = $this->_orderTotalFactory->create($class); if (!$model instanceof \Magento\Sales\Model\Order\Total\AbstractTotal) { throw new \Magento\Framework\Exception\LocalizedException( __('The total model should be extended from \Magento\Sales\Model\Order\Total\AbstractTotal.') ); } $model->setCode($totalCode); $model->setTotalConfigNode($totalConfig); $this->_modelsConfig[$totalCode] = $this->_prepareConfigArray($totalCode, $totalConfig); $this->_modelsConfig[$totalCode] = $model->processConfigArray($this->_modelsConfig[$totalCode]); return $model; } /** * Retrieve total calculation models * * @return array */ public function getTotalModels() { if (empty($this->_totalModels)) { $this->_initModels(); $this->_initCollectors(); $this->_totalModels = $this->_collectors; } return $this->_totalModels; } }