コード例 #1
0
 /**
  * Creates a new GlHeader model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate($es = null)
 {
     $model = new GlHeader();
     if (!empty($es)) {
         $details = [];
         foreach (EntriSheetDtl::findAll(['id_esheet' => $es]) as $eDtl) {
             /* @var $eDtl EntriSheetDtl */
             $details[$eDtl->nm_esheet_dtl] = new GlDetail(['id_coa' => $eDtl->id_coa]);
         }
         $model->populateRelation('glDetails', $details);
         $post = Yii::$app->request->post();
         if ($model->load($post)) {
             try {
                 $transaction = Yii::$app->db->beginTransaction();
                 $success = $model->save();
                 $success = $model->saveRelated('glDetails', $post, $success);
                 if ($success) {
                     $error = false;
                     $balance = 0.0;
                     foreach ($model->glDetails as $detail) {
                         $balance += $detail->amount;
                     }
                     if ($balance != 0) {
                         $model->addError('', 'Details should be balance');
                         $error = true;
                     }
                     //
                     if ($error) {
                         $transaction->rollBack();
                     } else {
                         $transaction->commit();
                         return $this->redirect(['view', 'id' => $model->id_gl]);
                     }
                 } else {
                     $transaction->rollBack();
                 }
             } catch (\Exception $exc) {
                 $transaction->rollBack();
                 $model->addError('', $exc->getMessage());
             }
         }
     }
     return $this->render('create', ['model' => $model, 'es' => $es]);
 }