add changes to procurement
This commit is contained in:
@@ -9,6 +9,8 @@ use yii\web\Controller;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\filters\VerbFilter;
|
||||
use common\models\Warehouse;
|
||||
use common\models\Product;
|
||||
use common\models\User;
|
||||
|
||||
/**
|
||||
* ProcurementController implements the CRUD actions for Procurement model.
|
||||
@@ -33,12 +35,20 @@ class ProcurementController extends Controller
|
||||
*/
|
||||
public function actionIndex()
|
||||
{
|
||||
|
||||
$warehouses = Warehouse::read(null);
|
||||
$products = Product::read(null);
|
||||
$users = User::read(null);
|
||||
|
||||
$searchModel = new ProcurementSearch();
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
|
||||
return $this->render('index', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider,
|
||||
'users' => $users,
|
||||
'products' => $products,
|
||||
'warehouses' => $warehouses,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -62,12 +72,42 @@ class ProcurementController extends Controller
|
||||
public function actionCreate()
|
||||
{
|
||||
$model = new Procurement();
|
||||
$model->scenario = 'create_general';
|
||||
|
||||
$model->id_user = Yii::$app->user->id;
|
||||
|
||||
$warehouses = Warehouse::read(null);
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
if ( count($warehouses) <= 0 ){
|
||||
throw new NotFoundHttpException( Yii::t('common/procurement' ,'No active warehouse found.' ));
|
||||
}
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
|
||||
|
||||
$connection = \Yii::$app->db;
|
||||
|
||||
$transaction = $connection->beginTransaction();
|
||||
|
||||
try {
|
||||
|
||||
$product = Product::findOne( $model->id_product );
|
||||
$model->stock = $product->stock;
|
||||
$result = $model->save(false);
|
||||
|
||||
$product->stock = $product->stock + $model->count;
|
||||
$result &= $product->save(false);
|
||||
|
||||
if ($result) {
|
||||
$transaction->commit();
|
||||
} else {
|
||||
$transaction->rollback();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$transaction->rollback();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
|
||||
return $this->redirect(['view', 'id' => $model->id_procurement]);
|
||||
} else {
|
||||
return $this->render('create', [
|
||||
@@ -76,39 +116,64 @@ class ProcurementController extends Controller
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an existing Procurement model.
|
||||
* If update is successful, the browser will be redirected to the 'view' page.
|
||||
* @param integer $id
|
||||
* Creates a new Procurement model.
|
||||
* If creation is successful, the browser will be redirected to the 'view' page.
|
||||
* @return mixed
|
||||
*/
|
||||
public function actionUpdate($id)
|
||||
public function actionCreateProduct($id)
|
||||
{
|
||||
$model = $this->findModel($id);
|
||||
|
||||
$product = $this->findProduct($id);
|
||||
|
||||
$model = new Procurement();
|
||||
|
||||
$warehouses = Warehouse::read(null);
|
||||
|
||||
$model->id_user = Yii::$app->user->id;
|
||||
$model->id_product = $product->id_product;
|
||||
$model->stock = $product->stock;
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
$warehouses = Warehouse::read(null);
|
||||
|
||||
if ( count($warehouses) <= 0 ){
|
||||
throw new NotFoundHttpException( Yii::t('common/procurement' ,'No active warehouse found.' ));
|
||||
}
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
|
||||
|
||||
$connection = \Yii::$app->db;
|
||||
|
||||
$transaction = $connection->beginTransaction();
|
||||
|
||||
try {
|
||||
|
||||
$result = $model->save(false);
|
||||
|
||||
$product->stock = $product->stock + $model->count;
|
||||
$result &= $product->save(false);
|
||||
|
||||
if ($result) {
|
||||
$transaction->commit();
|
||||
} else {
|
||||
$transaction->rollback();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$transaction->rollback();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
|
||||
return $this->redirect(['view', 'id' => $model->id_procurement]);
|
||||
} else {
|
||||
return $this->render('update', [
|
||||
return $this->render('create_product', [
|
||||
'model' => $model,
|
||||
'warehouses' =>$warehouses,
|
||||
'product' => $product
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an existing Procurement model.
|
||||
* If deletion is successful, the browser will be redirected to the 'index' page.
|
||||
* @param integer $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function actionDelete($id)
|
||||
{
|
||||
$this->findModel($id)->delete();
|
||||
|
||||
return $this->redirect(['index']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the Procurement model based on its primary key value.
|
||||
* If the model is not found, a 404 HTTP exception will be thrown.
|
||||
@@ -124,4 +189,19 @@ class ProcurementController extends Controller
|
||||
throw new NotFoundHttpException('The requested page does not exist.');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Finds the Product model based on its primary key value.
|
||||
* If the model is not found, a 404 HTTP exception will be thrown.
|
||||
* @param integer $id
|
||||
* @return Procurement the loaded model
|
||||
* @throws NotFoundHttpException if the model cannot be found
|
||||
*/
|
||||
protected function findProduct($id)
|
||||
{
|
||||
if (($model = Product::findOne($id)) !== null) {
|
||||
return $model;
|
||||
} else {
|
||||
throw new NotFoundHttpException('The requested page does not exist.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user