/** * Creates a new Comercios model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Comercios(); if ($model->load(Yii::$app->request->post())) { $cantProd = count($model->productos); $productos = ArrayHelper::map(Productos::find()->all(), 'idProd', 'nombre'); /*se crea el stock inicial para el comercio*/ for ($i = 0; $i < $cantProd; $i++) { $id = $model->productos[$i]; $modelStock = new Stock(); $modelStock->nombreComercio = $model->nombre; $modelStock->cantidadEnStock = 0; $modelStock->nombreProducto = $productos[$id]; $modelStock->save(); } $address = urlencode($model->direccion); $url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" . $address; $response = file_get_contents($url); $json = json_decode($response, true); if ($json['status'] == 'ZERO_RESULTS') { return array(); } $model->latitud = json_encode($json['results'][0]['geometry']['location']['lat']); $model->longitud = json_encode($json['results'][0]['geometry']['location']['lng']); if ($model->save()) { return $this->redirect(['view', 'id' => $model->idComercio]); } } else { return $this->render('create', ['model' => $model]); } }
/** * Creates a new Stock model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Stock(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Stock::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'cantidad' => $this->cantidad, 'id_producto' => $this->id_producto, 'id_ruta_diaria_com' => $this->id_ruta_diaria_com]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = StockModel::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'trade' => $this->trade, 'pricechange' => $this->pricechange, 'changepercent' => $this->changepercent, 'buy' => $this->buy, 'sell' => $this->sell, 'settlement' => $this->settlement, 'open' => $this->open, 'high' => $this->high, 'low' => $this->low, 'volume' => $this->volume, 'amount' => $this->amount, 'pb' => $this->pb, 'mktcap' => $this->mktcap, 'nmc' => $this->nmc, 'turnoverratio' => $this->turnoverratio, 'ticktime' => $this->ticktime, 'updated_at' => $this->updated_at, 'created_at' => $this->created_at]); $query->andFilterWhere(['like', 'symbol', $this->symbol])->andFilterWhere(['like', 'code', $this->code])->andFilterWhere(['like', 'name', $this->name]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Stock::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['idStock' => $this->idStock, 'cantidadEnStock' => $this->cantidadEnStock]); $query->andFilterWhere(['like', 'nombreComercio', $this->nombreComercio])->andFilterWhere(['like', 'nombreProducto', $this->nombreProducto]); return $dataProvider; }
/** Devuelve un numero de 0 a 100 que refleja la actividad del Relevador en esta ruta. **/ public function getCompletitudRecorrido() { if ($this->getRutaDiariaComercios()->count() > 0) { $cantidadComercios = $this->getRutaDiariaComercios()->count(); $rdComercios = $this->getRutaDiariaComercios()->all(); $comerciosRecorridos = 0; foreach ($rdComercios as $rdComercio) { if (Stock::find()->where(['id_ruta_diaria_com' => $rdComercio->id])->count() > 0) { $comerciosRecorridos++; } } return $comerciosRecorridos * 100 / $cantidadComercios; } else { return 0; } }
public function findStockComercio($id) { if ($models = Stock::find()->where(['id_ruta_diaria_com' => $id])->all() !== null) { return $models; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function actionStock($id) { $idStockDeComercio = array(); $arrayNombresProductos = array(); $cantStockDeComercio = array(); $conjuntoComercios = ArrayHelper::toArray(Comercios::find()->all()); $conjuntoStock = ArrayHelper::toArray(Stock::find()->all()); foreach ($conjuntoComercios as $value) { if ($value['idComercio'] == $id) { $nomComercio = $value['nombre']; } } foreach ($conjuntoStock as $value) { if ($value['nombreComercio'] == $nomComercio) { array_push($arrayNombresProductos, $value['nombreProducto']); //obtengo los nombres de los productos del stock de ese comercio array_push($idStockDeComercio, $value['idStock']); array_push($cantStockDeComercio, $value['cantidadEnStock']); } } return $this->render('stock', ['comerciostock' => $arrayNombresProductos, 'nombreComercio' => $nomComercio, 'idStockDeComercio' => $idStockDeComercio, 'cantStockDeComercio' => $cantStockDeComercio]); }
/** * Finds the Stock model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Stock the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Stock::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * 同步当前股票信息 */ public function actionSyncStock() { $sleep = 5; while (true) { try { $hourm = intval(date('Hm')); if ($hourm > 900 && $hourm < 1135 || $hourm > 1300 && $hourm < 1510) { $pici = time(); $url_arr = ['http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=10000&sort=changepercent&asc=0&node=sz_a&symbol=&_s_r_a=page&time=' . time(), 'http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=10000&sort=changepercent&asc=0&node=sh_a&symbol=&_s_r_a=page']; foreach ($url_arr as $url) { $return_arr = Common::reqUrl($url, [], true, 30, true); if ($return_arr['content']) { $arr = Common::ext_json_decode(mb_convert_encoding($return_arr['content'], "utf-8", "gbk"), true); if ($arr) { foreach ($arr as $row) { $Stock = Stock::find()->where(['symbol' => $row['symbol']])->one(); if ($Stock) { $Stock->scenario = 'update'; } else { $Stock = new Stock(['scenario' => 'create']); $Stock->updated_at = time(); } $save_arr = []; $save_arr['Stock'] = $row; if ($Stock->id && $row['trade'] != $Stock->trade) { $StockLog = new StockLog(['scenario' => 'create']); $StockLog->stock_id = $Stock->id; $StockLog->pici = $pici; $StockLog->setAttributes($Stock->attributes); $StockLog->id = ''; $StockLog->save(); } if ($Stock->load($save_arr) && $Stock->save()) { } } } } } } sleep($sleep); } catch (Exception $e) { } } }
/** * @return \yii\db\ActiveQuery */ public function getStocks() { return $this->hasMany(Stock::className(), ['id_producto' => 'id']); }
public function actionStock() { $params = Yii::$app->getRequest()->post(); $user = User::findIdentityByAccessToken($params['muli_token']); $valid = false; //return $params; $arrayStock = $params['stock']; foreach ($arrayStock as $stockEnv) { $rutaDiaria = RutaDiaria::find()->where(['id_usuario' => $user->id])->andWhere(['fecha' => date('Y-m-d')])->one(); $rutaDiariaComercio = RutaDiariaComercio::find()->where(['id_comercio' => $params['id_comercio']])->andWhere(['id_ruta_diaria' => $rutaDiaria->id])->one(); $stockIdProd = Stock::find()->where(['id_producto' => $stockEnv['id_producto']])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercio->id])->one(); if ($stockIdProd != null) { $stock = $stockIdProd; $stock->setAttribute('cantidad', $stockEnv['cant']); } else { $stock = new Stock(); $stock->setAttribute('id_ruta_diaria_com', $rutaDiariaComercio->id); $stock->setAttribute('id_producto', $stockEnv['id_producto']); $stock->setAttribute('cantidad', $stockEnv['cant']); } if ($stock->cantidad != 0) { if ($stock->validate()) { if ($stockIdProd != null) { //es un update del Stock, podemos haber realizado ya el calculo de la venta. $rutaDiariaComercioFecha = RutaDiariaComercio::find()->where('ruta_diaria_comercio.id !=' . $rutaDiariaComercio->id)->andWhere('ruta_diaria_comercio.id_ruta_diaria!=' . $rutaDiariaComercio->id_ruta_diaria)->andWhere(['ruta_diaria_comercio.id_comercio' => $rutaDiariaComercio->id_comercio])->joinWith(['idRutaDiaria' => function ($query) { //$query->where('MAX(ruta_diaria.fecha)'); $query->groupBy('ruta_diaria.id')->having('MAX(ruta_diaria.fecha)')->orderBy('fecha DESC'); }])->one(); $stockAnterior = Stock::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); $pedidoAnterior = Pedido::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); if ($stockAnterior != null) { $vendidos = $stockAnterior->cantidad - $stock->cantidad; if ($pedidoAnterior != null) { $vendidos = $vendidos + $pedidoAnterior->cantidad; } $compraProducto = ComercioProducto::find()->where(['id_comercio' => $params['id_comercio']])->andWhere(['id_producto' => $stock->id_producto])->andWhere(['fecha' => date('Y-m-d')])->one(); $compraProducto->setAttribute('vendidos', $vendidos); $compraProducto->save(); } } else { $rutaDiariaComercioFecha = RutaDiariaComercio::find()->where('ruta_diaria_comercio.id !=' . $rutaDiariaComercio->id)->andWhere('ruta_diaria_comercio.id_ruta_diaria!=' . $rutaDiariaComercio->id_ruta_diaria)->andWhere(['ruta_diaria_comercio.id_comercio' => $rutaDiariaComercio->id_comercio])->joinWith(['idRutaDiaria' => function ($query) { //$query->where('MAX(ruta_diaria.fecha)'); $query->groupBy('ruta_diaria.id')->having('MAX(ruta_diaria.fecha)')->orderBy('fecha DESC'); }])->one(); if ($rutaDiariaComercioFecha != null) { //return "existe?:".$stock->id_producto; $stockAnterior = Stock::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); $pedidoAnterior = Pedido::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); if ($stockAnterior != null) { $vendidos = $stockAnterior->cantidad - $stock->cantidad; if ($pedidoAnterior != null) { $vendidos = $vendidos + $pedidoAnterior->cantidad; } $compraProducto = new ComercioProducto(); $compraProducto->setAttribute('vendidos', $vendidos); $compraProducto->setAttribute('id_comercio', $params['id_comercio']); $compraProducto->setAttribute('id_producto', $stock->id_producto); $compraProducto->setAttribute('fecha', date('Y-m-d')); $compraProducto->save(); } } } if ($stock->save()) { $valid = true; } else { $valid = false; } } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save orders data...')); } } else { if ($stock->validate()) { $valid = true; } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save orders data...')); } } } return $valid; }
/** * @return \yii\db\ActiveQuery */ public function getStocks() { return $this->hasMany(Stock::className(), ['id_ruta_diaria_com' => 'id']); }