/** * * @param type $id * @return type */ public static function getName($id, $mode = 'name') { $good = \app\models\Goods::findOne($id); \app\models\GoodsT::$tabName = self::$goodTablePefix . $good->goods_type_type; $goodT = \app\models\GoodsT::findOne($id); // $arGoodsParamsNames = self::getGoodTypeParams($good->goods_type_type); $goodType = \app\models\GoodsType::findOne($good->goods_type_type); $arGoodsParamsNames = $goodType->getGoodsParamsNames()->orderBy('sort')->all(); $arParams = ['goodType' => $goodType->name]; foreach ($arGoodsParamsNames as $oParam) { $idParamVal = $goodT->{$oParam->id}; $oParamValue = \app\models\GoodsParams::findOne($idParamVal); $arParams[$oParam->id] = $oParamValue->public_value ? $oParamValue->public_value == \Yii::$app->params['emptyStringParam'] ? '' : $oParamValue->public_value : $oParamValue->value; } $tpl = $goodType->template_view; if ($mode == 'array') { return ['name' => self::fullName($arParams, $tpl), 'goodTipe' => $goodType, 'good' => $good, 'params' => $arGoodsParamsNames, 'values' => $arParams]; } return self::fullName($arParams, $tpl); }
public static function calc($goods_id, $providers_id, $priceType) { //Получить список наценок if (!isset(self::$arDisconts)) { $arODisconts = \app\models\Discounts::find()->where('price_type_id = :price_type_id', [':price_type_id' => $priceType])->asArray()->all(); self::$arDisconts = []; foreach ($arODisconts as $arDiscont) { $arP = explode(';', $arDiscont['params']); $arV = explode(';', $arDiscont['values']); $arW = []; foreach ($arP as $key => $value) { if ($value) { $arW[$value] = $arV[$key]; } } $arDiscont['arPV'] = $arW; self::$arDisconts[$arDiscont['providers_id']][$arDiscont['goods_type_type']][] = $arDiscont; } } //Получить свойства товара $good = \app\models\Goods::findOne($goods_id); $goodT = \yii\helpers\ArrayHelper::toArray($good->getGoodsT()); //Для каждой наценки проверить - подходит ли товар под нее $dds = self::$arDisconts[$providers_id][$good->goods_type_type]; $k = 1; $arK = []; if (!is_array($dds)) { return 1; } foreach ($dds as $arDiscount) { if (count(array_intersect_assoc($arDiscount['arPV'], $goodT)) == count($arDiscount['arPV'])) { $k = $k * $arDiscount['coef']; $arK[] = $arDiscount['coef']; } } return $k > 1 ? $k : 1; }
/** * Finds the Goods model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Goods the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Goods::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }