/**
  * 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]);
     }
 }
Ejemplo n.º 2
0
 /**
  * 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]);
 }