diff --git a/application/config/config.php b/application/config/config.php index 4257562..5ecbc16 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -227,7 +227,7 @@ $config['allow_get_array'] = TRUE; | your log files will fill up very fast. | */ -$config['log_threshold'] = 0; +$config['log_threshold'] = 1; /* |-------------------------------------------------------------------------- diff --git a/application/controllers/monfin2/Bestemmingen.php b/application/controllers/monfin2/Bestemmingen.php index 707cf4f..566f845 100644 --- a/application/controllers/monfin2/Bestemmingen.php +++ b/application/controllers/monfin2/Bestemmingen.php @@ -8,7 +8,6 @@ class Bestemmingen extends MY_Controller{ "monpas/Toewijzingen_model", "monfin2/Finuitgavetypes_model", "monfin2/Finbestemmingen_model", - "monfin2/Finsoorten_model", "monfin2/Finsubsoorten_model"); $this->load->model($models); @@ -23,7 +22,7 @@ class Bestemmingen extends MY_Controller{ $org = $this->Organisaties_model->get_record_by_id($this->globorgid); $targetjaar = $this->Toewijzingen_model->getNextJaar($this->globorgid); - $kalenderjaren = $this->Kalenderjaren_model->getkalenderjarenMetMax($targetjaar); + $kalenderjaren = $this->Kalenderjaren_model->getkalenderjaren(); if ($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) > 0 ) {$writer = true;} @@ -52,12 +51,11 @@ class Bestemmingen extends MY_Controller{ function getBestemmingen(){ if($this->Autorisaties_model->check_autorisatie($this->userrole, READER) <=0) { $jaartoewijzing =array(); - $bestedingen = array(); $jaarclosed = TRUE; } else { $orgid = $this->globorgid; - $jaarnr = $this->input->post('jaarnr'); + $jaarnr = $this->clean_input('jaarnr'); $jaarclosed = FALSE; $jaartoewijzing = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $jaarnr); if ($jaartoewijzing){ @@ -72,7 +70,7 @@ class Bestemmingen extends MY_Controller{ } $basisbestemmingen = $this->Finbestemmingen_model->get_bestemmingen($orgid,$jaarnr,"BASIS"); $extrabestemmingen = $this->Finbestemmingen_model->get_bestemmingen($orgid,$jaarnr,"EXTRA"); - + $opmerking = $this->Bestedingopmerkingen_model->getopmerking($orgid, $jaarnr); }; @@ -89,11 +87,25 @@ class Bestemmingen extends MY_Controller{ $bestemmingID = $this->clean_input("id"); $targetjaar = $this->Toewijzingen_model->getNextJaar($this->globorgid); $bestemmingjaar = $this->Finbestemmingen_model->get(['id'=>$bestemmingID], 'kalenderjaar', true); - if ($targetjaar == $bestemmingjaar){ - $this->Finbestemmingen_model->update_record(['bedrag'=>$this->input->post('bedrag')], $bestemmingID); - } +// if ($targetjaar >= $bestemmingjaar){ + $this->Finbestemmingen_model->update_record(['bedrag'=>$this->clean_input('bedrag')], $bestemmingID); + +// } + $record = $this->Finbestemmingen_model->get_record_by_id($bestemmingID); + json_encode(['record'=>$record]); } + function updatebudget(){ + // TODO check autorisatie + $bestemmingID = $this->clean_input("id"); + $targetjaar = $this->Toewijzingen_model->getNextJaar($this->globorgid); + $bestemmingjaar = $this->Finbestemmingen_model->get(['id'=>$bestemmingID], 'kalenderjaar', true); +// if ($targetjaar >= $bestemmingjaar) { + $this->Finbestemmingen_model->update_record(['budget' => $this->clean_input('budget')], $bestemmingID); +// } + } + + function saveopmerking(){ // TODO check autorisatie $orgid = $this->globorgid; diff --git a/application/controllers/monfin2/Monfin2overzicht.php b/application/controllers/monfin2/Monfin2overzicht.php index 7a5455a..5494df4 100644 --- a/application/controllers/monfin2/Monfin2overzicht.php +++ b/application/controllers/monfin2/Monfin2overzicht.php @@ -22,35 +22,56 @@ class Monfin2overzicht extends MY_Controller{ $kalenderjaarnr = $this->clean_input("jaarnr"); $uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes(); $budgetten = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr); - $totbudget = 0; - $totbesteed = 0; - $basis = array(); - $extra = array(); - $sompersoort = array(); - $schooltot = 0; - $opmerking = ''; - - if ($budgetten){ - // $totbudget = $budgetten->basis + $budgetten->extra ; - $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra)/100); - $budgetten->basis = ROUND($budgetten->basis / 100); - $budgetten->extra = Round($budgetten->extra/ 100); + if ($budgetten) { + $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra) / 100); + $budgetten->basis = ROUND($budgetten->basis / 100); + $budgetten->extra = Round($budgetten->extra / 100); + } + else{ + $budgetten = new stdClass(); + $budgetten->totaal = 0; + $budgetten->basis = 0; + $budgetten->extra = 0; + } $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); - $basis = $this->get_som_regel($basis); - $extra = $this->get_som_regel($extra); - // todo + $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']; + // todo // bereken budget - besteding verschil per basis/extra/overig - $budgetten->basisverschil = number_format($budgetten->basis - $sombasisperuitgavetype[3]->som, 0, ',' , '.' ); - $budgetten->extraverschil = number_format($budgetten->extra - $somextraperuitgavetype[3]->som, 0, ',' , '.' ); - $budgetten->totaalverschil = $budgetten->totaal - ($sombasisperuitgavetype[3]->som +$somextraperuitgavetype[3]->som); - // todo + $budgetten->basisverschil = number_format($budgetten->basis - $sombasisperuitgavetype[0]->som, 0, ',' , '.' ); + $budgetten->extraverschil = number_format($budgetten->extra - $somextraperuitgavetype[0]->som, 0, ',' , '.' ); + $budgetten->totaalverschil = $budgetten->totaal - ($sombasisperuitgavetype[0]->som +$somextraperuitgavetype[0]->som); + + + $budgetten->basisbudgetpct = number_format($sombudgetpct, 1,',', '.'); + $budgetten->basisbedragpct = number_format($sombedragpct, 1,',', '.'); + + $budgetten->extrabudgetpct = number_format($sombudgetpctex, 1,',', '.'); + $budgetten->extrabedragpct = number_format($sombedragpctex, 1,',', '.'); + + $bedrag = $budgetten->totaal > 0 ? ($totbesteed/$budgetten->totaal) *100: 0; + $budgetten->totbedragbudgetkaal = $bedrag; + $budgetten->totbedragbudgetpct = number_format($bedrag, 1, ',', '.'); + $bedrag2 = $budgetten->totaal > 0 ?($totgebudgeteerd/$budgetten->totaal)*100 : 0; + $budgetten->totbudgetpct = number_format($bedrag2, 1, ',', '.'); + + // todo // zorg dat alle getallen geformateerd zijn met een duizendtalscheidingsteken $budgetten->totaal = number_format($budgetten->totaal, 0 , ',' , '.'); $budgetten->basis = number_format($budgetten->basis , 0 , ',' , '.'); @@ -58,34 +79,50 @@ class Monfin2overzicht extends MY_Controller{ foreach($sombasisperuitgavetype as $sompertype){ $sompertype->som = number_format($sompertype->som,0, ',' , '.' ); - } + $sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' ); + + + } foreach($somextraperuitgavetype as $sompertype){ $sompertype->som = number_format($sompertype->som,0, ',' , '.' ); - } + $sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' ); + + + } foreach($totsomperuitgavetype as $sompertype){ $sompertype->som = number_format($sompertype->som,0, ',' , '.' ); - } + $sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' ); - $schooltot = array( 'budget' => $budgetten->totaal , + + } + + + + + + + + $schooltot = array( 'budget' => $budgetten->totaal , "bestemd" => number_format($totbesteed, 0, ',' , '.' ), + "gebudget" => number_format($totgebudgeteerd, 0, ',' , '.' ), "verschil" => number_format($budgetten->totaalverschil, 0, ',' , '.' )); $opmerking = $this->Bestedingopmerkingen_model->getopmerking($orgid, $kalenderjaarnr); - }; // if budgetten +// }; // 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)); + 'basis' =>$basis, + 'extra' =>$extra, + 'sombasisperuitgavetype' =>$sombasisperuitgavetype, + 'somextraperuitgavetype' =>$somextraperuitgavetype, + 'totsomperuitgavetype' =>$totsomperuitgavetype, + 'schooltotaal' => $schooltot, + 'budgetten' => $budgetten, + 'opmerking' => $opmerking)); } function getschoolbedragenNieuw(){ @@ -103,24 +140,24 @@ class Monfin2overzicht extends MY_Controller{ } else { $budgetten = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr); } - $totbudget = 0; - $totbesteed = 0; + $basis = array(); $extra = array(); - $sompersoort = array(); + $schooltot = 0; $opmerking = ''; - if ($budgetten){ - if ($soortoverzicht == 3){ - $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra)); - $budgetten->basis = ROUND($budgetten->basis ); - $budgetten->extra = ROUND($budgetten->extra); - } else { - $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra)/100); - $budgetten->basis = ROUND($budgetten->basis / 100); - $budgetten->extra = ROUND($budgetten->extra/ 100); - } + if ($budgetten) { + if ($soortoverzicht == 3) { + $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra)); + $budgetten->basis = ROUND($budgetten->basis); + $budgetten->extra = ROUND($budgetten->extra); + } else { + $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra) / 100); + $budgetten->basis = ROUND($budgetten->basis / 100); + $budgetten->extra = ROUND($budgetten->extra / 100); + } + 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"); @@ -132,15 +169,47 @@ class Monfin2overzicht extends MY_Controller{ $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); - $basis = $this->get_som_regel($basis); - $extra = $this->get_som_regel($extra); + $totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG'); + $totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET'); + $sommen = $this->get_som_per_regel($basis, $budgetten->basis, $sombasisperuitgavetype[0]); + + $basis = $sommen['soorten']; +// $somgebudgetpct = $sommen['somgebudgetpct']; + $sombudgetpct = $sommen['sombudgetpct']; + $sombedragpct = $sommen['sombedragpct']; +// $sombedragbudgetpct = $sommen['sombedragbudgetpct']; + + $sommenex = $this->get_som_per_regel($extra, $budgetten->extra, $somextraperuitgavetype[0] ); + $extra = $sommenex['soorten']; +// $somgebudgetpctex = $sommenex['somgebudgetpct']; + $sombudgetpctex = $sommenex['sombudgetpct']; + $sombedragpctex = $sommenex['sombedragpct']; +// $sombedragbudgetpctex = $sommen['sombedragbudgetpct']; // todo // bereken budget - besteding verschil per basis/extra/overig $budgetten->basisverschil = number_format($budgetten->basis - $sombasisperuitgavetype[3]->som, 0, ',' , '.' ); $budgetten->extraverschil = number_format($budgetten->extra - $somextraperuitgavetype[3]->som, 0, ',' , '.' ); $budgetten->totaalverschil = $budgetten->totaal - ($sombasisperuitgavetype[3]->som +$somextraperuitgavetype[3]->som); - // todo + $budgetten->basisbudgetpct = number_format($sombudgetpct, 2,',', '.'); +// $budgetten->basisgebudgetpct = number_format($somgebudgetpct, 2,',', '.'); + $budgetten->basisbedragpct = number_format($sombedragpct, 2,',', '.'); +// $budgetten->basisbedragbudgetpct = number_format($sombedragbudgetpct, 2,',', '.'); + + $budgetten->extrabudgetpct = number_format($sombudgetpctex, 2,',', '.'); +// $budgetten->extragebudgetpct = number_format($somgebudgetpctex, 2,',', '.'); + $budgetten->extrabedragpct = number_format($sombedragpctex, 2,',', '.'); +// $budgetten->extrabedragbudgetpct = number_format($sombedragbudgetpctex, 2,',', '.'); + + $bedrag = $budgetten->totaal > 0 ? ($totbesteed/$budgetten->totaal) *100: 0; + $budgetten->totbedragbudgetkaal = $bedrag; + $budgetten->totbedragbudgetpct = number_format($bedrag, 2, ',', '.'); + $budgetten->totbedragpct = $totbesteed > 0 ? '100,00': 0; + $bedrag2 = $budgetten->totaal > 0 ?($totgebudgeteerd/$budgetten->totaal)*100 : 0; + $budgetten->totbudgetpct = number_format($bedrag2, 2, ',', '.'); + + + + // todo // zorg dat alle getallen geformateerd zijn met een duizendtalscheidingsteken $budgetten->totaal = number_format($budgetten->totaal, 0 , ',' , '.'); $budgetten->basis = number_format($budgetten->basis , 0 , ',' , '.'); @@ -148,16 +217,23 @@ class Monfin2overzicht extends MY_Controller{ foreach($sombasisperuitgavetype as $sompertype){ $sompertype->som = number_format($sompertype->som,0, ',' , '.' ); - } + $sompertype->budgetsom = number_format($sompertype->budgetsom,0, ',' , '.' ); + + } foreach($somextraperuitgavetype as $sompertype){ $sompertype->som = number_format($sompertype->som,0, ',' , '.' ); - } + $sompertype->budgetsom = number_format($sompertype->budgetsom,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, ',' , '.' ), + "gebudget" => number_format($totgebudgeteerd, 0, ',' , '.' ), "verschil" => number_format($budgetten->totaalverschil, 0, ',' , '.' )); if ($soortoverzicht == 3){ @@ -166,9 +242,9 @@ class Monfin2overzicht extends MY_Controller{ $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($sombasisperuitgavetype)) $sombasisperuitgavetype = false; + if (! isset($somextraperuitgavetype)) $somextraperuitgavetype = false; + if (! isset($totsomperuitgavetype)) $totsomperuitgavetype = false; if (! isset($schooltot)) $schooltot = 0; echo json_encode(array('uitgavetypes' =>$uitgavetypes, @@ -181,46 +257,86 @@ class Monfin2overzicht extends MY_Controller{ 'budgetten' => $budgetten, 'opmerking' => $opmerking)); } - function sommeeralles($totsomperuitgavetype){ - $totsom =0; - if ($totsomperuitgavetype){ - foreach($totsomperuitgavetype as $som){ - if ($som->code != "REGELSOM"){ - $totsom += $som->som; - } - } - } - return $totsom; - } - - function get_som_regel($soorten){ - if ($soorten){ - foreach($soorten as $soort){ - if ($soort->subsoorten){ - foreach ($soort->subsoorten as $subsoort){ - $som = 0; - if ($subsoort->uitgavetypes){ - foreach($subsoort->uitgavetypes as $uitgavetype){ - if ($uitgavetype && $uitgavetype->bedrag){ - $som += $uitgavetype->bedrag; - $uitgavetype->bedrag = number_format($uitgavetype->bedrag,0,',','.'); - } - } - } - $subsoort->uitgavetypes[3]= new stdClass; - $subsoort->uitgavetypes[3]->bedrag =number_format($som,0, ',' , '.'); - $subsoort->uitgavetypes[3]->code ='REGELSOM'; + 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 = empty($subsoort->uitgavetypes[0]->bedrag) || floatval($subsoort->uitgavetypes[0]->bedrag) == 0 ? $personeel + $materieel + $scholing : floatval($subsoort->uitgavetypes[0]->bedrag); + $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; + + 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){ @@ -228,65 +344,78 @@ class Monfin2overzicht extends MY_Controller{ $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; + 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; + 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] = 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; - } - if ($basis){ - foreach($basis as $soort){ - if ($soort->subsoorten){ - foreach ($soort->subsoorten as $subsoort){ - if ($subsoort->uitgavetypes){ - foreach($subsoort->uitgavetypes as $uitgavetype) { - $sombasis[$uitgavetype->code]->som += $uitgavetype->bedrag; - } //foreach - }// if uitgavetypes - }//foreach subsoort - }//if subsoort - }//foreach basis - } // if basis - } // if uitgavetypes - $somasarray=[]; - $index = 0; - $regelsom=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); - $regelsom += $somasarray[$index ]->som; - $index += 1; - }; - $somasarray[$index] = new stdClass; - $somasarray[$index]->code ="REGELSOM"; - $somasarray[$index]->naam = "Som"; - $somasarray[$index]->som = $regelsom; - - return $somasarray; - } + 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; + $regelsom3 = 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; + $regelsom2 += $somasarray[$index ]->budgetsom; + } + $index += 1; + }; + + $somasarray[0]->som = $regelsom; + $somasarray[0]->budgetrestant = $somasarray[0]->budgetsom - $regelsom2; + + return $somasarray; + } function getbestuursbedragen(){ $targetorgid = $this->clean_input('orgid'); @@ -466,16 +595,18 @@ class Monfin2overzicht extends MY_Controller{ $targetorgid = $this->clean_input('orgid'); $kalenderjaarnr = $this->clean_input("jaarnr"); $targetorg = $this->Organisaties_model->get_record_by_id($targetorgid); - list($targetorg->pms,$otherorgs) = $this->get_bestuur_pms($targetorgid, $kalenderjaarnr); - $sumother = $this->getsumotherpms($otherorgs); - $sumtot = $this->getsumtotpms($targetorg, $sumother); + 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); - $sumother = $this->format_all_bedragen($sumother); - $sumtot = $this->format_all_bedragen($sumtot); + $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); + $otherorg->pms = $this->format_all_bedragen($otherorg->pms, 5); + $otherorg->bud = $this->format_all_bedragen($otherorg->bud, 5); } } @@ -484,63 +615,147 @@ class Monfin2overzicht extends MY_Controller{ 'sumother' => $sumother, 'sumtot' => $sumtot]); } - function format_all_bedragen($pms){ - - for ($i = 0 ; $i <=5; $i++){ + 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->pms[0] = 0; - $targetorg->pms[1] = 0; - $targetorg->pms[2] = 0; - $targetorg->pms[3] = 0; - $targetorg->pms[4] = 0; - $targetorg->pms[5] = 0; - if ($pms){ - foreach($pms as $uitgave){ - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="PERSONEEL") $targetorg->pms[0] += $uitgave->bedrag; - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="MATERIEEL") $targetorg->pms[1] += $uitgave->bedrag; - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="SCHOLING") $targetorg->pms[2] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="PERSONEEL") $targetorg->pms[3] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="MATERIEEL") $targetorg->pms[4] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="SCHOLING") $targetorg->pms[5] += $uitgave->bedrag; - } - } + 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); - $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 ($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; - if ($pms){ - foreach($pms as $uitgave){ - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="PERSONEEL") $organisatie->pms[0] += $uitgave->bedrag; - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="MATERIEEL") $organisatie->pms[1] += $uitgave->bedrag; - if ($uitgave->categorie == "BASIS" && $uitgave->uitgavetype=="SCHOLING") $organisatie->pms[2] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="PERSONEEL") $organisatie->pms[3] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="MATERIEEL") $organisatie->pms[4] += $uitgave->bedrag; - if ($uitgave->categorie == "EXTRA" && $uitgave->uitgavetype=="SCHOLING") $organisatie->pms[5] += $uitgave->bedrag; - } - } - } - }; // if organisaties - return [$targetorg->pms , $organisaties]; - } + + } + 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 = []; @@ -551,6 +766,18 @@ class Monfin2overzicht extends MY_Controller{ $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; } @@ -563,16 +790,46 @@ class Monfin2overzicht extends MY_Controller{ $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){ - if ($org->pms){ $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; } diff --git a/application/controllers/monpas/Streefcijfers.php b/application/controllers/monpas/Streefcijfers.php index ff8f14d..972d17b 100644 --- a/application/controllers/monpas/Streefcijfers.php +++ b/application/controllers/monpas/Streefcijfers.php @@ -272,14 +272,11 @@ class Streefcijfers extends MY_Controller{ } } - $orgversie = $this->Orgversies_model->getOrgVersie($this->globorgid, $module); - if($orgversie) { - $ambitie = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $orgversie->orgversieID); - if ($ambitie) $ambities = array_merge($ambities, $ambitie); - else { - $standaardSWVNodig = true; - - } + $ambitie = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $this->globorgid); + if($ambitie) $ambities = array_merge($ambities,$ambitie); + else{ + $standaardSWVNodig = true; + $orgversie = $this->Orgversies_model->getOrgVersie($this->globorgid, $module); } } @@ -386,7 +383,6 @@ class Streefcijfers extends MY_Controller{ if (!$this->userid) die; $orgversieid = $this->clean_input("orgversieid"); - $id = false; if($this->super == false) { $result = $this->Autorisatienivos_model->checkmanage($this->userid, $this->globorgid); diff --git a/application/core/MY_Controller.php b/application/core/MY_Controller.php index 8f7b4e4..9f42a52 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -80,7 +80,11 @@ class MY_Controller extends CI_Controller{ // public $version = '1.18.08';// kleurenfout // public $version = '1.19.00';// ambities per org // public $version = '1.19.01';// compactdiv met orgid ipv globorg - public $version = '1.19.05';// ambities per org incl kamerversies +// public $version = '1.19.05';// ambities per org incl kamerversies +// public $version = '1.19.06';// monfin met budgetten +// public $version = '1.20.03';// monfin met budgetten +// public $version = '1.20.04';// monfin met budgetten update + public $version = '1.20.07';// monfin met budgetten update hogere kalenderjaren public $partituurid; public $globProfielVersieID = 1; public $userid; //id of the user that is logged in diff --git a/application/models/monfin2/Finbestemmingen_model.php b/application/models/monfin2/Finbestemmingen_model.php index fc39f30..175b19b 100644 --- a/application/models/monfin2/Finbestemmingen_model.php +++ b/application/models/monfin2/Finbestemmingen_model.php @@ -10,7 +10,9 @@ class Finbestemmingen_model extends MY_Model{ function __construct(){ parent::__construct(); $models = array('shared/Organisaties_model', - "monfin2/Finuitgavetypes_model"); + "monfin2/Finuitgavetypes_model" + + ); $this->load->model($models); } @@ -33,6 +35,9 @@ class Finbestemmingen_model extends MY_Model{ WHERE finsoort_id = {$soortID}"; return $this->get_query_result(); } + + + function get_overig_subsoorten($soortID,$orgID){ $this->sql = "SELECT id as subsoortID, omschrijving as naam @@ -56,13 +61,36 @@ class Finbestemmingen_model extends MY_Model{ 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){ - $subsoort->uitgavetypes[] = $this->get_bedrag_per_type($orgID, $jaarnr,$subsoort->subsoortID,$uitgavetype->code); - } - } + 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 } @@ -87,7 +115,8 @@ class Finbestemmingen_model extends MY_Model{ // haal per uitgavetypes de bedragen op if ($uitgavetypes){ foreach($uitgavetypes as $uitgavetype){ - $subsoort->uitgavetypes[] = $this->get_bedrag_per_type_over_orgs($orglist, $jaarnr,$subsoort->subsoortID,$uitgavetype->code); + $result = $this->get_bedrag_per_type_over_orgs($orglist, $jaarnr,$subsoort->subsoortID,$uitgavetype->code); + $subsoort->uitgavetypes[] = $result; } } } @@ -121,19 +150,10 @@ class Finbestemmingen_model extends MY_Model{ // }// if subsoorten // } // }// if soorten - // return $soorten; + // return $soorten; // } function setSomSubsoort($orgid, $jaarnr, $categorie){ - $this->sql = "SELECT FORMAT(SUM(bedrag) / 100,2) as totaal - FROM finbestemmingen B - JOIN finsubsoorten SUB ON B.subsoort_id = SUB.id - JOIN finsoorten S ON SUB.finsoort_id = S.id - WHERE B.organisatie_id = {$orgid} - AND B.kalenderjaar = {$jaarnr} - AND S.categorie = '{$categorie}' "; - - return $this->get_query_row('totaal'); } function getUitgavenPerSubsoortSchool($orgid, $jaarnr){ @@ -164,6 +184,7 @@ class Finbestemmingen_model extends MY_Model{ 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} @@ -176,27 +197,39 @@ class Finbestemmingen_model extends MY_Model{ "kalenderjaar" =>$jaarnr, "subsoort_id" =>$subsoortID, "uitgavetype" =>$uitgavetype, - "bedrag" =>0]; + "bedrag" =>0, + "budget" =>0]; $this->insert_record($data); $row = $this->get_query_row(); } - if ($row) $row->bedrag = str_replace(',' , '' , $row->bedrag); + 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(); + $row= $this->get_query_row(); + + if ($row) $row->bedrag = str_replace(',' , '' , $row->bedrag); + if ($row) $row->budget = str_replace(',' , '' , $row->budget); return $row; } @@ -245,7 +278,8 @@ class Finbestemmingen_model extends MY_Model{ return $this->get_query_row('bedrag'); } function get_pms($orgids, $kalenderjaarnr){ - $this->sql = " SELECT round(sum(bedrag/100) ) AS bedrag, + $this->sql = " SELECT round(sum(FB.bedrag/100) ) AS bedrag, + round(sum(FB.budget/100)) AS budget, uitgavetype, FS.categorie, FB.organisatie_id diff --git a/application/models/shared/Licenties_model.php b/application/models/shared/Licenties_model.php index a84ad79..77f0f2d 100644 --- a/application/models/shared/Licenties_model.php +++ b/application/models/shared/Licenties_model.php @@ -48,7 +48,7 @@ class Licenties_model extends MY_Model{ JOIN tb_cluster C on C.id = M.cluster_id WHERE O.id = {$orgid} AND actief = 1 - GROUP BY C.naam "; + GROUP BY C.id "; return $this->get_query_result(); } diff --git a/application/views/monpas/modals/findetails_modal.php b/application/views/monpas/modals/findetails_modal.php new file mode 100644 index 0000000..b189e15 --- /dev/null +++ b/application/views/monpas/modals/findetails_modal.php @@ -0,0 +1,120 @@ + diff --git a/application/views/monpas/pages/monfin2/bestemmingen.php b/application/views/monpas/pages/monfin2/bestemmingen.php index 10f321e..5a7029c 100644 --- a/application/views/monpas/pages/monfin2/bestemmingen.php +++ b/application/views/monpas/pages/monfin2/bestemmingen.php @@ -9,7 +9,7 @@ -
+

Er zijn nog geen budgetgegevens voor dit kalenderjaar

@@ -23,105 +23,328 @@ Basisondersteuning
- - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - + style="width: 145px; max-width: 98%; background-color: #e6ffee; font-size: 0.9em" + data-bind="textInput: budgetFormat, + event:{change:$root.fSaveBudget.bind($data, $parent.subsoortID, 'BASIS') } , + enable: ! $root.jaarclosed() && (code == 'TOTAAL' || Number($parent.uitgavetypes()[0].budget()) > 0), + style : {'backgroundColor' : code == 'TOTAAL' ? '#e6ffee' : Number($parent.uitgavetypes()[0].budget()) > 0 ? '#e6ffee' : '#cccccc' } " + /> + + + + + + + + + + + + + + + + + + + +
+ + + + Restant + + + Percentage + + +
+ + + + + +
budget + + + -
+
+ + +
+
uitgaven + + + + + + + + +
+ + +
+
-
-

- Totaal basisondersteuning - + +

+ Basisondersteuning +
+ Uitgaven + -

-

- Budget - + + -

+
+ Gebudgeteerd per kostenpost + + + +
+ Totaalbudget + + +

+

Extra ondersteuning

- - - - - - - - - - - - - - - - - - - - - - +
- -
+ + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + Restant + + Percentage + + +
+ + + + +
budget + + + + + + + + + +
+ + +
+
uitgaven + + + + + + + + +
+ + +
+
-
-

- Totaal extra ondersteuning - + + +

+ Extra ondersteuning +
+ Uitgaven + -

-

- Budget - + +
+ Gebudgeteerd per kostenpost + + + + +
+ Totaalbudget +

Opmerkingen

- - diff --git a/application/views/monpas/pages/monfin2/overzicht.php b/application/views/monpas/pages/monfin2/overzicht.php index 8a51fa1..1a67e14 100644 --- a/application/views/monpas/pages/monfin2/overzicht.php +++ b/application/views/monpas/pages/monfin2/overzicht.php @@ -1,184 +1,753 @@
-
- - - - - - - +
+ + + + + + - - - - - + + + + - - - - + + + + - - 0) && $parent.geopend() && $parents[1].geopend(), css:{selected: ($root.selectedOrg() && id == $root.selectedOrg().id) }"> - - - - - - - + + + + - - - - - - - - - - -
-
-
-

Selecteer eerst een organisatie

-

Kalenderjaar - - - -

- -

-

- details eigen org. - - details sub-org. - - pers.mat.scholing - sub-organisaties + + + -
-

-
-
- - - - - - - - - - - - - - - - - - - - - - - +

+

+ details eigen org. + + details sub-org. + + pers.mat.scholing + sub-organisaties -
- - + +

+
+
+ +
BasisondersteuningSomBudgetVerschil
- Totaal basis
- - - - - - - - - - - - - -
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Basisondersteuning + + + + som budget + + + + verschil + + + % uitgaven + + + % budget + + +
+ Totaal basis0,000,00 +
Extra ondersteuningSomBudgetVerschil
Totaal extra
+
+ + + + + + + +
Extra ondersteuning + + + + + som budget + + + + + verschil + + + + % uitgaven + + + + % budget + + +
+ Totaal extra0,000,00 + + +
+ + + + + + + +
Totaal0,000,00 + + + + + +
+
+

Opmerkingen

+

+
+
+
+ load->view("monpas/pages/monfin2/overorgs.php"); ?> +
+
+ load->view("monpas/pages/monfin2/pmsorgs.php"); ?> +
+
+
+ + load->view("monpas/modals/findetails_modal"); ?> + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Selecteer eerst een organisatie

+

Kalenderjaar + + +

+ +

+

+ details eigen org. + + details sub-org. + + pers.mat.scholing + sub-organisaties + +
+

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Basisondersteuning + + + som uitgaven + + + som budget + + + + verschil + + + % uitgaven + + + % budget + + +
+ Totaal basis0,000,00 + +
+ + + + + + + +
Extra ondersteuning + + + + + som + + + + Budget + + + + + Verschil + + + + % uitgaven + + + + % budget + + +
+ Totaal extra0,000,00 + + +
+ + + + + + + +
Totaal0,000,00 + + + + + +
+
+

Opmerkingen

+

+
+
+
+ load->view("monpas/pages/monfin2/overorgs.php"); ?> +
+
+ load->view("monpas/pages/monfin2/pmsorgs.php"); ?> +
+
+
+ + load->view("monpas/modals/findetails_modal"); ?> - - - - - - - - - - - - - - -
- - - - - - - - Totaal besteed - - - - - - - -
-

Opmerkingen

-

-
-
-
- load->view("monpas/pages/monfin2/overorgs.php"); ?> -
-
- load->view("monpas/pages/monfin2/pmsorgs.php"); ?> -
- - \ No newline at end of file diff --git a/application/views/monpas/pages/monfin2/pmsorgs.php b/application/views/monpas/pages/monfin2/pmsorgs.php index c5d0650..af88140 100644 --- a/application/views/monpas/pages/monfin2/pmsorgs.php +++ b/application/views/monpas/pages/monfin2/pmsorgs.php @@ -1,61 +1,175 @@ - + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + +
BasisondersteuningBasisondersteuning Extra ondersteuning
OrganisatiePersoneelMaterieelScholingPersoneelMaterieelScholing
OrganisatiePersoneelMaterieelScholingPersoneelMaterieelScholing
budget
uitgaven + + + +
SubtotaalMaterieelScholingPersoneelMaterieelScholingbudgetMaterieelScholingPersoneelMaterieelScholing
uitgavenMaterieelScholingPersoneelMaterieelScholing
budget
uitgaven +
TotaalPersoneelMaterieelScholingPersoneelMaterieelScholing
TotaalbudgetPersoneelMaterieelScholingPersoneelMaterieelScholing
uitgavenPersoneel + Materieel + Scholing + Personeel + Materieel + Scholing +
diff --git a/public/css/monpas/main.css b/public/css/monpas/main.css index 8dabd6f..76d876b 100644 --- a/public/css/monpas/main.css +++ b/public/css/monpas/main.css @@ -112,6 +112,19 @@ a.email:before { padding-top: 5px; margin-top:2px; } + +.blokheader2{ + border-radius:3px; + text-transform:lowercase; + background-color:#968026; + width:99%; + height:15px; + text-align:center; + margin-left:0.5%; + color:#ffffff; + padding-top: 5px; + margin-top:2px; +} .bloksubheader{ float:left; font-size:0.8em; diff --git a/public/js/monpas/models/ijkpuntenmodel.js b/public/js/monpas/models/ijkpuntenmodel.js index e1a3f77..46a37a9 100644 --- a/public/js/monpas/models/ijkpuntenmodel.js +++ b/public/js/monpas/models/ijkpuntenmodel.js @@ -109,7 +109,6 @@ ls.initIJkpuntenModel = function(){ function fAddLijst(i, l, nieuw){ - console.log(l, "lijst") var dit = this; this.tooninfo = ko.observable(false); if(nieuw === l.orgversie.id) { @@ -470,8 +469,6 @@ ls.initIJkpuntenModel = function(){ self.scorekleuren(new fAddKleur(result.kleuren)); } - console.log(result.ijkpunten, "ijkpunten"); - console.log(result.lijsten, "lijsten") if(result.ijkpunten){ $.each(result.ijkpunten, function(y, k){ @@ -691,11 +688,6 @@ ls.initIJkpuntenModel = function(){ } }); - console.log(balkGegevens, "balkgegevens") - - - - self.ijkgrafiek = Highcharts.chart('hc-chart1', { chart: { margin: [10,45,100,5], diff --git a/public/js/monpas/models/monfin2/bestemmingen.js b/public/js/monpas/models/monfin2/bestemmingen.js index 274ba18..8267f8d 100644 --- a/public/js/monpas/models/monfin2/bestemmingen.js +++ b/public/js/monpas/models/monfin2/bestemmingen.js @@ -7,38 +7,93 @@ ls.initBestemmingenModel = function(){ this.naam = p.naam; } - function fAddBasissoort(k){ + function fAddBasissoort(j,k, totbudget, bedrag ){ var dit = this; this.soortID = k.soortID this.naam = k.naam this.subsoorten = ko.observableArray([]); if (k.subsoorten){ $.each(k.subsoorten, function(a,b){ - dit.subsoorten.push(new fAddSubsoort(b, k.categorie)); + dit.subsoorten.push(new fAddSubsoort(a, b, totbudget, bedrag, k.categorie)); }); } } - function fAddSubsoort(p,categorie){ - var dit = dit; - this.subsoortID = p.subsoortID; - this.naam = p.naam; - this.categorie = categorie - this.uitgavetypes = ko.observableArray() + function fAddSubsoort(a,b, totbudget, totbedrag, categorie) { var dit = this; - if (p.uitgavetypes){ - $.each(p.uitgavetypes, function(i,k){ + this.subsoortID = b.subsoortID; + this.naam = b.naam; + this.categorie = categorie; + this.bedragpct = ko.observable(0); + this.bedragpctFormat = ko.observable(''); + this.budgetpct = ko.observable(0); + this.budgetpctFormat = ko.observable(''); + this.uitgavetypes = ko.observableArray([]); + var subbudget = 0; + var subbedrag = 0; + + + if (b.uitgavetypes || b.uitgavetypes()) { + if (b.uitgavetypes) { + + subbudget = b.uitgavetypes[0].budget; + subbedrag = b.uitgavetypes[0].bedrag; + + $.each(b.uitgavetypes, function (i, k) { dit.uitgavetypes.push(new fAddUitgavetype(k)); + }); } - } + + if ( Number(totbudget) > 0) { + if(Number(subbudget) > 0) subbudget = subbudget.replace(/[.| ,]/g, ''); + var budgettot = totbudget.replace(/[.| ,]/g, ''); + var budgetpct = Number(subbudget) / Number(budgettot) + budgetpct = budgetpct * 100 + budgetpct = budgetpct.toFixed(1); + dit.budgetpct(budgetpct); + var format = budgetpct.replace('.', ',') + '%' + dit.budgetpctFormat(Number(budgetpct) > 0 ? format : '' ); + } + + if( Number(totbedrag) > 0) { + if(Number(subbedrag) > 0) subbedrag = subbedrag.replace(/[.| ,]/g, '') + var bedragtot = totbedrag.replace(/[.| ,]/g, ''); + var bedragpct = Number(subbedrag) / Number(bedragtot); + bedragpct = bedragpct * 100; + bedragpct = bedragpct.toFixed(1); + dit.bedragpct(bedragpct); + var format2 = bedragpct.replace('.', ',') + '%'; + dit.bedragpctFormat(Number(bedragpct) > 0 ? format2 : '' ); + } + + } + } function fAddUitgavetype(k){ - this.finbestemmingID = k.id - this.code = k.code - this.bedrag = ko.observable(k.bedrag); - this.formatted = ko.observable(parseFloat(k.bedrag).format(2,3,'.',',')); - if (parseFloat(k.bedrag) <= 0) this.formatted(''); + this.finbestemmingID = k.id; + this.code = k.code; + this.bedrag = ko.observable(0); + this.bedragFormat = ko.observable(''); + this.budget = ko.observable(0); + this.budgetFormat = ko.observable(''); + if(k.bedrag && Number(k.bedrag) !== 0) { + var bedrag = Math.round(k.bedrag.replace(/[.| ,]/g, '') / 100).toFixed(2); + this.bedrag(bedrag); + bedrag = Number(bedrag).format(2,3,'.',','); + this.bedragFormat(bedrag); + } + + if(k.budget && Number(k.budget) !== 0) { + var budget = Math.round(k.budget.replace(/[.| ,]/g, '') / 100).toFixed(2); + this.budget(budget); + budget = Number(budget).format(2,3,'.',','); + this.budgetFormat = ko.observable(budget); + } + + + + } @@ -51,9 +106,9 @@ ls.initBestemmingenModel = function(){ kalenderjaren : ko.observableArray([]), selectedKalenderjaar : ko.observable(), jaartoewijzing : ko.observable(), - targetjaar : ko.observable(2017), //het jaar waarin met moet werken + erIsBudget : ko.observable(false), + targetjaar : ko.observable(2017), //het jaar waarin met moet werken uitgavetypes : ko.observableArray(), - basissoorten : ko.observableArray(), extrasoorten : ko.observableArray(), @@ -63,8 +118,16 @@ ls.initBestemmingenModel = function(){ basisgeopend : ko.observable(false), extrageopend : ko.observable(false), - totaalextra : ko.observable(), - totaalbasis : ko.observable(), + totaalextra : ko.observable(), + totaalbasis : ko.observable(0), + gebudgetbasis : ko.observable(0), + gebudgetbasispct : ko.observable(''), + gebudgetextrapct : ko.observable(''), + totbasispct : ko.observable(''), + totextrapct : ko.observable(''), + budgetUnformatted : ko.observable(0), + gebudgetextra : ko. observable(), + initBindings :function(){ var self = ls.BestemmingenModel; @@ -76,6 +139,7 @@ ls.initBestemmingenModel = function(){ self.writer(result.writer); if (result.kalenderjaren){ $.each(result.kalenderjaren, function(i,p){ + self.kalenderjaren.push(new fAddKalenderjaar(p)); }); // each self.selectedKalenderjaar(self.kalenderjaren()[0]); @@ -101,57 +165,475 @@ ls.initBestemmingenModel = function(){ fGetBestemmingen: function(){ var self = ls.BestemmingenModel; if (!self.selectedKalenderjaar()) return; + self.basissoorten.removeAll(); + self.extrasoorten.removeAll(); var sd ={jaarnr:self.selectedKalenderjaar().jaarnr} - $.post("index.php/monfin2/bestemmingen/getBestemmingen", sd, function(data){ - if (data.jaartoewijzing){ - self.jaartoewijzing(data.jaartoewijzing); + + $.post("index.php/monfin2/bestemmingen/getBestemmingen ", sd, function(data) { + if (data.jaartoewijzing) { + self.jaartoewijzing(data.jaartoewijzing); + + } + + self.jaarclosed(data.jaarclosed); + self.fUpdateSubbedragen(function (){self.fGetUpdatedBestemmingen()}, data); + },'json') + }, + fUpdateSubbedragen: function(callback, data) { + var self = ls.BestemmingenModel; + self.bezig(true); + if (data.basisbestemmingen) { + $.each(data.basisbestemmingen, function (i, b) { + $.each(b.subsoorten, function (x, s) { + if (s.uitgavetypes) { + + var subtotaal = Number(s.uitgavetypes[1].bedrag) + Number(s.uitgavetypes[2].bedrag) + Number(s.uitgavetypes[3].bedrag); + subtotaal = subtotaal.format(2, 3, '.', ','); + subtotaal = subtotaal.replace(/[.| ,]/g, '') + + var id = s.uitgavetypes[0].id; + + var sd = { + 'id': id, + 'bedrag': subtotaal, + } + + + $.post("index.php/monfin2/bestemmingen/updatebedrag", sd, function(data){ + + }, 'json'); + } + }) + if(i=== data.basisbestemmingen.length -1 ) self.bezig(false); + }) + } + if (data.extrabestemmingen) { + $.each(data.extrabestemmingen, function (i, b) { + $.each(b.subsoorten, function (x, s) { + if (s.uitgavetypes) { + var subtotaal = Number(s.uitgavetypes[1].bedrag) + Number(s.uitgavetypes[2].bedrag) + Number(s.uitgavetypes[3].bedrag); + subtotaal = subtotaal.format(2, 3, '.', ','); + subtotaal = subtotaal.replace(/[.| ,]/g, '') + var id = s.uitgavetypes[0].id; + + var sd = { + 'id': id, + 'bedrag': subtotaal + } + $.post("index.php/monfin2/bestemmingen/updatebedrag", sd, function(data){ + + }, 'json'); + } + }) + }) + } + + if(! self.bezig()) if (typeof callback == "function") callback() + }, + + + fGetUpdatedBestemmingen(){ + var self = ls.BestemmingenModel; + var budget = 0; + var bedrag = 0; + var totbudget = self.jaartoewijzing().basis + totbudget = totbudget.replace(/[.| ,]/g, ''); + var totbasispct = ''; + var gebudgetbasispct = ''; + + var sd ={jaarnr:self.selectedKalenderjaar().jaarnr} + + $.post("index.php/monfin2/bestemmingen/getBestemmingen ", sd, function(data) { + + + if (data.basisbestemmingen){ + $.each(data.basisbestemmingen, function(i, b){ + $.each(b.subsoorten, function(x, s) { + if (s.uitgavetypes) { + + + $.each(s.uitgavetypes, function (z, t) { + if (t.code == 'TOTAAL') { + budget += Number(t.budget); + bedrag += Number(t.bedrag); + } + }) } - else {self.jaartoewijzing(false);} - self.jaarclosed(data.jaarclosed); - - self.basissoorten.removeAll(); - if (data.basisbestemmingen){ - $.each(data.basisbestemmingen,function(j,k){ - self.basissoorten.push(new fAddBasissoort(k)); - }); + } ) + }) + if(Number(totbudget) > 0) { + var bedrag2 = bedrag.format(2, 3, '.', ','); + bedrag2 = bedrag2.replace(/[.| ,]/g, '') + var budget2 = budget.format(2, 3, '.', ','); + budget2 = budget2.replace(/[.| ,]/g, '') + + totbasispct = ((bedrag2 / totbudget) * 100).toFixed(1); + totbasispct = totbasispct.replace('.', ','); + gebudgetbasispct = ((budget2/totbudget) * 100).toFixed(1); + gebudgetbasispct = gebudgetbasispct.replace('.', ','); + } + + self.totbasispct(totbasispct); + self.gebudgetbasispct(gebudgetbasispct ) + + budget = self.fSetTotalValue(budget); + self.gebudgetbasis(budget); + bedrag = self.fSetTotalValue(bedrag); + self.totaalbasis(bedrag); + + bedrag = bedrag.replace(/[.|,]/g, ''); + + $.each(data.basisbestemmingen,function(j,k){ + self.basissoorten.push(new fAddBasissoort(j,k, totbudget, bedrag)); + }); + } + budget = 0; + bedrag = 0; + totbudget = 0; + var totextrapct = ''; + var gebudgetextrapct = ''; + if (data.extrabestemmingen){ + $.each(data.extrabestemmingen, function(i, b){ + $.each(b.subsoorten, function(x, s){ + $.each(s.uitgavetypes, function(z, t){ + if(t.code == 'TOTAAL') { + budget += Number(t.budget); + bedrag += Number(t.bedrag); + } + } ) + } ) + }) + + totbudget = self.jaartoewijzing().extra; + + totbudget = totbudget.replace(/[.| ,]/g, '') + if(Number(totbudget > 0)) { + bedrag2 = bedrag.format(2, 3, '.', ','); + bedrag2 = bedrag2.replace(/[.| ,]/g, '') + budget2 = budget.format(2, 3, '.', ','); + budget2 = budget2.replace(/[.| ,]/g, '') + totextrapct = ((bedrag2 / totbudget) * 100).toFixed(1); + totextrapct = totextrapct.replace('.', ',') + gebudgetextrapct = ((budget2/totbudget) * 100).toFixed(1) + gebudgetextrapct = gebudgetextrapct.replace('.',','); } - self.extrasoorten.removeAll(); - if (data.extrabestemmingen){ - $.each(data.extrabestemmingen,function(j,k){ - self.extrasoorten.push(new fAddBasissoort(k)); - }); - } - - self.opmerking(data.opmerking); + + self.totextrapct(totextrapct); + self.gebudgetextrapct(gebudgetextrapct) + budget = self.fSetTotalValue(budget); + self.gebudgetextra(budget); + bedrag = self.fSetTotalValue(bedrag); + self.totaalextra(bedrag); + bedrag = bedrag.replace(/[.|,]/g, ''); + + $.each(data.extrabestemmingen,function(j,k){ + self.extrasoorten.push(new fAddBasissoort(j, k, totbudget, bedrag)); + }); + } + + self.opmerking(data.opmerking); + },'json'); }, - fSaveBedrag:function(){ + fSetTotalValue: function(value){ + var self = ls.BestemmingenModel; + var bedrag = value; + bedrag = parseFloat(bedrag).format(2, 3, '.', ','); + + return bedrag; + }, + + fSaveBedrag: function( subsoortid, soort ){ var self = ls.BestemmingenModel; if (self.jaarclosed()) return; - var dit = this; + var dit = this; - invoer = dit.formatted(); - if (invoer <= '' || ! invoer) invoer = '0' - invoer = invoer.split('.').join(''); - invoer= invoer.replace(',' , '.'); - - if (isNaN( parseFloat(invoer) ) ) { - invoer =0; - } - else { - invoer=parseFloat(invoer) + var subtotaal = 0; + var subtotaalForm = ''; + var totuitgaven = 0; + var totuitgavenForm = 0; + var uitgavenpct = '0,0'; + var subtotID = 0; + var totaalbudget = (soort === 'BASIS' ? self.jaartoewijzing().basis.replace(/[.| ,]/g, '') : self.jaartoewijzing().extra.replace(/[.| ,]/g, '')); + + // update bedrag en bedragformat + var invoer = dit.bedragFormat(); + + if ( ! invoer) invoer = '0' + invoer = invoer.split('.').join(''); + + invoer= invoer.replace(',' , '.'); + + if (isNaN( parseFloat(invoer) ) ) invoer = 0; + else invoer = parseFloat(invoer) + + + if(Number(invoer) > 0) dit.bedragFormat(parseFloat(invoer).format(2, 3, '.', ',')); + else dit.bedragFormat(''); + + dit.bedrag(invoer); + var code = dit.code; + + // update subtotalen + $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ + $.each(b.subsoorten(), function(x, s){ + if (s.uitgavetypes()) { + if (s.subsoortID === subsoortid) { + subtotID = s.uitgavetypes()[0].finbestemmingID; + + switch(code){ + case 'PERSONEEL' : s.uitgavetypes()[0].bedrag(invoer+Number(s.uitgavetypes()[2].bedrag()) +Number(s.uitgavetypes()[3].bedrag())); + break; + case 'MATRIEEL': s.uitgavetypes()[0].bedrag(Number(s.uitgavetypes()[1].bedrag()) +invoer +Number(s.uitgavetypes()[3].bedrag())); + break; + case 'SCHOLING':s.uitgavetypes()[0].bedrag(Number(s.uitgavetypes()[1].bedrag()) +Number(s.uitgavetypes()[2].bedrag()) +invoer); + break; + } + //zonder nullen van centen + if (Number(s.uitgavetypes()[0].bedrag()) > 0) { + subtotaalForm = Number(s.uitgavetypes()[0].bedrag()).format(2, 3, '.', ','); + s.uitgavetypes()[0].bedragFormat(subtotaalForm) + } + } + } + totuitgaven = Number(totuitgaven) + Number(s.uitgavetypes()[0].bedrag()); + + }) + }) + if (parseFloat(totuitgaven) > 0) { + totuitgavenForm = parseFloat(totuitgaven).format(2, 3, '.', ','); + totuitgaven = totuitgavenForm.replace(/[.| ,]/g, ''); + } + + // update procenten en reserve totalen van subsoorten + $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ + $.each(b.subsoorten(), function(x, s){ + subtotaal = Number(s.uitgavetypes()[0].bedrag()); + if (parseFloat(subtotaal) > 0) { + subtotaal = parseFloat(subtotaal).format(2, 3, '.', ','); + subtotaal = subtotaal.replace(/[.| ,]/g, ''); + if (Number(totuitgaven) > 0) { + uitgavenpct = ((Number(subtotaal) / Number(totuitgaven)) * 100).toFixed(1); + uitgavenpct = uitgavenpct.replace('.', ','); + s.bedragpctFormat(uitgavenpct + '%'); + + } else { + s.bedragpct(0); + s.bedragpctFormat('') + + } + + } + + }) + }) + if(Number(totuitgaven) > 0) { + uitgavenpct = ((Number(totuitgaven) / Number(totaalbudget)) * 100).toFixed(1); + uitgavenpct = uitgavenpct.replace('.', ','); + + } + + soort ==='BASIS' ? self.totbasispct(uitgavenpct): self.totextrapct(uitgavenpct); + soort=== 'BASIS' ? self.totaalbasis(totuitgavenForm): self.totaalextra(totuitgavenForm); + + + + invoer = Math.round(invoer * 100); + var sd = { + 'id' : dit.finbestemmingID, + 'bedrag': invoer + + } + console.log(sd, 'bedrag') + $.post("index.php/monfin2/bestemmingen/updatebedrag", sd); + + var sd2 = { + 'id' : subtotID, + 'bedrag': subtotaal + + } + $.post("index.php/monfin2/bestemmingen/updatebedrag", sd2); + console.log(sd, 'regeltotaal') + }, + + + + + fSaveBudget: function( subsoortid, soort ){ + var self = ls.BestemmingenModel; + if (self.jaarclosed()) return; + var dit = this; + var budgetoud = dit.budget(); + var code = dit.code; + var budgetoudForm = Number(dit.budget()) > 0 ? parseFloat(budgetoud).format(2, 3, '.', ',') : ''; + var subbudget = 0; + var totaalgebudget = 0; + var totaalgebudgetForm = 0; + var totaalgebudgetpct = 0; + var budgetpct = ''; + var totaalbudget = (soort === 'BASIS' ? self.jaartoewijzing().basis.replace(/[.| ,]/g, '') : self.jaartoewijzing().extra.replace(/[.| ,]/g, '')); + var stuurMelding = true; + var restantOud = 0; + var restantOudForm = ''; + + // update budget en budgetformat + var invoer = dit.budgetFormat(); + if ( ! invoer) invoer = '0'; + invoer = invoer.split('.').join(''); + invoer= invoer.replace(',' , '.'); + if (isNaN( parseFloat(invoer) ) ) invoer = 0; + else invoer = parseFloat(invoer) + + // update budget + $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ + $.each(b.subsoorten(), function(x, s){ + if (s.uitgavetypes()) { + if (s.subsoortID === subsoortid) { + switch(code){ + case 'TOTAAL' : subbudget = Number(s.uitgavetypes()[1].budget()) +Number(s.uitgavetypes()[2].budget()) + Number(s.uitgavetypes()[3].budget()); + if(Number(invoer) >= Number(subbudget)) { + dit.budget(invoer); + stuurMelding = false; + } + totaalgebudget = Number(totaalgebudget) +Number(invoer); + + break; + case 'PERSONEEL': subbudget = Number(invoer) +Number(s.uitgavetypes()[2].budget()) + Number(s.uitgavetypes()[3].budget()); + if(Number(s.uitgavetypes()[0].budget()) >= Number(subbudget)) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()) + } + break; + case 'MATERIEEL': subbudget = Number(s.uitgavetypes()[1].budget()) + Number(invoer)+ Number(s.uitgavetypes()[3].budget()); + if(Number(s.uitgavetypes()[0].budget()) >= subbudget) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()); + } + break; + case 'SCHOLING': subbudget = Number(s.uitgavetypes()[1].budget()) + Number(s.uitgavetypes()[2].budget())+ Number(invoer) ; + if(Number(s.uitgavetypes()[0].budget() >= subbudget)) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()) + + console.log(subbudget , 'subbudget bij wijzigen scholing') + } + break; + + } + + + restantOud = s.uitgavetypes()[4].budget(); + restantOudForm = parseFloat(restantOud).format(2, 3, '.', ','); + if(stuurMelding) { + apprise('Het totaalbudget is kleiner dan de deelbudgetten.'); + dit.budgetFormat(''); + } + else{ + + if(Number(invoer) > 0) dit.budgetFormat(parseFloat(invoer).format(2, 3, '.', ',')); + else dit.budgetFormat(''); + var restant = Number(s.uitgavetypes()[0].budget()) - subbudget; + s.uitgavetypes()[4].budget(restant); + Number(restant) === 0 ? s.uitgavetypes()[4].budgetFormat(''): s.uitgavetypes()[4].budgetFormat(parseFloat(restant).format(2, 3, '.', ',')); + + } + } + else{ + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()); + } + + + } + + }) + + }) + + + if(stuurMelding) return; + if (parseFloat(totaalgebudget) > 0) { + totaalgebudgetForm = parseFloat(totaalgebudget).format(2, 3, '.', ','); + totaalgebudgetForm = parseFloat(totaalgebudget).format(2, 3, '.', ','); + totaalgebudget = totaalgebudgetForm.replace(/[.| ,]/g, ''); + } + + //waarden terugzetten als totaal budget wordt overschreden + + if(Number(totaalgebudget) > Number(totaalbudget)){ + dit.budget(budgetoud); + dit.budgetFormat(budgetoudForm); + +//terugzetten restanten + $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b) { + $.each(b.subsoorten(), function (x, s) { + if (s.uitgavetypes()) { + if (s.subsoortID === subsoortid) { + s.uitgavetypes()[4].budget(restantOud); + s.uitgavetypes()[4].budgetFormat(Number(restantOud) > 0 ? restantOudForm: ''); + + } + } + }) + }) + + var string = "Het budget overschrijdt het totaalbudget." + if(Number(totaalbudget) ===0) string = 'Er is nog geen budget.' + apprise(string); + return; + + } + + // update procenten + $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ + + $.each(b.subsoorten(), function(x, s) { + if (s.uitgavetypes()) { + if (Number(totaalgebudget) > 0) { + var subtotaal = s.uitgavetypes()[0].budget(); + subtotaal = parseFloat(subtotaal).format(2, 3, '.', ',') + subtotaal = subtotaal.replace(/[.| ,]/g, '') + budgetpct = subtotaal / totaalbudget; + budgetpct = budgetpct * 100; + budgetpct = budgetpct.toFixed(1) + budgetpct = budgetpct.replace('.', ',') + s.budgetpctFormat(budgetpct + '%'); + } + else { + s.budgetpctFormat(''); + } } - dit.formatted(parseFloat(invoer).format(2,3,'.',',')); - if (invoer <= 0) dit.formatted(''); - dit.bedrag(invoer); + }) + }) + + //update totalen + + + if(Number(totaalgebudget) > 0) { + totaalgebudgetpct = ((Number(totaalgebudget) / Number(totaalbudget)) * 100).toFixed(1); + totaalgebudgetpct = totaalgebudgetpct.replace('.', ','); + totaalgebudgetpct = ' (' + totaalgebudgetpct + '%)' + } + else totaalgebudgetpct = ''; + + soort=== 'BASIS' ? self.gebudgetbasis(totaalgebudgetForm): self.gebudgetextra(totaalgebudgetForm); + soort ==='BASIS' ? self.gebudgetbasispct(totaalgebudgetpct): self.gebudgetextrapct(totaalgebudgetpct); + + + invoer = Math.round(invoer * 100); + var sd = { + 'id' : dit.finbestemmingID, + 'budget': invoer + + } + $.post("index.php/monfin2/bestemmingen/updatebudget", sd); + }, + - invoer = Math.round(invoer * 100) ; - var sd = {id : dit.finbestemmingID, - bedrag : invoer} - $.post("index.php/monfin2/bestemmingen/updatebedrag", sd); - }, fToggle: function(wat){ switch(wat){ @@ -160,6 +642,14 @@ ls.initBestemmingenModel = function(){ };// switch }, + fToelichting: function(){ + + apprise( + '

In de rijen budget geeft het percentage het gebugeteerde bedrag uit de kolom TOTAAL weer in verhouding tot het totaalbudget.

'+ + '

In de rijen uitgaven geeft het percentage de uitgaven weer in de kolom TOTAAL in verhouding tot de totale uitgaven.

' + ) + }, + fSaveOpmerking: function(){ var self= ls.BestemmingenModel; if (self.jaarclosed()) return; @@ -175,51 +665,8 @@ ls.initBestemmingenModel = function(){ } } ; // definition van model - ls.BestemmingenModel.totaalbasis = ko.computed(function(){ - var som =0; - var invoer = 0; - if (this.basissoorten()) { - $.each(this.basissoorten(), function(i,p){ - if (p.subsoorten()) { - $.each(p.subsoorten(), function(a,b){ - $.each(b.uitgavetypes(), function(o,s){ - invoer=String(s.bedrag()); - invoer= invoer.replace(',' , ''); - if (! isNaN(invoer) ) { - invoer=parseFloat(invoer) - invoer = Math.round(invoer * 100) / 100; - som = som + invoer; - } - }); // each uitgavetypes - }); // each subsoorten - } // if subsoorten - }) // each soorten - } // if basissoorten - return som.format(2,3,'.',','); - },ls.BestemmingenModel); - ls.BestemmingenModel.totaalextra = ko.computed(function(){ - var som =0; - var invoer = 0; - if (this.extrasoorten()) { - $.each(this.extrasoorten(), function(i,p){ - if (p.subsoorten()) { - $.each(p.subsoorten(), function(a,b){ - $.each(b.uitgavetypes(), function(o,s){ - invoer=String(s.bedrag()); - invoer= invoer.replace(',' , ''); - if (! isNaN(invoer) ) { - invoer=parseFloat(invoer) - invoer = Math.round(invoer * 100) / 100; - som = som + invoer; - } - }); // each uitgavetypes - }); // each subsoorten - } // if subsoorten - }) // each soorten - } // if basissoorten - return som.format(2,3,'.',','); - },ls.BestemmingenModel); + ls.BestemmingenModel.initBindings(); }; // else diff --git a/public/js/monpas/models/monfin2/monfinoverzicht2.js b/public/js/monpas/models/monfin2/monfinoverzicht2.js index 8e871c8..a32d325 100644 --- a/public/js/monpas/models/monfin2/monfinoverzicht2.js +++ b/public/js/monpas/models/monfin2/monfinoverzicht2.js @@ -57,28 +57,29 @@ ls.initMonfinOverzicht2Model = function(){ subTot : ko.observable(), grandTot : ko.observable(), //schoolbedragen : ko.observableArray([]), - schooltotaal : ko.observable(''), - kalenderjaren : ko.observableArray(), - selectedKalenderjaar : ko.observable(), - zelfjanee : ko.observable('1'), + schooltotaal : ko.observable(''), + kalenderjaren : ko.observableArray(), + selectedKalenderjaar : ko.observable(), + zelfjanee : ko.observable('1'), opmerking : ko.observable(), uitgavetypes : ko.observableArray(), - basis : ko.observableArray(), - extra : ko.observableArray(), + basis : ko.observableArray(), + extra : ko.observableArray(), sombasisperuitgavetype : ko.observableArray(), - somextraperuitgavetype : ko.observableArray(), + somextraperuitgavetype : ko.observableArray(), totsomperuitgavetype : ko.observableArray(), basisgeopend : ko.observable(false), extrageopend : ko.observable(false), - budgetten : ko.observableArray(), + budgetten : ko.observableArray(), + selectedSubsoort : ko.observable(), initBindings :function(){ var self = ls.MonfinOverzicht2Model; if (!ko.dataFor(document.getElementById('pagmonfinoverzicht2')) ) { ko.applyBindings(ls.MonfinOverzicht2Model, document.getElementById("pagmonfinoverzicht2")); } - $.post("index.php/monpas/monfinoverzicht/getkalenderjarenMetMax", function(data){ + $.post("index.php/monpas/monfinoverzicht/getkalenderjaren", function(data){ self.kalenderjaren.removeAll(); if (data){ $.each(data, function(j,k){ @@ -105,14 +106,18 @@ ls.initMonfinOverzicht2Model = function(){ fGetBedragen: function(){ var self = ls.MonfinOverzicht2Model; if (!self.selectedOrg() || !self.selectedKalenderjaar()) return; + + if (self.selectedOrg().soort == 4) { self.zelfjanee('1');}; - + if (self.zelfjanee()==1 || self.selectedOrg().soort==4){ var sd={orgid : self.selectedOrg().id, jaarnr : self.selectedKalenderjaar().jaarnr} $.post("index.php/monfin2/monfin2overzicht/getschoolbedragen", sd, function(result){ self.schooltotaal( result.schooltotaal) ; self.uitgavetypes(result.uitgavetypes); + + self.basis(result.basis); self.extra(result.extra); @@ -187,6 +192,28 @@ ls.initMonfinOverzicht2Model = function(){ case "EXTRA" : self.extrageopend(! self.extrageopend()); break; } }, + + fToelichting: function(waarop){ + var self = ls.MonfinOverzicht2Model; + var message = ''; + switch(waarop){ + case 'KOSTEN' : message = 'Uitgaven afgerond op hele euros.'; + break; + case 'SOM' : message = 'Totale uitgaven afgerond op hele euros.'; + break; + case 'BUDGET' : message = 'Budget afgerond op hele euros. Klik op i in de regel voor een uitsplitsing van het budget.'; + break; + case 'VERSCHIL' : message = 'Het verschil tussen het budget en de uitgaven afgerond op hele euros.'; + break; + case '%BUDGET' : message = 'Het gebudgetteerde bedrag als percentage van het totale budget.'; + break; + case '%UITGAVEN' : message = 'Uitgaven als percentage van de totale uitgaven.'; + break; + + } + apprise(message); + }, + fToggleOrg :function(){ this.geopend(!this.geopend()); }, @@ -195,6 +222,41 @@ ls.initMonfinOverzicht2Model = function(){ self.selectedOrg(this); self.fGetBedragen() }, + fOpenDetails: function(niveau){ + var self = ls.MonfinOverzicht2Model; + self.selectedSubsoort(''); + switch(niveau){ + case 'BASIS' : self.selectedSubsoort( + + { + 'naam' : 'Basisondersteuning gebudgetteerd', + 'uitgavetypes' : self.sombasisperuitgavetype() + }); + break; + case 'DETAIL': self.selectedSubsoort(this); + break; + case 'EXTRA': self.selectedSubsoort( + {'naam' : 'Extra ondersteuning gebudgetteerd', + 'uitgavetypes' : self.somextraperuitgavetype() + }); + break; + case 'TOTAAL': self.selectedSubsoort( + {'naam' : 'Totaal gebudgetteerd', + 'uitgavetypes' : self.totsomperuitgavetype() + }); + break; + } + + $("#modFindetails").modal('show'); + }, + + fShowComment: function(){ + // var self = ls.MonfinOverzicht2Model; + // apprise('Het eerste getal is het percentage van de gebudgetteerde interventie ten opzichte van het totaal gebedugetteerde bedrag. ' + + // 'Het tweede getal is het percentage van de gebudgetteerde interventie in verhouding tot het totaalbudget.'); + }, + + } ; // definition van model ls.MonfinOverzicht2Model.initBindings(); }; // elses