public function actionDefuncion() { $model = new Defuncion(); $partidaModelo = new Partida(); $conexion = \Yii::$app->db; $transaccion = $conexion->beginTransaction(); if ($model->load(Yii::$app->request->post()) && $partidaModelo->load(Yii::$app->request->post())) { require_once '../auxiliar/Auxiliar.php'; $partidaModelo->cod_empleado = Yii::$app->user->identity->persona->codEmpleado->codigo; $partidaModelo->tipo = "Defuncion"; $model->cod_partida = 0; $codlibro = Libro::find()->select('codigo')->where("tipo = 'Defuncion'")->andWhere("anyo = :an", [':an' => date('Y')])->andWhere('numero = :valor', [':valor' => $_POST['Partida']['num_libro']])->one()->codigo; $partidaModelo->cod_libro = $codlibro; if ($model->validate() && $partidaModelo->validate()) { try { $partidaModelo->fecha_emision = fechaMySQL($partidaModelo->fecha_emision); $partidaModelo->fecha_suceso = fechaMySQL($partidaModelo->fecha_suceso); $partidaModelo->hora_suceso = horaMySQL($partidaModelo->hora_suceso); if ($partidaModelo->save()) { //Recupero el valor de id con el cual se inserto $ulid = $conexion->getLastInsertID(); $model->cod_partida = $ulid; //Guardo el registro de defuncion if (!$model->save()) { throw new UserException('No se pudo guardar el registro de defunción, intente nuevamente'); } //Actualizar el folio actual del libro if ($conexion->createCommand("update libro set folio_actual = folio_actual + 1 where codigo = " . $codlibro)->execute() <= 0) { throw new UserException('No se pudo actualizar el libro de partidas, intente nuevamente'); } //Hay que actualizar el estado de la persona para reflejar que esta inactivo if ($conexion->createCommand("update persona set estado = 'Inactivo' where codigo = " . $_POST['Defuncion']['cod_difunto'])->execute() <= 0) { throw new UserException('No se pudo actualizar el estado de la persona, intente nuevamente'); } $transaccion->commit(); Yii::$app->session->setFlash('success', 'Partida guardada con éxito'); return $this->redirect(['defuncion']); } else { throw new UserException('No se pudo guardar el registro de partida, intente nuevamente'); } return; } catch (UserException $err) { $transaccion->rollback(); Yii::$app->session->setFlash('error', $err->getMessage()); return $this->redirect(['defuncion']); } } else { Yii::$app->session->setFlash('error', 'El modelo no cumple con la validación'); } } return $this->render('rdefuncion', ['model' => $model, 'partida' => $partidaModelo]); }
/** * @return \yii\db\ActiveQuery */ public function getDefuncion() { return $this->hasOne(Defuncion::className(), ['cod_difunto' => 'codigo']); }
/** * @return \yii\db\ActiveQuery */ public function getDefuncions() { return $this->hasMany(Defuncion::className(), ['cod_causa' => 'codigo']); }