- system/ vervangen door CodeIgniter 3.4.5 (pocketarc/codeigniter, PHP 8.2-8.5 compatibel) - config.php, mimes.php, user_agents.php en error-views bijgewerkt naar 3.4.5 - composer.json: php-constraint "^7.4 || ^8.0" zodat composer install op 8.3 werkt - PHP 8-fatals opgelost: count()/array-functies op FALSE/null, rekenen met lege strings, delen door nul, property zetten op FALSE, curly-brace string offsets, ongedefinieerde constanten, foute curl_setopt in Phantom_model::create_img - dynamic properties gedeclareerd in libraries, optionele parameters voor verplichte opgelost - vergelijkingen waar '' == 0 in PHP 8 anders uitvalt gecast naar (int) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
803 lines
36 KiB
PHP
803 lines
36 KiB
PHP
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
class Monfin2overzicht extends MY_Controller{
|
|
|
|
function __construct(){
|
|
parent::__construct();
|
|
$models = array("monfin2/Finbestemmingen_model",
|
|
"monfin2/Finuitgavetypes_model",
|
|
"monpas/Bestedingopmerkingen_model",
|
|
"monpas/Toewijzingen_model",
|
|
"shared/Kalenderjaren_model",
|
|
|
|
"Phantom_model" );
|
|
$this->load->model($models);
|
|
if ( ! $this->check_online_status() ) {
|
|
echo json_encode( array('offline' => TRUE) );
|
|
die;
|
|
};// if
|
|
}
|
|
function getschoolbedragen()
|
|
{
|
|
$orgid = $this->clean_input("orgid");
|
|
$kalenderjaarnr = $this->clean_input("jaarnr");
|
|
$soortoverzicht = $this->clean_input('zelfjanee');
|
|
|
|
$suborgs = $this->Organisaties_model->getlistrecursief( $orgid, []);
|
|
array_splice($suborgs, 0,1);
|
|
$suborgslist= implode(',', $suborgs);
|
|
|
|
$uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes();
|
|
|
|
|
|
$budgetten = new stdClass();
|
|
$budgetten->totaal = 0;
|
|
$budgetten->basis = 0;
|
|
$budgetten->extra = 0;
|
|
|
|
|
|
if ($soortoverzicht == 3){
|
|
$basis = $this->Finbestemmingen_model->get_bestemmingen_over_orgs($orgid, $suborgslist, $kalenderjaarnr,"BASIS");
|
|
$extra = $this->Finbestemmingen_model->get_bestemmingen_over_orgs($orgid, $suborgslist, $kalenderjaarnr,"EXTRA");
|
|
|
|
} else {
|
|
$basis = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr, "BASIS");
|
|
$extra = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr, "EXTRA");
|
|
}
|
|
$sombasisperuitgavetype = $this->get_som_per_uitgavetype($basis, $uitgavetypes);
|
|
$somextraperuitgavetype = $this->get_som_per_uitgavetype($extra, $uitgavetypes);
|
|
$totsomperuitgavetype = $this->sommeer_per_uitgavetype($sombasisperuitgavetype,$somextraperuitgavetype, $uitgavetypes);
|
|
$totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG');
|
|
$totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET');
|
|
|
|
$sommen = $this->get_som_per_regel($basis, $budgetten->basis, $sombasisperuitgavetype[0]);
|
|
$basis = $sommen['soorten'];
|
|
$sombudgetpct = $sommen['sombudgetpct'];
|
|
$sombedragpct = $sommen['sombedragpct'];
|
|
|
|
$sommenex = $this->get_som_per_regel($extra, $budgetten->extra, $somextraperuitgavetype[0]);
|
|
$extra = $sommenex['soorten'];
|
|
$sombudgetpctex = $sommenex['sombudgetpct'];
|
|
$sombedragpctex = $sommenex['sombedragpct'];
|
|
|
|
$budgetten->basis = number_format( $sombasisperuitgavetype[0]->budgetsom, 0, ',' , '.' );
|
|
$budgetten->extra = number_format( $somextraperuitgavetype[0]->budgetsom, 0, ',' , '.' );
|
|
$budgetten->totaal = number_format( $sombasisperuitgavetype[0]->budgetsom + $somextraperuitgavetype[0]->budgetsom, 0, ',' , '.' );
|
|
$budgetten->basisverschil = number_format($sombasisperuitgavetype[0]->budgetsom - $sombasisperuitgavetype[0]->som, 0, ',' , '.' );
|
|
$budgetten->extraverschil = number_format($somextraperuitgavetype[0]->budgetsom- $somextraperuitgavetype[0]->som, 0, ',' , '.' );
|
|
$budgetten->totaalverschil = number_format($sombasisperuitgavetype[0]->budgetsom + $somextraperuitgavetype[0]->budgetsom - $sombasisperuitgavetype[0]->som -$somextraperuitgavetype[0]->som, 0, ',' , '.' );
|
|
$budgetten->basisbudgetpct = number_format($sombudgetpct, 2,',', '.');
|
|
|
|
$budgetten->basisbedragpct = number_format($sombedragpct, 1,',', '.');
|
|
$budgetten->extrabudgetpct = number_format($sombudgetpctex, 1,',', '.');
|
|
$budgetten->extrabedragpct = number_format($sombedragpctex, 1,',', '.');
|
|
$budgetten->totbedragpct = number_format(($sombedragpctex + $sombedragpct)/2, 1, ',', '.' );
|
|
$budgetten->totbudgetpct = number_format(($sombudgetpct + $sombudgetpctex)/2, 1, ',', '.');
|
|
|
|
foreach($sombasisperuitgavetype as $index => $sompertype){
|
|
$sompertype->som = number_format($sompertype->som,0, ',' , '.' );
|
|
$sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' );
|
|
if($index == 0) $sompertype->budgetrestant = number_format($sompertype->budgetrestant,0, ',' , '.' );
|
|
|
|
|
|
}
|
|
foreach($somextraperuitgavetype as $index => $sompertype){
|
|
$sompertype->som = number_format($sompertype->som,0, ',' , '.' );
|
|
$sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' );
|
|
if($index == 0) $sompertype->budgetrestant = number_format($sompertype->budgetrestant,0, ',' , '.' );
|
|
|
|
|
|
}
|
|
foreach($totsomperuitgavetype as $sompertype){
|
|
$sompertype->som = number_format($sompertype->som,0, ',' , '.' );
|
|
$sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' );
|
|
|
|
|
|
}
|
|
|
|
$schooltot = array( 'budget' => $budgetten->totaal,
|
|
"bestemd" => number_format($totbesteed, 0, ',' , '.' ),
|
|
"verschil" => $budgetten->totaalverschil );
|
|
if ($soortoverzicht == 3){
|
|
$opmerking = '';
|
|
} else {
|
|
$opmerking = $this->Bestedingopmerkingen_model->getopmerking($orgid, $kalenderjaarnr);
|
|
}
|
|
//}; // if budgetten
|
|
if (! isset($sombasisperuitgavetype)) $sombasisperuitgavetype = 0;
|
|
if (! isset($somextraperuitgavetype)) $somextraperuitgavetype = 0;
|
|
if (! isset($totsomperuitgavetype)) $totsomperuitgavetype = 0;
|
|
if (! isset($schooltot)) $schooltot = 0;
|
|
|
|
echo json_encode(array('uitgavetypes' =>$uitgavetypes,
|
|
'basis' =>$basis,
|
|
'extra' =>$extra,
|
|
'sombasisperuitgavetype' =>$sombasisperuitgavetype,
|
|
'somextraperuitgavetype' =>$somextraperuitgavetype,
|
|
'totsomperuitgavetype' =>$totsomperuitgavetype,
|
|
'schooltotaal' => $schooltot,
|
|
'budgetten' => $budgetten,
|
|
'opmerking' => $opmerking));
|
|
}
|
|
|
|
function sommeeralles($totsomperuitgavetype, $soort)
|
|
{
|
|
|
|
$totsom = 0;
|
|
if ($totsomperuitgavetype) {
|
|
foreach ($totsomperuitgavetype as $som) {
|
|
if ($som->code == 'TOTAAL') {
|
|
if ($soort == 'BUDGET') $totsom += $som->budgetsom;
|
|
else $totsom += $som->som;
|
|
|
|
}
|
|
}
|
|
return $totsom;
|
|
}
|
|
}
|
|
function get_som_per_regel($soorten, $budget, $uitgaven ){
|
|
$sombudgetpct = 0;
|
|
$sombedragpct = 0;
|
|
foreach($soorten ? : [] as $soort){
|
|
foreach ($soort->subsoorten ? : [] as $subsoort){
|
|
$budgetpct = 0;
|
|
$budgetpctformat = 0;
|
|
$bedragpct = 0;
|
|
$bedragpctformat = 0;
|
|
|
|
$personeel = empty($subsoort->uitgavetypes[1]->bedrag) ? 0 : floatval($subsoort->uitgavetypes[1]->bedrag);
|
|
$materieel = empty($subsoort->uitgavetypes[2]->bedrag) ? 0 : floatval($subsoort->uitgavetypes[2]->bedrag);
|
|
$scholing = empty($subsoort->uitgavetypes[3]->bedrag) ? 0 : floatval($subsoort->uitgavetypes[3]->bedrag);
|
|
$totaal = $personeel + $materieel + $scholing;
|
|
$subsoort->uitgavetypes[0]->bedragform = $totaal == 0 ? '': number_format($totaal, 0, ',', '.');
|
|
$subsoort->uitgavetypes[0]->bedrag = $totaal == 0 ? '': number_format($totaal, 2, '.', '');
|
|
$subsoort->uitgavetypes[1]->bedragform = $personeel == 0 ? '': number_format($personeel, 0, ',', '.');
|
|
$subsoort->uitgavetypes[2]->bedragform = $materieel == 0 ? '': number_format($materieel, 0, ',', '.');
|
|
$subsoort->uitgavetypes[3]->bedragform = $scholing == 0 ? '': number_format($scholing, 0, ',', '.');
|
|
if(!empty($uitgaven->som && $uitgaven->som != 0)) {
|
|
|
|
$bedragpct = ($totaal / $uitgaven->som) * 100;
|
|
$bedragpctformat = number_format($bedragpct, 1, ',', '.');
|
|
}
|
|
|
|
$totbudget = empty($subsoort->uitgavetypes[0]->budget) ? 0 : floatval($subsoort->uitgavetypes[0]->budget);
|
|
$persbudget = empty($subsoort->uitgavetypes[1]->budget) ? 0 : floatval($subsoort->uitgavetypes[1]->budget);
|
|
$matbudget = empty($subsoort->uitgavetypes[2]->budget) ? 0 : floatval($subsoort->uitgavetypes[2]->budget);
|
|
$schoolbudget = empty($subsoort->uitgavetypes[3]->budget) ? 0 : floatval($subsoort->uitgavetypes[3]->budget);
|
|
|
|
$subsoort->uitgavetypes[0]->budgetform = $totbudget == 0 ? '': number_format($totbudget, 0, ',', '.');
|
|
$subsoort->uitgavetypes[1]->budgetform = $persbudget == 0 ? '': number_format($persbudget, 0, ',', '.');
|
|
$subsoort->uitgavetypes[2]->budgetform = $matbudget == 0 ? '': number_format($matbudget, 0, ',', '.');
|
|
$subsoort->uitgavetypes[3]->budgetform = $schoolbudget == 0 ? '': number_format($schoolbudget, 0, ',', '.');
|
|
if(! empty($subsoort->uitgavetypes[0]->budget) && ! empty($budget)) {
|
|
$budgetpct = ($totbudget/ $budget) * 100;
|
|
$budgetpctformat = number_format($budgetpct, 1, ',', '.');
|
|
}
|
|
|
|
$verschil = $totbudget - $totaal;
|
|
$subsoort->uitgavetypes[0]->verschilfloat = $verschil;
|
|
$subsoort->uitgavetypes[0]->verschil = $verschil == 0 ? '' : number_format($verschil, 0,',', '.');
|
|
$subsoort->uitgavetypes[0]->budgetpct = $budgetpct == 0 ? '' : $budgetpctformat;
|
|
$subsoort->uitgavetypes[0]->bedragpct = $bedragpct == 0 ? '' : $bedragpctformat;
|
|
$restant = $totbudget-$persbudget - $matbudget- $schoolbudget;
|
|
$subsoort->uitgavetypes[0]->budgetrestant = $restant == 0 ? '' : $restant;
|
|
|
|
$sombudgetpct =$sombudgetpct + $budgetpct;
|
|
$sombedragpct = $sombedragpct +$bedragpct;
|
|
}
|
|
|
|
}
|
|
|
|
return [
|
|
'soorten' =>$soorten,
|
|
'sombudgetpct' => $sombudgetpct,
|
|
'sombedragpct' => $sombedragpct,
|
|
];
|
|
}
|
|
|
|
function sommeer_per_uitgavetype($sombasis,$somextra,$uitgavetypes){
|
|
$somtot = [];
|
|
$regelsom =0;
|
|
$regelsom2 = 0;
|
|
if ($uitgavetypes){
|
|
$index =0;
|
|
foreach($uitgavetypes as $uitgavetype){
|
|
$somtot[$index] = new stdClass;
|
|
$somtot[$index]->code = $uitgavetype->code;
|
|
$somtot[$index]->naam = $uitgavetype->naam;
|
|
$somtot[$index]->som =0;
|
|
$somtot[$index]->budgetsom = 0;
|
|
foreach($sombasis as $basis){
|
|
if ($basis->code == $somtot[$index]->code) {
|
|
$somtot[$index]->som += $basis->som;
|
|
$somtot[$index]->budgetsom += $basis->budgetsom;
|
|
}
|
|
}
|
|
foreach($somextra as $basis){
|
|
if ($basis->code == $somtot[$index]->code) {
|
|
$somtot[$index]->som += $basis->som;
|
|
$somtot[$index]->budgetsom += $basis->budgetsom;
|
|
}
|
|
}
|
|
|
|
$regelsom += $somtot[$index]->som;
|
|
$regelsom2 += $somtot[$index]->budgetsom;
|
|
$index += 1;
|
|
}
|
|
// $somtot[$index] = new stdClass;
|
|
// $somtot[$index]->code = "REGELSOM";
|
|
// $somtot[$index]->naam = "Som";
|
|
// $somtot[$index]->som = $regelsom;
|
|
// $somtot[$index]->budgetsom = $regelsom2;
|
|
}
|
|
|
|
return $somtot;
|
|
}
|
|
|
|
function get_som_per_uitgavetype($basis,$uitgavetypes){
|
|
$sombasis = [];
|
|
if ($uitgavetypes){
|
|
foreach($uitgavetypes as $uitgavetype) {
|
|
$sombasis[$uitgavetype->code] = new stdClass;
|
|
$sombasis[$uitgavetype->code]->naam = $uitgavetype->naam;
|
|
$sombasis[$uitgavetype->code]->som = 0;
|
|
$sombasis[$uitgavetype->code]->budgetsom = 0;
|
|
|
|
foreach ($basis ? $basis : [] as $soort) {
|
|
foreach ($soort->subsoorten ? $soort->subsoorten : [] as $subsoort) {
|
|
foreach ($subsoort->uitgavetypes ? $subsoort->uitgavetypes : [] as $kostenpost) {
|
|
if ($kostenpost->code == $uitgavetype->code) {
|
|
$sombasis[$uitgavetype->code]->som += floatval($kostenpost->bedrag);
|
|
$sombasis[$uitgavetype->code]->budgetsom += floatval($kostenpost->budget);
|
|
}
|
|
} //foreach
|
|
}//foreach subsoort
|
|
}//foreach basis
|
|
}
|
|
} // if uitgavetypes
|
|
$somasarray=[];
|
|
$index = 0;
|
|
$regelsom=0;
|
|
$regelsom2 = 0;
|
|
|
|
foreach($uitgavetypes as $uitgavetype){
|
|
$somasarray[$index ] = new stdClass;
|
|
$somasarray[$index]->code = $uitgavetype->code;
|
|
$somasarray[$index]->naam = $sombasis[$uitgavetype->code]->naam;
|
|
$somasarray[$index ]->som = round($sombasis[$uitgavetype->code]->som,0);
|
|
$somasarray[$index ]->budgetsom = round($sombasis[$uitgavetype->code]->budgetsom,0);
|
|
if($index != 0) {
|
|
$regelsom += $somasarray[$index]->som;
|
|
}
|
|
if($index ==0){
|
|
$regelsom2 += round($sombasis[$uitgavetype->code]->budgetsom,0);
|
|
}
|
|
$index += 1;
|
|
};
|
|
if (! isset($somasarray[0])) $somasarray[0] = new stdClass();
|
|
$somasarray[0]->som = $regelsom;
|
|
$somasarray[0]->budgetsom = $regelsom2;
|
|
$somasarray[0]->budgetrestant = $regelsom2 - $regelsom;
|
|
|
|
return $somasarray;
|
|
}
|
|
|
|
function getbestuursbedragen(){
|
|
$targetorgid = $this->clean_input('orgid');
|
|
$kalenderjaarnr= $this->clean_input("jaarnr");
|
|
|
|
$subtot = new stdClass;
|
|
$subtot->basis =0;
|
|
$subtot->extra =0;
|
|
$subtot->som =0;
|
|
$subtot->budget =0;
|
|
$subtot->gebudget = 0;
|
|
$subtot->verschil =0;
|
|
$subtot->verschilGeb =0;
|
|
|
|
$grandtot = new stdClass;
|
|
$grandtot->basis =0;
|
|
$grandtot->extra =0;
|
|
$grandtot->som =0;
|
|
$grandtot->budget =0;
|
|
$grandtot->gebudget =0;
|
|
$grandtot->verschil =0;
|
|
$grandtot->verschilGeb =0;
|
|
|
|
$targetorg = $this->Organisaties_model->get_record_by_id($targetorgid);
|
|
if (! $targetorg) $targetorg = new stdClass();
|
|
$targetorg->bestemmingen = $this->get_bestuur_bestemmingen($targetorgid, $kalenderjaarnr);
|
|
$targetorg->budgetten = $this->get_bestuur_gebudget($targetorgid, $kalenderjaarnr);
|
|
$verschil = $targetorg->budgetten['som']-$targetorg->bestemmingen['som'];
|
|
$targetorg->verschil = number_format($verschil,0 , ',' , '.');
|
|
|
|
$grandtot->basis = $targetorg->bestemmingen['basis'];
|
|
$grandtot->extra = $targetorg->bestemmingen['extra'];
|
|
$grandtot->som = $targetorg->bestemmingen['som'];
|
|
$grandtot->budgetbasis = $targetorg->budgetten['basis'];
|
|
$grandtot->budgetextra = $targetorg->budgetten['extra'];
|
|
$grandtot->budget = $targetorg->budgetten['som'];
|
|
|
|
$grandtot->verschil = $targetorg->budgetten['som'] - $targetorg->bestemmingen['som'];
|
|
|
|
//get de som van de uitgaven van de onderliggende organisaties
|
|
$soort = $targetorg->soort +1;
|
|
$organisaties = $this->Organisaties_model->getorgs($soort, $targetorgid, true);
|
|
$others =[];
|
|
if ($organisaties){
|
|
$index = 0;
|
|
foreach ($organisaties as $organisatie){
|
|
$orgids = $this->getorgids( $organisatie->id);
|
|
$others[$index] = new stdClass;
|
|
$others[$index]->naam = $organisatie->brin.'-'.$organisatie->naamkort;
|
|
$others[$index]->id = $organisatie->id;
|
|
$gebudget = $this->Finbestemmingen_model->get_gebudgeteerd_totbedrag_over_orgs($orgids, $kalenderjaarnr);
|
|
$others[$index]->budget = floatval($gebudget? $gebudget: 0);
|
|
$others[$index]->budgetForm = number_format($others[$index]->budget,0 , ',' , '.');
|
|
$others[$index]->bestemmingen = $this->get_bestemmingen_inclusief($orgids, $kalenderjaarnr);
|
|
$others[$index]->verschil = $others[$index]->budget - $others[$index]->bestemmingen->som;
|
|
$others[$index]->formVerschil = number_format($others[$index]->verschil, 0 ,',' , '.' );
|
|
|
|
|
|
$subtot->basis += $others[$index]->bestemmingen->basis;
|
|
$subtot->extra += $others[$index]->bestemmingen->extra;
|
|
$subtot->som += $others[$index]->bestemmingen->som;
|
|
$subtot->budget += $others[$index]->budget;
|
|
$subtot->verschil += $others[$index]->verschil;
|
|
$grandtot->basis += $others[$index]->bestemmingen->basis;
|
|
$grandtot->extra += $others[$index]->bestemmingen->extra;
|
|
$grandtot->som += $others[$index]->bestemmingen->som;
|
|
$grandtot->budget += $others[$index]->budget;
|
|
$grandtot->verschil += $others[$index]->verschil;
|
|
$index += 1;
|
|
}
|
|
}
|
|
|
|
$subtot->basis = number_format($subtot->basis,0 , ',' , '.');
|
|
$subtot->extra = number_format($subtot->extra,0 , ',' , '.');
|
|
$subtot->som = number_format($subtot->som,0 , ',' , '.');
|
|
$subtot->budget = number_format($subtot->budget,0 , ',' , '.');
|
|
$subtot->gebudget = number_format($subtot->gebudget,0 , ',' , '.');
|
|
$subtot->verschil = number_format($subtot->verschil,0 , ',' , '.');
|
|
$subtot->verschilGeb = number_format($subtot->verschilGeb,0 , ',' , '.');
|
|
|
|
$grandtot->basis = number_format($grandtot->basis,0 , ',' , '.');
|
|
$grandtot->extra = number_format($grandtot->extra,0 , ',' , '.');
|
|
$grandtot->som = number_format($grandtot->som,0 , ',' , '.');
|
|
$grandtot->budget = number_format($grandtot->budget,0 , ',' , '.');
|
|
//
|
|
$grandtot->verschil = number_format($grandtot->verschil,0 , ',' , '.');
|
|
$grandtot->verschilGeb = number_format($grandtot->verschilGeb,0 , ',' , '.');
|
|
|
|
echo json_encode(['targetorg' =>$targetorg,
|
|
'others' =>$others,
|
|
'subtot' =>$subtot,
|
|
'grandtot' =>$grandtot
|
|
]);
|
|
}
|
|
|
|
|
|
function get_bestemmingen_inclusief($orgids, $jaarnr){
|
|
$bestemmingen = new stdClass;
|
|
$bestemmingen->basis = $this->Finbestemmingen_model->getsompersoortoverorgsSummed($orgids, $jaarnr, 'BASIS');
|
|
$bestemmingen->formBasis = number_format($bestemmingen->basis,0, ',' , '.' );
|
|
$bestemmingen->extra = $this->Finbestemmingen_model->getsompersoortoverorgsSummed($orgids, $jaarnr, 'EXTRA');
|
|
$bestemmingen->formExtra = number_format($bestemmingen->extra,0, ',' , '.' );
|
|
$bestemmingen->som = $bestemmingen->basis + $bestemmingen->extra;
|
|
$bestemmingen->formSom = number_format($bestemmingen->som,0, ',' , '.' );
|
|
return $bestemmingen;
|
|
}
|
|
|
|
function get_budgetten_inclusief($orgids,$jaarnr){
|
|
$budgetten = $this->Toewijzingen_model->gettoewijzingenperjaaroverorgs($orgids, $jaarnr);
|
|
if ( ! $budgetten){
|
|
$budgetten = new stdClass;
|
|
$budgetten->basis = 0;
|
|
$budgetten->extra = 0;
|
|
$budgetten->totaal = 0;
|
|
}
|
|
$budgetten->formTotaal = number_format($budgetten->totaal, 0 , ',' , '.' );
|
|
return $budgetten;
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getorgids($orgid){
|
|
$organisaties = array();
|
|
$level2 = array();
|
|
$level3 = array();
|
|
$idarray = array();
|
|
$idarray[] =$orgid;
|
|
$soort = $this->Organisaties_model->get_fieldvalue(['id'=>$orgid], 'soort');
|
|
|
|
|
|
$organisaties = $this->Organisaties_model->getorgsonder($orgid);
|
|
if ($organisaties){
|
|
foreach($organisaties as $organisatie){
|
|
$level2= $this->Organisaties_model->getorgsonder($organisatie->id);
|
|
if ($level2){
|
|
foreach($level2 as $l2){
|
|
$level3 = $this->Organisaties_model->getorgsonder($l2->id);
|
|
if($level3){
|
|
foreach($level3 as $l3){
|
|
$idarray[]=$l3->id;
|
|
};
|
|
}; // if level3
|
|
$idarray[]=$l2->id;
|
|
}
|
|
}; // if level2
|
|
|
|
$idarray[] = $organisatie->id;
|
|
|
|
}
|
|
}; // if organisaties
|
|
return implode(',', $idarray);
|
|
}
|
|
|
|
private function get_bestuur_bestemmingen($orgid, $kalenderjaarnr){
|
|
|
|
$orgbestedingen = array();
|
|
$orgbestedingen['basis'] =0;
|
|
$orgbestedingen['formBasis'] ='' ;
|
|
$orgbestedingen['extra'] =0;
|
|
$orgbestedingen['formExtra'] = '';
|
|
$orgbestedingen['som'] =0;
|
|
$orgbestedingen['formSom'] = '';
|
|
|
|
$bestemmingenOrgZelf = $this->Finbestemmingen_model->getsompersoortoverorgs($orgid, $kalenderjaarnr);
|
|
$soort = $this->Organisaties_model->get_fieldvalue(['id' => $orgid], 'soort');
|
|
|
|
|
|
|
|
|
|
|
|
if ($bestemmingenOrgZelf){
|
|
foreach($bestemmingenOrgZelf as $besteding){
|
|
switch ($besteding->categorie){
|
|
// 25 sept tijdelijk oplossing, uiteindelijk wijzigen in eigen budget en uitgaven en uitgaven voor onder orgs
|
|
case "BASIS":
|
|
// $orgbestedingen['basis'] = $besteding->bedrag;
|
|
// $orgbestedingen['basis'] = $besteding->bedrag;
|
|
$orgbestedingen['basis'] = intval($soort)== 3 ?$besteding->bedrag: 0;
|
|
// $orgbestedingen['formBasis'] = number_format($besteding->bedrag,0, ',' , '.' );
|
|
$orgbestedingen['formBasis'] = intval($soort)== 3? number_format($besteding->bedrag,0, ',' , '.' ): 0;
|
|
break;
|
|
case "EXTRA":
|
|
// $orgbestedingen['extra'] = $besteding->bedrag;
|
|
// $orgbestedingen['formExtra'] = number_format($besteding->bedrag,0, ',' , '.' );
|
|
$orgbestedingen['extra'] = intval($soort)== 3 ?$besteding->bedrag: 0;
|
|
$orgbestedingen['formExtra'] = intval($soort)== 3? number_format($besteding->bedrag,0, ',' , '.' ): 0;
|
|
|
|
|
|
break;
|
|
};// switch
|
|
$orgbestedingen['som'] += $besteding->bedrag;
|
|
}; // foreach bestedingen
|
|
} ; // if bestedingen
|
|
$orgbestedingen['formSom']=number_format($orgbestedingen['som'] ,0, ',' , '.' );
|
|
return $orgbestedingen;
|
|
}
|
|
|
|
|
|
private function get_bestuur_gebudget($orgid, $kalenderjaarnr){
|
|
|
|
$orggebudget = array();
|
|
$orggebudget['basis'] =0;
|
|
$orggebudget['formBasis'] ='' ;
|
|
$orggebudget['extra'] =0;
|
|
$orggebudget['formExtra'] = '';
|
|
$orggebudget['som'] =0;
|
|
|
|
|
|
$gebudgetOrgZelf = $this->Finbestemmingen_model->getbudgetpersoortoverorgs($orgid, $kalenderjaarnr);
|
|
$soort = $this->Organisaties_model->get_fieldvalue(['id' => $orgid], 'soort');
|
|
|
|
|
|
|
|
|
|
|
|
if ($gebudgetOrgZelf){
|
|
foreach($gebudgetOrgZelf as $gebudget){
|
|
switch ($gebudget->categorie){
|
|
// 25 sept tijdelijk oplossing, uiteindelijk wijzigen in eigen budget en uitgaven en uitgaven voor onder orgs
|
|
case "BASIS":
|
|
// $orgbestedingen['basis'] = $besteding->bedrag;
|
|
// $orgbestedingen['basis'] = $besteding->bedrag;
|
|
$orggebudget['basis'] = intval($soort)== 3 ?$gebudget->budget: 0;
|
|
// $orgbestedingen['formBasis'] = number_format($besteding->bedrag,0, ',' , '.' );
|
|
$orggebudget['formBasis'] = intval($soort)== 3? number_format($gebudget->budget,0, ',' , '.' ): 0;
|
|
break;
|
|
case "EXTRA":
|
|
// $orgbestedingen['extra'] = $besteding->bedrag;
|
|
// $orgbestedingen['formExtra'] = number_format($besteding->bedrag,0, ',' , '.' );
|
|
$orggebudget['extra'] = intval($soort)== 3 ?$gebudget->budget: 0;
|
|
$orggebudget['formExtra'] = intval($soort)== 3? number_format($gebudget->budget,0, ',' , '.' ): 0;
|
|
|
|
|
|
break;
|
|
};// switch
|
|
$orggebudget['som'] += $gebudget->budget;
|
|
}; // foreach bestedingen
|
|
} ; // if bestedingen
|
|
$orggebudget['formSom']=number_format($orggebudget['som'] ,0, ',' , '.' );
|
|
return $orggebudget;
|
|
}
|
|
|
|
private function getbudgetten($orgid, $kalenderjaarnr, $som){
|
|
$budgetten =$this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr);
|
|
if (!$budgetten){
|
|
$budgetten=new stdClass;
|
|
$budgetten->basis = 0;
|
|
$budgetten->extra = 0;
|
|
}
|
|
$budgetten->basis = $budgetten->basis / 100;
|
|
$budgetten->extra = $budgetten->extra / 100;
|
|
$budgetten->totaal =$budgetten->basis + $budgetten->extra;
|
|
$budgetten->verschil = $budgetten->basis + $budgetten->extra - $som;
|
|
return $budgetten;
|
|
}
|
|
function getbestuurperuitgavetype(){
|
|
$targetorgid = $this->clean_input('orgid');
|
|
$kalenderjaarnr = $this->clean_input("jaarnr");
|
|
$targetorg = $this->Organisaties_model->get_record_by_id($targetorgid);
|
|
if (! $targetorg) $targetorg = new stdClass();
|
|
list($targetorg->pms, $targetorg->bud, $targetorg->kleur, $otherorgs) = $this->get_bestuur_pms($targetorgid, $kalenderjaarnr);
|
|
$sumother = $this->getsumotherpms($otherorgs);
|
|
$sumtot = $this->getsumtotpms($targetorg, $sumother);
|
|
|
|
$targetorg->pms = $this->format_all_bedragen($targetorg->pms, 5);
|
|
$targetorg->bud = $this->format_all_bedragen($targetorg->bud, 5);
|
|
$sumother = $this->format_all_bedragen($sumother, 11);
|
|
$sumtot = $this->format_all_bedragen($sumtot, 11);
|
|
if ($otherorgs){
|
|
foreach($otherorgs as $otherorg){
|
|
$otherorg->pms = $this->format_all_bedragen($otherorg->pms, 5);
|
|
$otherorg->bud = $this->format_all_bedragen($otherorg->bud, 5);
|
|
}
|
|
}
|
|
|
|
echo json_encode(['targetorg' => $targetorg,
|
|
'otherorgs' => $otherorgs,
|
|
'sumother' => $sumother,
|
|
'sumtot' => $sumtot]);
|
|
}
|
|
function format_all_bedragen($pms, $lengte){
|
|
|
|
for ($i = 0 ; $i <=$lengte; $i++){
|
|
if ($pms[$i] >0 ) $pms[$i]=number_format($pms[$i], 0, ',' , '.');
|
|
else $pms[$i]='';
|
|
}
|
|
return $pms;
|
|
}
|
|
|
|
private function get_bestuur_pms($targetorgid, $kalenderjaarnr)
|
|
{
|
|
$pms = $this->Finbestemmingen_model->get_pms($targetorgid, $kalenderjaarnr);
|
|
$targetorg = new stdClass();
|
|
$targetorg->pms[0] = 0;
|
|
$targetorg->pms[1] = 0;
|
|
$targetorg->pms[2] = 0;
|
|
$targetorg->pms[3] = 0;
|
|
$targetorg->pms[4] = 0;
|
|
$targetorg->pms[5] = 0;
|
|
|
|
$targetorg->bud[0] = 0;
|
|
$targetorg->bud[1] = 0;
|
|
$targetorg->bud[2] = 0;
|
|
$targetorg->bud[3] = 0;
|
|
$targetorg->bud[4] = 0;
|
|
$targetorg->bud[5] = 0;
|
|
|
|
$targetorg->kleur[0] = 'black';
|
|
$targetorg->kleur[1] = 'black';
|
|
$targetorg->kleur[2] = 'black';;
|
|
$targetorg->kleur[3] = 'black';
|
|
$targetorg->kleur[4] = 'black';
|
|
$targetorg->kleur[5] = 'black';
|
|
|
|
if ($pms) {
|
|
foreach ($pms as $uitgave) {
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "PERSONEEL") {
|
|
$targetorg->pms[0] += $uitgave->bedrag;
|
|
$targetorg->bud[0] += $uitgave->budget;
|
|
$targetorg->pms[0] > $targetorg->bud[0] ? $targetorg->kleur[0] = 'red' : 'black';
|
|
}
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "MATERIEEL") {
|
|
$targetorg->pms[1] += $uitgave->bedrag;
|
|
$targetorg->bud[1] += $uitgave->budget;
|
|
$targetorg->pms[1] > $targetorg->bud[1] ? $targetorg->kleur[1] = 'red' : 'black';
|
|
}
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "SCHOLING") {
|
|
$targetorg->pms[2] += $uitgave->bedrag;
|
|
$targetorg->bud[2] += $uitgave->budget;
|
|
$targetorg->pms[2] > $targetorg->bud[2] ? $targetorg->kleur[2] = 'red' : 'black';
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "PERSONEEL") {
|
|
$targetorg->pms[3] += $uitgave->bedrag;
|
|
$targetorg->bud[3] += $uitgave->budget;
|
|
$targetorg->pms[3] > $targetorg->bud[3] ? $targetorg->kleur[3] = 'red' : 'black';
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "MATERIEEL") {
|
|
$targetorg->pms[4] += $uitgave->bedrag;
|
|
$targetorg->bud[4] += $uitgave->budget;
|
|
$targetorg->pms[4] > $targetorg->bud[4] ? $targetorg->kleur[4] = 'red' : 'black';
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "SCHOLING") {
|
|
$targetorg->pms[5] += $uitgave->bedrag;
|
|
$targetorg->bud[5] += $uitgave->budget;
|
|
$targetorg->pms[5] > $targetorg->bud[5] ? $targetorg->kleur[5] = 'red' : 'black';
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$organisaties = $this->Organisaties_model->getorgs2($targetorgid);
|
|
|
|
if ($organisaties) {
|
|
foreach ($organisaties as $organisatie) {
|
|
$org_plus_subs = $this->getorgids($organisatie->orgid);
|
|
if (!$org_plus_subs) {
|
|
$org_plus_subs = $organisatie->orgid;
|
|
};
|
|
$pms = $this->Finbestemmingen_model->get_pms($org_plus_subs, $kalenderjaarnr);
|
|
$organisatie->pms[0] = 0;
|
|
$organisatie->pms[1] = 0;
|
|
$organisatie->pms[2] = 0;
|
|
$organisatie->pms[3] = 0;
|
|
$organisatie->pms[4] = 0;
|
|
$organisatie->pms[5] = 0;
|
|
$organisatie->bud[0] = 0;
|
|
$organisatie->bud[1] = 0;
|
|
$organisatie->bud[2] = 0;
|
|
$organisatie->bud[3] = 0;
|
|
$organisatie->bud[4] = 0;
|
|
$organisatie->bud[5] = 0;
|
|
$organisatie->kleur[0] = 'black';
|
|
$organisatie->kleur[1] = 'black';
|
|
$organisatie->kleur[2] = 'black';
|
|
$organisatie->kleur[3] = 'black';
|
|
$organisatie->kleur[4] = 'black';
|
|
$organisatie->kleur[5] = 'black';
|
|
if ($pms) {
|
|
foreach ($pms as $uitgave) {
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "PERSONEEL") {
|
|
$organisatie->pms[0] += $uitgave->bedrag;
|
|
$organisatie->bud[0] += $uitgave->budget;
|
|
}
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "MATERIEEL") {
|
|
$organisatie->pms[1] += $uitgave->bedrag;
|
|
$organisatie->bud[1] += $uitgave->budget;
|
|
}
|
|
if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype == "SCHOLING") {
|
|
$organisatie->pms[2] += $uitgave->bedrag;
|
|
$organisatie->bud[2] += $uitgave->budget;
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "PERSONEEL") {
|
|
$organisatie->pms[3] += $uitgave->bedrag;
|
|
$organisatie->bud[3] += $uitgave->budget;
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "MATERIEEL") {
|
|
$organisatie->pms[4] += $uitgave->bedrag;
|
|
$organisatie->bud[4] += $uitgave->budget;
|
|
}
|
|
if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype == "SCHOLING") {
|
|
$organisatie->pms[5] += $uitgave->bedrag;
|
|
$organisatie->bud[5] += $uitgave->budget;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
if ($organisatie->pms[0] > $organisatie->bud[0]) $organisatie->kleur[0] = 'red';
|
|
if ($organisatie->pms[1] > $organisatie->bud[1]) $organisatie->kleur[1] = 'red';
|
|
if ($organisatie->pms[2] > $organisatie->bud[2]) $organisatie->kleur[2] = 'red';
|
|
if ($organisatie->pms[3] > $organisatie->bud[3]) $organisatie->kleur[3] = 'red';
|
|
if ($organisatie->pms[4] > $organisatie->bud[4]) $organisatie->kleur[4] = 'red';
|
|
if ($organisatie->pms[5] > $organisatie->bud[4]) $organisatie->kleur[5] = 'red';
|
|
|
|
|
|
}; // if organisaties
|
|
|
|
return [$targetorg->pms, $targetorg->bud, $targetorg->kleur, $organisaties];
|
|
}
|
|
|
|
}
|
|
|
|
function getsumtotpms($targetorg, $sumother){
|
|
$sumtot = [];
|
|
if (! $sumother || ! $targetorg) return $sumtot;
|
|
$sumtot[0] = $targetorg->pms[0] + $sumother[0];
|
|
$sumtot[1] = $targetorg->pms[1] + $sumother[1];
|
|
$sumtot[2] = $targetorg->pms[2] + $sumother[2];
|
|
$sumtot[3] = $targetorg->pms[3] + $sumother[3];
|
|
$sumtot[4] = $targetorg->pms[4] + $sumother[4];
|
|
$sumtot[5] = $targetorg->pms[5] + $sumother[5];
|
|
$sumtot[6] = $targetorg->bud[0] + $sumother[6];
|
|
$sumtot[7] = $targetorg->bud[1] + $sumother[7];
|
|
$sumtot[8] = $targetorg->bud[2] + $sumother[8];
|
|
$sumtot[9] = $targetorg->bud[3] + $sumother[9];
|
|
$sumtot[10] = $targetorg->bud[4] + $sumother[10];
|
|
$sumtot[11] = $targetorg->bud[5] + $sumother[11];
|
|
$sumtot[12] = $sumtot[0] > $sumtot[6] ? 'red' : 'black';
|
|
$sumtot[13] = $sumtot[1] > $sumtot[7] ? 'red' : 'black';
|
|
$sumtot[14] = $sumtot[2] > $sumtot[8] ? 'red' : 'black';
|
|
$sumtot[15] = $sumtot[3] > $sumtot[9] ? 'red' : 'black';
|
|
$sumtot[16] = $sumtot[4] > $sumtot[10] ? 'red' : 'black';
|
|
$sumtot[17] = $sumtot[5] > $sumtot[11] ? 'red' : 'black';
|
|
return $sumtot;
|
|
}
|
|
|
|
function getsumotherpms($otherorgs){
|
|
$sumother =[];
|
|
if (! $otherorgs) return $sumother;
|
|
$sumother[0] = 0;
|
|
$sumother[1] = 0;
|
|
$sumother[2] = 0;
|
|
$sumother[3] = 0;
|
|
$sumother[4] = 0;
|
|
$sumother[5] = 0;
|
|
$sumother[6] = 0;
|
|
$sumother[7] = 0;
|
|
$sumother[8] = 0;
|
|
$sumother[9] = 0;
|
|
$sumother[10] = 0;
|
|
$sumother[11] = 0;
|
|
$sumother[12] = 'black';
|
|
$sumother[13] = 'black';
|
|
$sumother[14] = 'black';
|
|
$sumother[15] = 'black';
|
|
$sumother[16] = 'black';
|
|
$sumother[17] = 'black';
|
|
foreach($otherorgs as $org){
|
|
$sumother[0] += $org->pms[0];
|
|
$sumother[1] += $org->pms[1];
|
|
$sumother[2] += $org->pms[2];
|
|
$sumother[3] += $org->pms[3];
|
|
$sumother[4] += $org->pms[4];
|
|
$sumother[5] += $org->pms[5];
|
|
$sumother[6] += $org->bud[0];
|
|
$sumother[7] += $org->bud[1];
|
|
$sumother[8] += $org->bud[2];
|
|
$sumother[9] += $org->bud[3];
|
|
$sumother[10] += $org->bud[4];
|
|
$sumother[11] += $org->bud[5];
|
|
|
|
}
|
|
|
|
foreach($otherorgs as $org){
|
|
if ($org->pms){
|
|
if( $sumother[0] > $sumother[6]) $sumother[12] = 'red';
|
|
if( $sumother[1] > $sumother[7]) $sumother[13] = 'red';
|
|
if( $sumother[2] > $sumother[8]) $sumother[14] = 'red';
|
|
if( $sumother[3] > $sumother[9]) $sumother[15] = 'red';
|
|
if( $sumother[4] > $sumother[10]) $sumother[16] = 'red';
|
|
if( $sumother[5] > $sumother[11]) $sumother[17] = 'red';
|
|
|
|
}
|
|
}
|
|
|
|
return $sumother;
|
|
}
|
|
|
|
function PdfFinancien(){
|
|
$input = json_decode($this->input->post('data'));
|
|
|
|
$soort = $input->soort;
|
|
switch ($soort){
|
|
case 0 : $titel = "Gesommeerde bestedingen onderliggende organisaties"; break;
|
|
case 1 : $titel = "Details eigen organisatie"; break;
|
|
case 2 : $titel = "Gesommeerde uitgaven personeel, materieel en scholing"; break;
|
|
case 3 : $titel = "Details onderliggende organisaties" ; break;
|
|
default: $titel = "Rapport";
|
|
}
|
|
$data = ['inhoud' =>$input->html,
|
|
'jaar' => $input->jaar,
|
|
'org' => $input->org,
|
|
'titel' => $titel];
|
|
$html = $this->load->view("monpas/reports/financien", $data, true);
|
|
$filenaam ="financien";
|
|
$this->Phantom_model->create_pdf($html, $filenaam, FALSE, TRUE, [50,50,100, 70], 'LANDSCAPE');
|
|
|
|
}
|
|
} |