add changes to procurement

This commit is contained in:
2015-09-25 17:25:16 +02:00
parent 28caac03dc
commit 5c9db98110
14 changed files with 1478 additions and 87 deletions

View File

@@ -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.');
}
}
}