/** * Creates a new UfTitularidadPersonas model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new UfTitularidadPersonas(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * Creates a new UfTitularidad model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate($uf) { $model = new UfTitularidad(); $model->id_uf = $uf; $titPers = new UfTitularidadPersonas(); if ($model->load(Yii::$app->request->post())) { if ($model->validate()) { $titPers->load(Yii::$app->request->post()); $sessPersonas = \Yii::$app->session->get('titpersonas'); if (!$sessPersonas) { \Yii::$app->session->addFlash('danger', 'Debe especificar al menos una persona'); } else { // Comienza Transaccion $transaction = Yii::$app->db->beginTransaction(); try { // busca la UF $UfModel = Uf::findOne($model->id_uf); // guarda el id del ultimo movimiento de titularidad if (!empty($UfModel->ultUfTitularidad->id)) { $idUltTitularidad = $UfModel->ultUfTitularidad->id; // busca el ultimo movimiento de titularidad $ultMovimTit = UfTitularidad::findOne($idUltTitularidad); // actualizar el campo ultima en false para que no sea mas la ultima titularidad $ultMovimTit->ultima = false; $ultMovimTit->save(false); } // ultima en true indica que es el ultimo movimiento de titularidad (el que se esta grabando en este momento) $model->ultima = true; $model->save(false); // elimina todos los autorizantes actuales de la unidad para reemplazarlos con los nuevos Autorizantes::deleteAll(['id_uf' => $model->id_uf]); $aut = new Autorizantes(); $aut->id_uf = $model->id_uf; // grabación de personas $titPers->uf_titularidad_id = $model->id; if ($model->tipoMovim->cesion) { $titPers->tipo = UfTitularidadPersonas::TIPO_CES; } else { $titPers->tipo = UfTitularidadPersonas::TIPO_TIT; } foreach ($sessPersonas as $titPers->id_persona) { // graba en UfTitularidadPersonas $titPers->id = null; $titPers->isNewRecord = true; $titPers->save(false); // graba en Autorizantes $aut->id = null; $aut->isNewRecord = true; $aut->id_persona = $titPers->id_persona; $aut->save(false); } // foreach sessPersonas if ($model->tipoMovim->cesion) { // si es una cesion, las personas de $sessPersonas se grabaron como cesionarios, // entonces se debe grabar a los titulares originales como cedentes $ultTitulares = UfTitularidadPersonas::find()->where(['uf_titularidad_id' => $idUltTitularidad])->all(); foreach ($ultTitulares as $ut) { $titPers->id = null; $titPers->isNewRecord = true; $titPers->id_persona = $ut->id_persona; $titPers->tipo = UfTitularidadPersonas::TIPO_CED; $titPers->observaciones = $ut->observaciones; $titPers->save(false); } } // Todo bien $transaction->commit(); \Yii::$app->session->addFlash('success', 'Movimiento grabado correctamente'); // limpia todo \Yii::$app->session->remove('titpersonas'); return $this->redirect(['view', 'id' => $model->id]); } catch (\Exception $e) { $transaction->rollBack(); Yii::$app->session->addFlash('danger', 'Hubo un error en la grabación'); throw $e; } // try..catch } // else !sessPersonas } // $model->validate } // $model->load $listas = $this->refreshListas(); return $this->render('create', ['model' => $model, 'titPers' => $titPers, 'tmpListas' => $listas]); }