added Kostenstellen retrievers by geschaeftsjahr

This commit is contained in:
alex
2018-04-30 17:57:48 +02:00
parent 0f8847593a
commit 89e724de0e
@@ -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;
}
}