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; }
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; }