public function validaUfValida($attribute, $params) { if (!empty($this->id_uf)) { $u = Uf::findOne($this->id_uf); if ($u->estado == 0) { $uf_generica = \Yii::$app->params['uf.generica']; if ($uf_generica !== $u->id) { $this->addError('id_uf', 'La UF está dada de baja'); return; } } } }
/** * Finds the Uf model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Uf the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Uf::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * 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]); }
border-top-right-radius: 2px; } .table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td { padding: 1px; } '); ?> <div class="uf-titularidad-form"> <?php $UfModel = Uf::findOne($model->id_uf); if (!empty($UfModel->ultUfTitularidad->id)) { $puedeCambiarTipoMovim = true; $query = UfTitularidadPersonas::find()->joinWith('persona')->where(['uf_titularidad_id' => $UfModel->ultUfTitularidad->id]); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['tipo' => SORT_DESC], 'enableMultiSort' => true]]); $xDefecto = UfTitularidad::findOne($UfModel->ultUfTitularidad->id); $model->exp_telefono = $xDefecto->exp_telefono; $model->exp_direccion = $xDefecto->exp_direccion; $model->exp_localidad = $xDefecto->exp_localidad; $model->exp_email = $xDefecto->exp_email; echo GridView::widget(['dataProvider' => $dataProvider, 'condensed' => true, 'layout' => '{items}', 'panel' => ['type' => GridView::TYPE_INFO, 'heading' => 'Titularidad actual sobre U.F.' . $model->id_uf, 'footer' => false, 'before' => false, 'after' => false], 'panelHeadingTemplate' => '{heading}', 'resizableColumns' => false, 'columns' => [['attribute' => 'tipo', 'value' => function ($model) { return UfTitularidadPersonas::getTipos($model->tipo); }], 'id_persona', 'persona.apellido', 'persona.nombre', 'persona.nombre2', 'persona.tipoDoc.desc_tipo_doc_abr', 'persona.nro_doc', 'observaciones']]); } else { $puedeCambiarTipoMovim = false; }