/** * Get surcharge totals * * @return array */ public function getSurchargeTotals() { $surcharges = array(); $rawSurcharges = \XLite::isAdminZone() ? array_merge($this->getExcludeSurcharges(), $this->getIncludeSurcharges()) : $this->getExcludeSurcharges(); foreach ($rawSurcharges as $surcharge) { $code = $surcharge->getCode(); if (!isset($surcharges[$code])) { $modifierClass = $surcharge->getClass(); $surcharges[$code] = array('name' => $surcharge->getTypeName(), 'cost' => 0, 'available' => $surcharge->getAvailable(), 'count' => 0, 'lastName' => null, 'code' => $code, 'widget' => \Includes\Utils\Operator::checkIfClassExists($modifierClass) ? $modifierClass::getWidgetClass() : \XLite\Logic\Order\Modifier\AModifier::getWidgetClass(), 'object' => $surcharge); } $surcharges[$code]['cost'] += $surcharge->getValue(); $surcharges[$code]['count']++; $surcharges[$code]['lastName'] = $surcharge->getName(); $surcharges[$code]['weight'] = $surcharge->getSortingWeight(); } uasort($surcharges, function ($a, $b) { return $a['weight'] < $b['weight'] ? -1 : $a['weight'] > $b['weight']; }); return $surcharges; }
/** * Assemble default dump surcharge * * @param string $type Type * @param string $code Code * @param string $class Class * @param string $name Name * * @return array */ protected function assembleDefaultDumpSurcharge($type, $code, $class, $name) { $surcharge = new \XLite\Model\Order\Surcharge(); $surcharge->setType($type); $surcharge->setCode($code); $surcharge->setClass($class); $surcharge->setValue(0); $surcharge->setName($name); $surcharge->setOwner(static::getTemporaryOrder($this->getOrder()->getOrderId(), false) ?: $this->getOrder()); return array('name' => $surcharge->getTypeName(), 'cost' => $surcharge->getValue(), 'available' => $surcharge->getAvailable(), 'count' => 1, 'lastName' => $surcharge->getName(), 'code' => $surcharge->getCode(), 'widget' => \Includes\Utils\Operator::checkIfClassExists($class) ? $class::getWidgetClass() : \XLite\Logic\Order\Modifier\AModifier::getWidgetClass(), 'object' => $surcharge); }