phdorocha
(Phdorocha)
April 16, 2016, 5:21am
1
Estou tentando alterar o campo ‘prod_qtde’ na tabela ‘produtos’ quando salvar usando o form de Itens do pedido usando no ‘ItemPedidoController’ a função:
public function actionCreate()
{
$model = new ItemPedido();
$produto = new Produtos();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
if($model->validate()) {
$produto->attributes = $model->produto_id;
$qtde_old = $produto->prod_qtde;
$qtde_new = $qtde_old - $model->quantidade;
$produto->prod_qtde = $qtde_new;
$produto->save();
}
return $this->redirect(['pedido/view', 'id' => $model->pedido_id, 'produto_id' => $model->produto_id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
Quando incluir um item de venda, diminuir o estoque. Como faço?
luanjp
(Luanjp Ns)
April 16, 2016, 1:07pm
2
Opa seria quando salvar um pedido, diminuir a quantidade na tabela ??
se for, dpois do SAVE() coloca um comando update na tabela retirando a quantidade q foi vendida.
phdorocha
(Phdorocha)
April 17, 2016, 12:22am
3
Opa seria quando salvar um pedido, diminuir a quantidade na tabela ??
se for, dpois do SAVE() coloca um comando update na tabela retirando a quantidade q foi vendida.
Isso mesmo, só não entendi como seria o update.
Não seria interessante colocar essa regra diretamente no Model de ItemPedido? Pesquise sobre o método afterSave.
Espero ter ajudado.
phdorocha
(Phdorocha)
April 19, 2016, 2:22am
5
Muito obrigado amigo. Suas dicas ajudaram muito.
Ficou assim:
public function actionCreate()
{
$model = new ItemPedido();
$produto = new Produtos();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$qtde_old =0;
$qtde_new=0;
$qtde_old = Produtos::findOne($model->produto_id)->prod_qtde;
$qtde_new = $qtde_old - $model->quantidade;
$produto->updateAll(['prod_qtde'=>$qtde_new],['id'=>$model->produto_id]);
Yii::$app->session->setFlash('Message', 'Produto incluído.');
return $this->redirect(['pedido/view', 'id' => $model->pedido_id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
[RESOLVIDO]