Пример #1
0
 /**
  * Creates a new Produto model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Produto();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->prod_codigo]);
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
 /**
  * Creates a new Produto model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $modelProduto = new Produto();
     $mensagem = "";
     //Informa ao usuário mensagens de erro na view
     $modelInsumo = new Insumo();
     $categorias = ArrayHelper::map(Categoria::find()->all(), 'idCategoria', 'nome');
     $insumos = ArrayHelper::map(Produto::find()->where(['isInsumo' => 1])->all(), 'idProduto', 'nome');
     if ($modelProduto->load(Yii::$app->request->post())) {
         //Faz o upload da image
         $modelProduto->imageFile = UploadedFile::getInstance($modelProduto, 'imageFile');
         if (isset($modelProduto->imageFile)) {
             //Converte a imagem em binário
             $modelProduto->foto = file_get_contents($modelProduto->imageFile->tempName);
         }
         //Inicia a transação:
         $transaction = \Yii::$app->db->beginTransaction();
         try {
             //Tenta salvar um registro :
             if ($modelProduto->save()) {
                 $itensInseridos = true;
                 if (!Yii::$app->request->post()['Produto']['isInsumo']) {
                     //Recebe os insumos do Produto Venda
                     $aux = Yii::$app->request->post()['Insumo'];
                     $numeroDeInsumo = count($aux['idprodutoInsumo']);
                     for ($i = 0; $i < $numeroDeInsumo; $i++) {
                         if ($aux['idprodutoInsumo'][$i] > 0) {
                             Yii::$app->db->createCommand("INSERT INTO insumo\n                    (idprodutoVenda, idprodutoInsumo,\n                      quantidade,unidade ) \n                  VALUES (:idprodutoVenda, :idprodutoInsumo,\n                    :quantidade,:unidade)", [':idprodutoVenda' => $modelProduto->idProduto, ':idprodutoInsumo' => $aux['idprodutoInsumo'][$i], ':quantidade' => $aux['quantidade'][$i], ':unidade' => $aux['unidade'][$i]])->execute();
                         }
                     }
                     $modelProduto->valorVenda = $modelProduto->calculoPrecoProduto($modelProduto->idProduto);
                     if (!$modelProduto->save()) {
                         $mensagem = "Não foi possível salvar os dados";
                         $transaction->rollBack();
                         //desfaz alterações no BD
                         $itensInseridos = false;
                     }
                     if ($itensInseridos) {
                         $transaction->commit();
                         return $this->redirect(['definirvalorprodutovenda', 'idProduto' => $modelProduto->idProduto]);
                     }
                 }
                 if ($itensInseridos) {
                     $transaction->commit();
                     return $this->redirect(['view', 'id' => $modelProduto->idProduto]);
                 }
             }
         } catch (\Exception $exception) {
             $transaction->rollBack();
             $mensagem = "Ocorreu uma falha inesperada ao tentar salvar ";
         }
     }
     $modelProduto->quantidadeEstoque = 0;
     $modelProduto->quantidadeMinima = 0;
     return $this->render('create', ['modelProduto' => $modelProduto, 'categorias' => $categorias, 'insumos' => $insumos, 'modelInsumo' => $modelInsumo, 'mensagem' => $mensagem]);
 }