288 lines
11 KiB
PHP
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);
|
|
}
|
|
} |