/** * Creates a new RutaDiaria model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate($idRuta) { $model = new RutaDiaria(); $ruta = Ruta::find()->where(['id' => $idRuta])->one(); $ordenComercios = OrdenComercio::find()->where(['id_ruta' => $idRuta])->all(); $model->id_usuario = $ruta->id_usuario; $model->fecha = date("Y-m-d"); if (!$this->existeRutaDiariaPorUsuarioYFecha($model->id_usuario, $model->fecha)) { $idRutaDiaria = $model->save(); if ($idRutaDiaria !== false) { $orden = 1; foreach ($ordenComercios as $ordenComercio) { $rutaDiariaComercio = new RutaDiariaComercio(); $rutaDiariaComercio->id_comercio = $ordenComercio->id_comercio; $rutaDiariaComercio->link("idRutaDiaria", $model); $rutaDiariaComercio->orden = $orden; $rutaDiariaComercio->save(); $orden++; } } Yii::$app->getSession()->setFlash('success', Yii::t('core', 'Daily Route has been created')); } else { Yii::$app->getSession()->setFlash('danger', Yii::t('core', 'There is already an instance of this route for today')); } return $this->redirect(['ruta/view', 'id' => $idRuta]); }
/** * Creates a new RutaDiariaComercio model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new RutaDiariaComercio(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
public function actionPedido() { $params = Yii::$app->getRequest()->post(); $usuario = User::findIdentityByAccessToken($params['muli_token']); $arrayProductos = $params['productos']; $valid = false; foreach ($arrayProductos as $productos) { $rutaDiaria = RutaDiaria::find()->where(['id_usuario' => $usuario->id])->andWhere(['fecha' => date('Y-m-d')])->one(); $rutaDiariaComercio = RutaDiariaComercio::find()->where(['id_comercio' => $params['id_comercio']])->andWhere(['id_ruta_diaria' => $rutaDiaria->id])->one(); $pedidoIdProd = Pedido::find()->where(['id_producto' => $productos['id_producto']])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercio->id])->one(); if ($pedidoIdProd != null) { $pedido = $pedidoIdProd; $pedido->setAttribute('cantidad', $productos['cant']); } else { $pedido = new Pedido(); $pedido->setAttribute('id_producto', $productos['id_producto']); $pedido->setAttribute('id_ruta_diaria_com', $rutaDiariaComercio->id); $pedido->setAttribute('cantidad', $productos['cant']); } if ($pedido->cantidad != 0) { if ($pedido->validate() && $pedido->save()) { $valid = true; } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save route with id: ' . $rutaDiariaComercio->id . '')); } } else { if ($pedido->validate()) { $valid = true; } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save route with id: ' . $rutaDiariaComercio->id . '')); } } } return $valid; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = RutaDiariaComercio::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, 'orden' => $this->orden, 'id_ruta_diaria' => $this->id_ruta_diaria, 'id_comercio' => $this->id_comercio]); return $dataProvider; }
public function findRutasComercio($id) { if ($models = RutaDiariaComercio::find()->where(['id_ruta_diaria' => $id])->all() !== null) { return $models; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * @return \yii\db\ActiveQuery */ public function getIdRutaDiariaCom() { return $this->hasOne(RutaDiariaComercio::className(), ['id' => 'id_ruta_diaria_com']); }
/** * @return \yii\db\ActiveQuery */ public function getRutaDiariaComercios() { return $this->hasMany(RutaDiariaComercio::className(), ['id_ruta_diaria' => 'id']); }
private function cargarArrayPedidos($idComercio, $fechaDesde, $fechaHasta) { $respuesta = []; $queryRutaDiaria = RutaDiaria::find()->select('id')->where(['between', 'fecha', $fechaDesde, $fechaHasta]); $queryRutaDiariaCom = RutaDiariaComercio::find()->where(['ruta_diaria_comercio.id_comercio' => $idComercio])->andWhere(['in', 'id_ruta_diaria', $queryRutaDiaria]); if ($queryRutaDiariaCom->count() > 0) { $rutaDiariaComercios = $queryRutaDiariaCom->all(); $pedidos = []; $i = 0; foreach ($rutaDiariaComercios as $rutaDiariaComercio) { if (Pedido::find()->where(['id_ruta_diaria_com' => $rutaDiariaComercio->id])->count() > 0) { $pedidosRutaDiariaComercio = Pedido::find()->where(['id_ruta_diaria_com' => $rutaDiariaComercio->id])->all(); foreach ($pedidosRutaDiariaComercio as $pedido) { $pedidos[$i] = $pedido; $i++; } } } if (count($pedidos) > 0) { foreach ($pedidos as $pedido) { if (isset($respuesta[$pedido->id_producto])) { $respuesta[$pedido->id_producto]['cantidad'] = $respuesta[$pedido->id_producto]['cantidad'] + $pedido->cantidad; } else { $nombreProducto = Producto::Find()->select('nombre')->where(['id' => $pedido->id_producto])->one()->nombre; $respuesta[$pedido->id_producto] = ['nombre' => $nombreProducto, 'cantidad' => $pedido->cantidad]; } } } } return $respuesta; }
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; }