Merge branch 'feature-62607/konto_oh_beitrag_betrag_aus_eigener_tabelle'

This commit is contained in:
Harald Bamberger
2026-05-05 08:46:22 +02:00
4 changed files with 110 additions and 8 deletions
@@ -48,7 +48,8 @@ class Konto extends FHCAPI_Controller
// Load language phrases // Load language phrases
$this->loadPhrases([ $this->loadPhrases([
'konto' 'konto',
'lehre'
]); ]);
} }
@@ -112,7 +113,7 @@ class Konto extends FHCAPI_Controller
* *
* @return void * @return void
*/ */
public function getBuchungstypen() public function getBuchungstypen($studiensemester_kurzbz = null)
{ {
$this->load->model('crm/Buchungstyp_model', 'BuchungstypModel'); $this->load->model('crm/Buchungstyp_model', 'BuchungstypModel');
@@ -122,6 +123,7 @@ class Konto extends FHCAPI_Controller
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$this->_getOEHBeitrag($data, $studiensemester_kurzbz);
$this->terminateWithSuccess($data); $this->terminateWithSuccess($data);
} }
@@ -494,4 +496,43 @@ class Konto extends FHCAPI_Controller
$this->terminateWithSuccess(); $this->terminateWithSuccess();
} }
private function _getOEHBeitrag(&$data, $studiensemester_kurzbz = null)
{
if (is_null($studiensemester_kurzbz))
{
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
$studiensemester_akt = $this->variablelib->getVar('semester_aktuell');
}
else
{
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
if ($this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz))
$studiensemester_akt = $studiensemester_kurzbz;
else
$this->terminateWithError($this->p->t('lehre', 'error_noStudiensemester'));
}
$this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel');
$oehBeitrag = $this->OehbeitragModel->getByStudiensemester($studiensemester_akt);
$oehStandardbetrag = null;
if (hasData($oehBeitrag))
{
$oeh = getData($oehBeitrag)[0];
$summe = ($oeh->studierendenbeitrag + $oeh->versicherung) * -1;
$oehStandardbetrag = number_format((float)$summe, 2, '.', '');
}
if ($oehStandardbetrag !== null)
{
$data = array_map(function ($buchungstyp) use ($oehStandardbetrag) {
if (isset($buchungstyp->buchungstyp_kurzbz) && (strtolower($buchungstyp->buchungstyp_kurzbz) === 'oeh'))
{
$buchungstyp->standardbetrag = $oehStandardbetrag;
}
return $buchungstyp;
}, $data);
}
}
} }
+43
View File
@@ -25,6 +25,7 @@
*/ */
require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/'.EXT_FKT_PATH.'/generateZahlungsreferenz.inc.php'); require_once(dirname(__FILE__).'/'.EXT_FKT_PATH.'/generateZahlungsreferenz.inc.php');
require_once(dirname(__FILE__).'/variable.class.php');
class konto extends basis_db class konto extends basis_db
{ {
@@ -432,6 +433,8 @@ class konto extends basis_db
$qry.=" ORDER BY beschreibung"; $qry.=" ORDER BY beschreibung";
$oehBeitrag = $this->_getOEHBeitrag();
if($this->db_query($qry)) if($this->db_query($qry))
{ {
while($row = $this->db_fetch_object()) while($row = $this->db_fetch_object())
@@ -440,7 +443,15 @@ class konto extends basis_db
$typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz; $typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz;
$typ->beschreibung = $row->beschreibung; $typ->beschreibung = $row->beschreibung;
if (strtolower($typ->buchungstyp_kurzbz) === 'oeh' && $oehBeitrag)
{
$typ->standardbetrag = $oehBeitrag;
}
else
{
$typ->standardbetrag = $row->standardbetrag; $typ->standardbetrag = $row->standardbetrag;
}
$typ->standardtext = $row->standardtext; $typ->standardtext = $row->standardtext;
$typ->credit_points = $row->credit_points; $typ->credit_points = $row->credit_points;
$typ->aktiv = $this->db_parse_bool($row->aktiv); $typ->aktiv = $this->db_parse_bool($row->aktiv);
@@ -990,6 +1001,38 @@ class konto extends basis_db
return false; return false;
} }
} }
private function _getOEHBeitrag()
{
$variablen_obj = new variable();
$variablen_obj->loadVariables(get_uid());
$qry = "WITH semstart AS (
SELECT start FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = '". $this->db_escape($variablen_obj->variable->semester_aktuell) . "'
)
SELECT * FROM bis.tbl_oehbeitrag oehb
JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz
JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date)
ORDER BY semvon.start
LIMIT 1";
if ($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$summe = ($row->studierendenbeitrag + $row->versicherung) * -1;
return number_format((float)$summe, 2, '.', '');
}
return false;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
} }
?> ?>
+7 -3
View File
@@ -73,10 +73,14 @@ export default {
params: { buchungsnr } params: { buchungsnr }
}; };
}, },
getBuchungstypen() { getBuchungstypen(studiensemester_kurzbz) {
let url = 'api/frontend/v1/stv/konto/getBuchungstypen'
if (!!studiensemester_kurzbz)
url = url + '/' + encodeURIComponent(studiensemester_kurzbz);
return { return {
method: 'get', method: 'get',
url: 'api/frontend/v1/stv/konto/getBuchungstypen' url: url
}; };
} },
}; };
@@ -83,6 +83,8 @@ export default {
}); });
}, },
open() { open() {
this.getBuchungstypen(this.currentSemester);
this.data = { this.data = {
buchungstyp_kurzbz: '', buchungstyp_kurzbz: '',
betrag: '-0.00', betrag: '-0.00',
@@ -105,7 +107,7 @@ export default {
const text = typ.standardtext || ''; const text = typ.standardtext || '';
const creditpoints = typ.credit_points || ''; const creditpoints = typ.credit_points || '';
if (!this.data.betrag || this.data.betrag == '-0.00') if (!this.data.betrag || this.data.betrag == '-0.00' || this.data.betrag !== amount)
this.data.betrag = amount; this.data.betrag = amount;
if (!this.data.buchungstext) if (!this.data.buchungstext)
@@ -113,7 +115,18 @@ export default {
if (this.config.showCreditpoints && (this.data.credit_points == '0.00' || this.data.credit_points === null)) if (this.config.showCreditpoints && (this.data.credit_points == '0.00' || this.data.credit_points === null))
this.data.credit_points = creditpoints; this.data.credit_points = creditpoints;
} },
getBuchungstypen(studiensemester_kurzbz)
{
this.$api
.call(ApiKonto.getBuchungstypen(studiensemester_kurzbz))
.then(result => {
this.lists.buchungstypen = result.data;
if (this.data.buchungstyp_kurzbz)
this.checkDefaultBetrag(this.data.buchungstyp_kurzbz);
})
.catch(this.$fhcAlert.handleSystemError);
},
}, },
template: ` template: `
<core-form ref="form" class="stv-details-konto-edit" @submit.prevent="save"> <core-form ref="form" class="stv-details-konto-edit" @submit.prevent="save">
@@ -166,6 +179,7 @@ export default {
<form-input <form-input
type="select" type="select"
v-model="data.studiensemester_kurzbz" v-model="data.studiensemester_kurzbz"
@change="getBuchungstypen(data.studiensemester_kurzbz)"
name="studiensemester_kurzbz" name="studiensemester_kurzbz"
:label="$p.t('lehre/studiensemester')" :label="$p.t('lehre/studiensemester')"
> >