/** * 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]); }