299 lines
10 KiB
PHP
299 lines
10 KiB
PHP
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
/** Finbestemmingen_model februari 2017 */
|
|
|
|
class Finbestemmingen_model extends MY_Model{
|
|
|
|
|
|
protected $tablename = 'finbestemmingen';
|
|
|
|
function __construct(){
|
|
parent::__construct();
|
|
$models = array('shared/Organisaties_model',
|
|
"monfin2/Finuitgavetypes_model"
|
|
|
|
);
|
|
$this->load->model($models);
|
|
}
|
|
|
|
function get_soorten($swvID, $jaarnr, $categorie){
|
|
$this->sql =" SELECT id as soortID,
|
|
naam ,
|
|
categorie
|
|
FROM finsoorten
|
|
WHERE categorie = '{$categorie}'
|
|
AND swv_id = {$swvID}
|
|
AND kalenderjaar = {$jaarnr}";
|
|
return $this->get_query_result();
|
|
}
|
|
|
|
function get_subsoorten($soortID){
|
|
$this->sql = "SELECT id as subsoortID,
|
|
subsoortcat,
|
|
naam
|
|
FROM finsubsoorten
|
|
WHERE finsoort_id = {$soortID}";
|
|
return $this->get_query_result();
|
|
}
|
|
|
|
|
|
|
|
function get_overig_subsoorten($soortID,$orgID){
|
|
$this->sql = "SELECT id as subsoortID,
|
|
omschrijving as naam
|
|
FROM finoverig
|
|
WHERE soort_id = {$soortID}
|
|
AND organisatie_id = {$orgID}";
|
|
return $this->get_query_result();
|
|
}
|
|
|
|
function get_bestemmingen($orgID, $jaarnr,$categorie){
|
|
$swvID = $this->Organisaties_model->get_swvid($orgID);
|
|
$uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes();
|
|
|
|
// get soort per swv en kalender jaar. als swv id of kalender jaar niet bekend is,
|
|
// haal dan algemene soorten op;
|
|
$soorten = $this->get_soorten($swvID, $jaarnr, $categorie);
|
|
if (! $soorten) { $soorten = $this->get_soorten($swvID, 0, $categorie); };
|
|
if (! $soorten) {$soorten = $this->get_soorten(0,0, $categorie); };
|
|
|
|
if ($soorten){
|
|
foreach($soorten as $soort){
|
|
$soort->subsoorten = $this->get_subsoorten($soort->soortID);
|
|
if ($soort->subsoorten){
|
|
foreach($soort->subsoorten as $index =>$subsoort){
|
|
// haal per uitgavetypes de bedragen op
|
|
if ($uitgavetypes) {
|
|
|
|
|
|
$restantbudget = 0;
|
|
foreach ($uitgavetypes as $uitgavetype) {
|
|
|
|
$subsoort->uitgavetypes[] = $this->get_bedrag_per_type($orgID, $jaarnr, $subsoort->subsoortID, $uitgavetype->code);
|
|
|
|
|
|
|
|
|
|
}
|
|
if (count($subsoort->uitgavetypes) > 0) {
|
|
$restantbudget = floatval(str_replace(',' , '' , $subsoort->uitgavetypes[0]->budget)) -
|
|
floatval(str_replace(',' , '' , $subsoort->uitgavetypes[1]->budget)) -
|
|
floatval(str_replace(',' , '' , $subsoort->uitgavetypes[2]->budget)) -
|
|
floatval(str_replace(',' , '' , $subsoort->uitgavetypes[3]->budget));
|
|
$restantbudget = number_format($restantbudget, 2);
|
|
}
|
|
$restant = new stdClass();
|
|
$restant->id = '0';
|
|
$restant->bedrag = '0.00';
|
|
$restant->budget = $restantbudget;
|
|
$restant->code = 'RESTANT';
|
|
|
|
$subsoort->uitgavetypes[] = $restant;
|
|
}
|
|
|
|
}
|
|
}// if subsoorten
|
|
}
|
|
}// if soorten
|
|
return $soorten;
|
|
}
|
|
function get_bestemmingen_over_orgs($targetorg, $orglist, $jaarnr,$categorie){
|
|
$swvID = $this->Organisaties_model->get_swvid($targetorg);
|
|
$uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes();
|
|
|
|
// get soort per swv en kalender jaar. als swv id of kalender jaar niet bekend is,
|
|
// haal dan algemene soorten op;
|
|
$soorten = $this->get_soorten($swvID, $jaarnr, $categorie);
|
|
if (! $soorten) { $soorten = $this->get_soorten($swvID, 0, $categorie); };
|
|
if (! $soorten) {$soorten = $this->get_soorten(0,0, $categorie); };
|
|
|
|
if ($soorten){
|
|
foreach($soorten as $soort){
|
|
$soort->subsoorten = $this->get_subsoorten($soort->soortID);
|
|
if ($soort->subsoorten){
|
|
foreach($soort->subsoorten as $subsoort){
|
|
// haal per uitgavetypes de bedragen op
|
|
if ($uitgavetypes){
|
|
foreach($uitgavetypes as $uitgavetype){
|
|
$result = $this->get_bedrag_per_type_over_orgs($orglist, $jaarnr,$subsoort->subsoortID,$uitgavetype->code);
|
|
$subsoort->uitgavetypes[] = $result;
|
|
}
|
|
}
|
|
}
|
|
}// if subsoorten
|
|
}
|
|
}// if soorten
|
|
return $soorten;
|
|
}
|
|
// function get_overig_bestemmingen($orgID, $jaarnr){
|
|
// $swvID = $this->Organisaties_model->get_swvid($orgID);
|
|
// $uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes();
|
|
|
|
// // get soort per swv en kalender jaar. als swv id of kalender jaar niet bekend is,
|
|
// // haal dan algemene soorten op;
|
|
// $soorten = $this->get_soorten($swvID, $jaarnr,"OVERIG");
|
|
// if (! $soorten) { $soorten = $this->get_soorten($swvID, 0,"OVERIG"); };
|
|
// if (! $soorten) {$soorten = $this->get_soorten(0,0, "OVERIG"); };
|
|
|
|
// if ($soorten){
|
|
// foreach($soorten as $soort){
|
|
// $soort->subsoorten = $this->get_overig_subsoorten($soort->soortID, $orgID);
|
|
// if ($soort->subsoorten){
|
|
// foreach($soort->subsoorten as $subsoort){
|
|
// // haal per uitgavetypes de bedragen op
|
|
// if ($uitgavetypes){
|
|
// foreach($uitgavetypes as $uitgavetype){
|
|
// $subsoort->uitgavetypes[] = $this->overig_get_bedrag_per_type($subsoort->subsoortID, $jaarnr,$subsoort->subsoortID,$uitgavetype->code);
|
|
// }
|
|
// }
|
|
// }
|
|
// }// if subsoorten
|
|
// }
|
|
// }// if soorten
|
|
// return $soorten;
|
|
// }
|
|
|
|
function setSomSubsoort($orgid, $jaarnr, $categorie){
|
|
}
|
|
|
|
function getUitgavenPerSubsoortSchool($orgid, $jaarnr){
|
|
$this->sql = "SELECT B.id, SUM(B.bedrag) AS bedrag, FORMAT(SUM(B.bedrag) / 100,0) as format, SUB.naam AS subsoort, S.naam AS soort, S.categorie
|
|
FROM finbestemmingen B
|
|
JOIN finsubsoorten SUB ON SUB.id = B.subsoort_id
|
|
JOIN finsoorten S ON S.id = SUB.finsoort_id
|
|
WHERE B.organisatie_id = {$orgid}
|
|
AND B.kalenderjaar = {$jaarnr}
|
|
GROUP BY SUB.id
|
|
ORDER BY S.categorie, S.naam, SUB.naam ";
|
|
return $this->get_query_result();
|
|
}
|
|
|
|
function getUitgavenPerType($orgid, $jaarnr){
|
|
$this->sql = "SELECT B.id, B.uitgavetype, SUM(B.bedrag) AS bedrag, FORMAT(SUM(B.bedrag)/100,2) AS format
|
|
FROM finbestemmingen B
|
|
JOIN finsubsoorten SUB ON SUB.id = B.subsoort_id
|
|
JOIN finsoorten S ON S.id = SUB.finsoort_id
|
|
WHERE B.organisatie_id = {$orgid}
|
|
AND B.kalenderjaar = {$jaarnr}
|
|
GROUP BY B.uitgavetype";
|
|
|
|
return $this->get_query_result();
|
|
}
|
|
|
|
|
|
function get_bedrag_per_type($orgid, $jaarnr,$subsoortID, $uitgavetype){
|
|
$this->sql = "SELECT id,
|
|
FORMAT(bedrag / 100,2) as bedrag,
|
|
FORMAT(budget / 100,2) as budget,
|
|
uitgavetype as code
|
|
FROM finbestemmingen
|
|
WHERE organisatie_id = {$orgid}
|
|
AND kalenderjaar = {$jaarnr }
|
|
AND subsoort_id = {$subsoortID}
|
|
AND uitgavetype = '{$uitgavetype}' ";
|
|
$row= $this->get_query_row();
|
|
if (! $row){
|
|
$data=["organisatie_id" =>$orgid,
|
|
"kalenderjaar" =>$jaarnr,
|
|
"subsoort_id" =>$subsoortID,
|
|
"uitgavetype" =>$uitgavetype,
|
|
"bedrag" =>0,
|
|
"budget" =>0];
|
|
$this->insert_record($data);
|
|
$row = $this->get_query_row();
|
|
}
|
|
if ($row) {
|
|
|
|
$row->bedrag = str_replace(',' , '' , $row->bedrag);
|
|
$row->budget = str_replace(',' , '' , $row->budget);
|
|
|
|
}
|
|
return $row;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function get_bedrag_per_type_over_orgs($orglist, $jaarnr,$subsoortID, $uitgavetype){
|
|
$this->sql = "SELECT id,
|
|
FORMAT(sum(bedrag) / 100,2) as bedrag,
|
|
FORMAT(sum(budget) / 100,2) as budget,
|
|
uitgavetype as code
|
|
FROM finbestemmingen
|
|
WHERE organisatie_id in ({$orglist})
|
|
AND kalenderjaar = {$jaarnr }
|
|
AND subsoort_id = {$subsoortID}
|
|
AND uitgavetype = '{$uitgavetype}' ";
|
|
$row= $this->get_query_row();
|
|
|
|
|
|
if ($row) $row->bedrag = str_replace(',' , '' , $row->bedrag);
|
|
if ($row) $row->budget = str_replace(',' , '' , $row->budget);
|
|
return $row;
|
|
}
|
|
|
|
function getTotaalSchoolBestedingen($orgid, $jaarnr){
|
|
$this->sql = "SELECT SUM(bedrag) AS totaal
|
|
FROM finbestemmingen
|
|
WHERE organisatie_id = {$orgid}
|
|
AND kalenderjaar = {$jaarnr} ";
|
|
return $this->get_query_row('totaal');
|
|
}
|
|
|
|
// function overig_get_bedrag_per_type($finoverigID, $jaarnr,$subsoortID, $uitgavetype){
|
|
// $this->sql = "SELECT id,
|
|
// FORMAT((SUM(bedrag) / 100),2) as bedrag,
|
|
// uitgavetype as code
|
|
// FROM finoverigbestemmingen
|
|
// WHERE finoverig_id = {$finoverigID}
|
|
// AND kalenderjaar = {$jaarnr }
|
|
// AND uitgavetype = '{$uitgavetype}'
|
|
// GROUP BY uitgavetype ";
|
|
|
|
// $row= $this->get_query_row();
|
|
// if ($row) $row->bedrag = str_replace(',' , '' , $row->bedrag);
|
|
// return $row;
|
|
// }
|
|
function getsompersoortoverorgs($orgids, $jaarnr){
|
|
$this->sql ="SELECT categorie,
|
|
round(sum(bedrag/100) ) AS bedrag
|
|
FROM finbestemmingen FB
|
|
JOIN finsubsoorten FSS on FSS.id = FB.subsoort_id
|
|
JOIN finsoorten FS on FS.id = FSS.finsoort_id
|
|
WHERE FB.organisatie_id in ({$orgids})
|
|
AND FB.kalenderjaar = {$jaarnr}
|
|
AND FB.uitgavetype = 'TOTAAL'
|
|
GROUP BY categorie, organisatie_id";
|
|
return $this->get_query_result();
|
|
}
|
|
function getsompersoortoverorgsSummed($orgids, $jaarnr, $cat){
|
|
$this->sql ="SELECT sum(bedrag) / 100 AS bedrag
|
|
FROM finbestemmingen FB
|
|
JOIN finsubsoorten FSS on FSS.id = FB.subsoort_id
|
|
JOIN finsoorten FS on FS.id = FSS.finsoort_id
|
|
WHERE FB.organisatie_id in ({$orgids})
|
|
AND FB.kalenderjaar = {$jaarnr}
|
|
AND FB.uitgavetype = 'TOTAAL'
|
|
AND FS.categorie = '{$cat}'
|
|
GROUP BY categorie";
|
|
return $this->get_query_row('bedrag');
|
|
}
|
|
function get_pms($orgids, $kalenderjaarnr){
|
|
$this->sql = " SELECT round(sum(FB.bedrag/100) ) AS bedrag,
|
|
round(sum(FB.budget/100)) AS budget,
|
|
uitgavetype,
|
|
FS.categorie,
|
|
FB.organisatie_id
|
|
FROM finbestemmingen FB
|
|
JOIN finsubsoorten FSS ON FSS.id = FB.subsoort_id
|
|
JOIN finsoorten FS ON FS.id = FSS.finsoort_id
|
|
WHERE FB.organisatie_id IN ({$orgids})
|
|
AND FB.kalenderjaar = {$kalenderjaarnr}
|
|
GROUP BY FS.categorie, uitgavetype
|
|
ORDER BY categorie, uitgavetype";
|
|
return $this->get_query_result();
|
|
}
|
|
}
|
|
|