Files
monpas/application/models/monfin2/Finbestemmingen_model.php
T
2024-03-04 18:12:05 +01:00

329 lines
12 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 get_gebudgeteerd_totbedrag_over_orgs($orglist, $jaarnr){
$this->sql = " SELECT FORMAT(sum(B.budget) / 100,2) as budget
FROM finbestemmingen B
WHERE B.organisatie_id in ({$orglist})
AND B.kalenderjaar = {$jaarnr }
AND B.uitgavetype = 'TOTAAL' ";
$row= $this->get_query_row();
if ($row) $row = 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 getbudgetpersoortoverorgs($orgids, $jaarnr){
$this->sql ="SELECT categorie,
round(sum(budget/100) ) AS budget
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();
}
}