mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
added Kostenstellen retrievers by geschaeftsjahr
This commit is contained in:
@@ -15,39 +15,20 @@ class Kostenstelle_model extends DB_Model
|
||||
/**
|
||||
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
|
||||
* Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
|
||||
* Only the Kostenstellen for which a permission exists are returned!
|
||||
* @param $geschaeftsjahr
|
||||
* @return array|null
|
||||
* @return array|null Kostenstellen or empty array if no geschaeftsjahr found
|
||||
*/
|
||||
public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
|
||||
{
|
||||
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
|
||||
|
||||
if ($geschaeftsjahr === null)
|
||||
$gj = $this->_getGeschaeftsjahr($geschaeftsjahr);
|
||||
|
||||
if (hasData($gj))
|
||||
{
|
||||
$lgj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
|
||||
$gjstart = $gj->retval[0]->start;
|
||||
|
||||
if ($lgj->error)
|
||||
return error($lgj->retval);
|
||||
|
||||
if (count($lgj->retval) < 1)
|
||||
return success(array());
|
||||
|
||||
$geschaeftsjahr = $lgj->retval[0]->geschaeftsjahr_kurzbz;
|
||||
}
|
||||
|
||||
$this->GeschaeftsjahrModel->addSelect('start, ende');
|
||||
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
|
||||
|
||||
if ($gj->error)
|
||||
return error($gj->retval);
|
||||
|
||||
if (count($gj->retval) < 1)
|
||||
return success(array());
|
||||
|
||||
$gjstart = $gj->retval[0]->start;
|
||||
|
||||
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv
|
||||
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz
|
||||
FROM wawi.tbl_kostenstelle
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
|
||||
@@ -57,6 +38,96 @@ class Kostenstelle_model extends DB_Model
|
||||
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
|
||||
ORDER BY wawi.tbl_kostenstelle.bezeichnung';
|
||||
|
||||
return $this->execQuery($query, array($gjstart, $gjstart));
|
||||
return $this->execQuery($query, array($gjstart, $gjstart));
|
||||
}
|
||||
else
|
||||
{
|
||||
return success(array());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe,
|
||||
* hierarchally sorted, gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
|
||||
* @param null $geschaeftsjahr
|
||||
* @return array|null
|
||||
*/
|
||||
public function getActiveKostenstellenForGeschaeftsjahrWithOe($geschaeftsjahr = null)
|
||||
{
|
||||
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
|
||||
|
||||
$gj = $this->_getGeschaeftsjahr($geschaeftsjahr);
|
||||
|
||||
if (hasData($gj))
|
||||
{
|
||||
$gjstart = $gj->retval[0]->start;
|
||||
|
||||
$query = "WITH RECURSIVE tree (oe_kurzbz, bezeichnung, path, level, organisationseinheittyp_kurzbz) AS (
|
||||
SELECT oe_kurzbz,
|
||||
bezeichnung || ' (' || organisationseinheittyp_kurzbz || ')' AS bezeichnung,
|
||||
oe_kurzbz || '|' AS path, 0 AS level,
|
||||
organisationseinheittyp_kurzbz
|
||||
FROM tbl_organisationseinheit
|
||||
WHERE oe_parent_kurzbz IS NULL
|
||||
AND aktiv = true
|
||||
UNION ALL
|
||||
SELECT oe.oe_kurzbz,
|
||||
oe.bezeichnung || ' (' || oe.organisationseinheittyp_kurzbz || ')' AS bezeichnung,
|
||||
tree.path || oe.oe_kurzbz || '|' AS path, tree.level + 1 AS level,
|
||||
oe.organisationseinheittyp_kurzbz
|
||||
FROM tree JOIN tbl_organisationseinheit oe ON (tree.oe_kurzbz = oe.oe_parent_kurzbz)
|
||||
)
|
||||
SELECT oe_kurzbz,
|
||||
SUBSTRING(REGEXP_REPLACE(path, '[A-z]+\|', '-', 'g') || rec.bezeichnung, 2) AS oe_description,
|
||||
level,
|
||||
kst.kostenstelle_id as kostenstelle_id,
|
||||
kst.kurzbz as kostenstelle_kurzbz,
|
||||
kst.bezeichnung as kostenstelle_bezeichnung,
|
||||
kst.aktiv as kostenstelle_aktiv
|
||||
FROM tree rec
|
||||
JOIN (
|
||||
SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz as kstoe
|
||||
FROM wawi.tbl_kostenstelle
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
|
||||
WHERE
|
||||
(DATE ? >= kgjvon.start OR wawi.tbl_kostenstelle.geschaeftsjahrvon IS NULL)
|
||||
AND
|
||||
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
|
||||
ORDER BY wawi.tbl_kostenstelle.bezeichnung)
|
||||
kst on kst.kstoe = rec.oe_kurzbz
|
||||
ORDER BY level";
|
||||
|
||||
return $this->execQuery($query, array($gjstart, $gjstart));
|
||||
}
|
||||
else
|
||||
{
|
||||
return success(array());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets either given Geschaeftsjahr, current Geschaeftsjahr if not given, or chronologically last Geschaeftsjahr if there is no current
|
||||
* @param $geschaeftsjahr
|
||||
* @return mixed
|
||||
*/
|
||||
protected function _getGeschaeftsjahr($geschaeftsjahr)
|
||||
{
|
||||
if ($geschaeftsjahr === null)
|
||||
{
|
||||
$gj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
|
||||
if (!hasData($gj))
|
||||
{
|
||||
$this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende');
|
||||
$this->GeschaeftsjahrModel->addOrder('start', 'DESC');
|
||||
$gj = $this->GeschaeftsjahrModel->load();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende');
|
||||
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
|
||||
}
|
||||
return $gj;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user