Files
monpas/application/controllers/monpas/Monfinoverzicht.php
T
2021-07-10 16:25:16 +02:00

288 lines
11 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Monfinoverzicht extends MY_Controller{
function __construct(){
parent::__construct();
$models = array("monpas/Bestedingen_model",
"monpas/Bestedingopmerkingen_model",
"monpas/Bestemmingslabels_model",
"monpas/Toewijzingen_model",
"shared/Kalenderjaren_model",
"Phantom_model");
$this->load->model($models);
$this->load->helper('string');
}
public function index(){ }
public function getkalenderjaren(){
$kalenderjaren = $this->Kalenderjaren_model->getkalenderjaren();
echo json_encode($kalenderjaren);
}
public function getkalenderjarenMetMax(){
$targetjaar = $this->Toewijzingen_model->getNextJaar($this->globorgid);
$kalenderjaren = $this->Kalenderjaren_model->getkalenderjarenMetMax($targetjaar);
echo json_encode($kalenderjaren);
}
private function getbudgetten($orgid, $kalenderjaarnr){
$budgetten =$this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr);
if (!$budgetten){
$budgetten=new stdClass;
$budgetten->basis = 0;
$budgetten->extra = 0;
$budgetten->som = 0;
$budgetten->overig = 0;
$budgetten->basisextra = 1;
}
if ($budgetten->basisextra==1){
$budgetten->totaal = $budgetten->basis + $budgetten->extra + $budgetten->overig;
}
else {$budgetten->totaal = $budgetten->som + $budgetten->overig;};
return $budgetten;
}
private function getbestedingen($orgids, $kalenderjaarnr){
$basisextra = true;
$orgbestedingen = array();
$orgbestedingen['basis'] =0;
$orgbestedingen['extra'] =0;
$orgbestedingen['besom'] =0;
$orgbestedingen['overig'] =0;
$orgbestedingen['totaal'] =0;
$bestedingen=$this->Bestedingen_model->getsompersoortoverorgs($orgids, $kalenderjaarnr);
if ($bestedingen){
foreach($bestedingen as $besteding){
switch ($besteding->soort){
case 1: $orgbestedingen['basis']= $besteding->bedrag;
break;
case 2: $orgbestedingen['extra']= $besteding->bedrag;
break;
case 3: $orgbestedingen['besom'] += $besteding->bedrag;
break;
case 4: $orgbestedingen['overig']= $besteding->bedrag;
break;
};// switch
$orgbestedingen['totaal'] += $besteding->bedrag;
if ( ($besteding->soort == 1 || $besteding->soort==2)){
// dit mag je zonder controle op basisextra optellen omdat dit of nul is als basisextra = 0
// in dat geval is de werkelijke waarde (de som) hierboven in de switch al opgeteld
$orgbestedingen['besom'] += $besteding->bedrag;
}
if ($besteding->basisextra ==0){ $basisextra=false; }
}; // foreach bestedingen
} ; // if bestedingen
return array("orgbestedingen" =>$orgbestedingen,
"basisextra" => $basisextra);
}
function getbestuursbedragen(){
$targetorgid = $this->clean_input("orgid");
$kalenderjaarnr = $this->clean_input("jaarnr");
$sumarray = array('basisuit' => 0, 'basisbudget' =>0,
'extrauit' => 0, 'extrabudget' =>0,
'besomuit' => 0, 'besombudget' =>0,
'overiguit' => 0, 'overigbudget' =>0,
'totaaluit' => 0, 'totaalbudget' => 0);
$grandtot = array('basisuit'=>0, "extrauit" =>0, 'besomuit'=>0, 'overiguit' =>0,
'totaaluit'=>0, 'totaalbudget'=>0, 'verschil'=>0);
$basisextra = true;
$targetorg = $this->Organisaties_model->get_record_by_id($targetorgid);
$targetorg->budgetten = $this->getbudgetten($targetorgid, $kalenderjaarnr);
$result = $this->getbestedingen($targetorgid, $kalenderjaarnr);
$targetorg->bestedingen = $result['orgbestedingen'];
if ($basisextra) $basisextra = $result['basisextra'];
// haal de organisaties direct onder de target org op (inclusief de eerste onderliggende organisaties)
$soort = $targetorg->soort +1;
$organisaties = $this->Organisaties_model->getorgs($soort, $targetorgid);
// controleer ook of alle suborganisaties het onderscheid basis/extra maken of niet
if ($organisaties){
foreach($organisaties as $organisatie){
$organisatie->budgetten = $this->getbudgetten($organisatie->id, $kalenderjaarnr);
if ($organisatie->budgetten) {
$sumarray['basisbudget'] += $organisatie->budgetten->basis;
$sumarray['extrabudget'] += $organisatie->budgetten->extra;
$sumarray['overigbudget'] += $organisatie->budgetten->overig;
if ($organisatie->budgetten->basisextra ==0){
$sumarray['besombudget'] += $organisatie->budgetten->som;
$sumarray['totaalbudget'] += $organisatie->budgetten->som + $organisatie->budgetten->overig;
}
else {
$sumarray['besombudget'] += $organisatie->budgetten->basis+ $organisatie->budgetten->extra;
$sumarray['totaalbudget'] += $organisatie->budgetten->basis+ $organisatie->budgetten->extra +$organisatie->budgetten->overig;
}
if ($organisatie->budgetten->basisextra ==0) $basisextra = false;
$orgids = $this->getorgids($organisatie->id);
$result= $this->getbestedingen($orgids, $kalenderjaarnr,$organisatie->budgetten->basisextra);
$organisatie->bestedingen = $result['orgbestedingen'];
if($basisextra) $basisextra = $result['basisextra'];
$sumarray['basisuit'] += $organisatie->bestedingen['basis'];
$sumarray['extrauit'] += $organisatie->bestedingen['extra'];
$sumarray['besomuit'] += $organisatie->bestedingen['besom'] ;
$sumarray['overiguit'] += $organisatie->bestedingen['overig'];
$sumarray['totaaluit'] += $organisatie->bestedingen['totaal'];
}; // if budgetten
}
}; // if organisaties
$grandtot['basisuit'] = $sumarray['basisuit'] + $targetorg->bestedingen['basis'];
$grandtot['extrauit'] = $sumarray['extrauit'] + $targetorg->bestedingen['extra'];
$grandtot['besomuit'] = $sumarray['besomuit'] + $targetorg->bestedingen['besom'];
$grandtot['overiguit'] = $sumarray['overiguit'] + $targetorg->bestedingen['overig'];
$grandtot['totaaluit'] = $sumarray['totaaluit'] + $targetorg->bestedingen['totaal'];
$grandtot['totaalbudget'] = $targetorg->budgetten->totaal;
$grandtot['verschil'] = $grandtot['totaalbudget'] - $grandtot['totaaluit'];
echo json_encode(array('targetorg' =>$targetorg,
'organisaties' =>$organisaties,
"sumarray" =>$sumarray,
"basisextra" =>$basisextra,
"grandtot" =>$grandtot));
}
private function getorgids($orgid){
$organisaties = array();
$level2 = array();
$level3 = array();
$idarray = array();
$idarray[] =$orgid;
$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);
}
function getschoolbedragen(){
$orgid = $this->clean_input("orgid");
$kalenderjaarnr = $this->clean_input("jaarnr");
$labels = $this->Bestemmingslabels_model->getsoorten();
$budgetten = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr);
$totbudget = 0;
$totbesteed = 0;
$basis = array();
$extra = array();
$ondersteuning = array();
$overige = array();
$sompersoort = array();
$schooltot = 0;
$opmerking = '';
if ($budgetten){
if ($budgetten->basisextra == 1){
$totbudget = $budgetten->basis + $budgetten->extra + $budgetten->overig;
$basis = $this->Bestedingen_model->getschoolbestedingenpersoort($orgid, $kalenderjaarnr,1);
$extra = $this->Bestedingen_model->getschoolbestedingenpersoort($orgid, $kalenderjaarnr,2);
$overig = $this->Bestedingen_model->getschoolbestedingenpersoort($orgid, $kalenderjaarnr,4);
}
else {
$totbudget = $budgetten->som + $budgetten->overig;
$ondersteuning = $this->Bestedingen_model->getschoolbestedingenpersoort($orgid, $kalenderjaarnr,3);
$overig = $this->Bestedingen_model->getschoolbestedingenpersoort($orgid, $kalenderjaarnr,4);
}
$getsombasis = $this->Bestedingen_model->getsom($basis, $budgetten,$labels,1);
$totbesteed += $getsombasis['totsoort'];
$getsomextra = $this->Bestedingen_model->getsom($extra, $budgetten,$labels,2);
$totbesteed += $getsomextra['totsoort'];
$getsomondersteuning = $this->Bestedingen_model->getsom($ondersteuning, $budgetten,$labels,3);
$totbesteed += $getsomondersteuning['totsoort'];
$getsomoverig = $this->Bestedingen_model->getsom($overig, $budgetten,$labels,4);
$totbesteed += $getsomoverig['totsoort'];
$verschil = $totbudget - $totbesteed;
$schooltot = array( 'budget' => number_format($totbudget/100, 2, ',' , '.' ),
"bestemd" => number_format($totbesteed/100, 2, ',' , '.' ),
"verschil" => number_format($verschil/100, 2, ',' , '.' ));
if ($budgetten->basisextra == 1){
$sompersoort[0] =$getsombasis;
$sompersoort[1]= $getsomextra;
$sompersoort[2]= $getsomoverig;
}
else{
$sompersoort[0]=$getsomondersteuning;
$sompersoort[1]=$getsomoverig;
};
$opmerking = $this->Bestedingopmerkingen_model->getopmerking($orgid, $kalenderjaarnr);
}; // if budgetten
echo json_encode(array('sompersoort' => $sompersoort,
'schooltotaal' => $schooltot,
'opmerking' => $opmerking));
}
function getbedragen(){
$orgid = $this->clean_input("orgid");
$kalenderjaarnr = $this->clean_input("jaarnr");
$budgetten = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr);
$totbudget = 0;
if ($budgetten){
if ($budgetten->basisextra == 1){
$totbudget = $budgetten->basis + $budgetten->extra + $budgetten->overig;
}
else {
$totbudget = $budget->som+ $budget->overig;
}
}
$schoolbedragen = array();
$schoolbedragen = $this->Bestedingen_model->getschoolbestedingen($orgid, $kalenderjaarnr);
if ($schoolbedragen){
$somarray =$this->Bestedingen_model->sumschoolbedragen($schoolbedragen,$budgetten);
$verschil = $totbudget - $somarray['totaal'];
$schooltot = array( 'budget' => number_format($totbudget/100, 2, ',' , '.' ),
"bestemd" => number_format($somarray['totaal']/100, 2, ',' , '.' ),
"verschil" => number_format($verschil/100, 2, ',' , '.' ));
echo json_encode(array("schooltotaal" => $schooltot,
'sompersoort' => $somarray['sompersoort']));
}
else {echo json_encode(false);};
}
function overzichtPDF(){
$inputstring = $this->input->post('data');
$input = json_decode($inputstring);
$orgnaam = $input->orgnaam;
$kalenderjaar = $input->kalenderjaar;
$orgTable = $input->orgtable;
$data= array( "organisatie" => $orgnaam,
"kalenderjaar" => $kalenderjaar,
"table" => $orgTable);
$html = $this->load->view("monpas/reports/monfinoverzicht", $data, true);
$filenaam="monfin";
$this->Phantom_model->create_pdf($html, $filenaam, FALSE, FALSE, FALSE);
}
}