Exemplo n.º 1
0
 public function actionCreate()
 {
     $model = new TrMat();
     $Mattraffic = new Mattraffic();
     $mattraffic_number_max = NULL;
     // Если форма отправлена на сервер, получаем выбранную материальную ценность
     $id_mattraffic = isset(Yii::$app->request->post('TrMat')['id_mattraffic']) ? Yii::$app->request->post('TrMat')['id_mattraffic'] : '';
     $transaction = Yii::$app->db->beginTransaction();
     try {
         // Если форма отправлена на сервер, то создать запись перемещения мат цен-ти в mattraffic
         if (!empty($id_mattraffic)) {
             $Mattrafficcurrent = Mattraffic::findOne($id_mattraffic);
             $Mattraffic->attributes = $Mattrafficcurrent->attributes;
             $Mattraffic->mattraffic_date = date('Y-m-d');
             $Mattraffic->mattraffic_number = isset(Yii::$app->request->post('Mattraffic')['mattraffic_number']) ? Yii::$app->request->post('Mattraffic')['mattraffic_number'] : NULL;
             $Mattraffic->mattraffic_tip = 4;
             if (isset($Mattraffic->scenarios()['trafficmat'])) {
                 $Mattraffic->scenario = 'trafficmat';
             }
             if ($Mattraffic->validate()) {
                 $Mattraffic->save(false);
                 $model->load(Yii::$app->request->post());
                 $model->id_mattraffic = $Mattraffic->mattraffic_id;
             }
             //Акт установки уже создан и берется из URL параметра
             $model->id_installakt = (string) filter_input(INPUT_GET, 'idinstallakt');
         }
         // Сохраняем модель с отправленными данными и сохраненным mattraffic
         if (!$Mattraffic->isNewRecord && $model->save()) {
             $transaction->commit();
             return $this->redirect(Proc::GetPreviousURLBreadcrumbsFromSession());
         } else {
             /*                    // Очистить ошибку id_mattraffic, если есть ошибка по mattraffic_number (Превышено допустимое кол-во для перемещения матер. цен-ти)
                               if (isset($Mattraffic->errors['mattraffic_number']))
                               $model->clearErrors('id_mattraffic'); */
             $transaction->rollBack();
             return $this->render('create', ['model' => $model, 'Mattraffic' => $Mattraffic, 'mattraffic_number_max' => $mattraffic_number_max]);
         }
     } catch (Exception $e) {
         $transaction->rollBack();
         throw new Exception($e->getMessage());
     }
 }