public function initAccounts()
 {
     //create default account for balance Item
     $account = new Account();
     $account->name = $this->name;
     $account->balance_item_id = $this->id;
     $errors = [];
     if ($account->save()) {
         //for all existed balance items create amount for default account
         $bSheets = BalanceSheet::find()->all();
         $success = true;
         foreach ($bSheets as $sheet) {
             if (isset($sheet->id)) {
                 $amount = new BalanceAmount();
                 $amount->account_id = $account->id;
                 $amount->balance_sheet_id = $sheet->id;
                 $amount->amount = 0;
                 if (!$amount->save()) {
                     $success = false;
                     $errors['amount'] = $amount->errors;
                 }
             }
         }
         if ($success) {
             return false;
         }
     } else {
         $errors['account'] = $account->errors;
     }
     $errors['message'] = "Errors in BalanceItem::initAccounts()";
     return $errors;
 }
 /**
 For each account create an item. If previous balance sheet exists and has value - set it as default, otherwise - set to zero
 */
 public function initAmounts()
 {
     $accounts = Account::find()->orderBy('order_code')->all();
     $prevBalance = $this->getPreviouBalance();
     for ($i = 0; $i < count($accounts); $i++) {
         $amount = new BalanceAmount();
         $amount->account_id = $accounts[$i]->id;
         $amount->balance_sheet_id = $this->id;
         $amount->amount = $prevBalance ? $prevBalance->balanceAmounts[$i]->amount : 0;
         $amount->save();
     }
 }
 public function actionCreateMaster($item_id, $sheet_id)
 {
     $item = BalanceItem::findOne($item_id);
     foreach ($item->accounts as $account) {
         $model = new BalanceAmount();
         $model->account_id = $account->id;
         $model->balance_sheet_id = $sheet_id;
         $model->amount = 0;
         $model->save();
     }
     return $this->redirect(['master/index']);
 }