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..476c717 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); @@ -52,7 +51,6 @@ class Bestemmingen extends MY_Controller{ function getBestemmingen(){ if($this->Autorisaties_model->check_autorisatie($this->userrole, READER) <=0) { $jaartoewijzing =array(); - $bestedingen = array(); $jaarclosed = TRUE; } else { @@ -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); }; @@ -90,10 +88,19 @@ class Bestemmingen extends MY_Controller{ $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); + $this->Finbestemmingen_model->update_record(['bedrag'=>$this->clean_input('bedrag')], $bestemmingID); } } + function updatebudget(){ + // TODO check autorisatie + $bestemmingID = $this->clean_input("id"); + + $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..b79cbfc 100644 --- a/application/controllers/monfin2/Monfin2overzicht.php +++ b/application/controllers/monfin2/Monfin2overzicht.php @@ -22,35 +22,81 @@ 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 + $totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG'); + $totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET'); + + $subbedragbasis = $sombasisperuitgavetype[3]->som; + $subbudgetbasis = $sombasisperuitgavetype[3]->budgetsom; + $sommen = $this->get_som_regel($basis, $subbedragbasis, $subbudgetbasis, $budgetten->basis); + $basis = $sommen['soorten']; + $somgebudgetpct = $sommen['somgebudgetpct']; + $sombudgetpct = $sommen['sombudgetpct']; + $sombedragpct = $sommen['sombedragpct']; + $sombedragbudgetpct = $sommen['sombedragbudgetpct']; + $subbedragextra = $somextraperuitgavetype[3]->som; + $subbudgetextra = $somextraperuitgavetype[3]->budgetsom; + + $sommenex = $this->get_som_regel($extra, $subbedragextra, $subbudgetextra, $budgetten->extra); + $extra = $sommenex['soorten']; + $somgebudgetpctex = $sommenex['somgebudgetpct']; + $sombudgetpctex = $sommenex['sombudgetpct']; + $sombedragpctex = $sommenex['sombedragpct']; + $sombedragbudgetpctex = $sommenex['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->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); + $budgetten->basisverschilgeb = number_format($sombasisperuitgavetype[3]->budgetsom - $sombasisperuitgavetype[3]->som, 0, ',' , '.' ); + $budgetten->extraverschilgeb = number_format($somextraperuitgavetype[3]->budgetsom - $somextraperuitgavetype[3]->som, 0, ',' , '.' ); + $budgetten->totaalverschilgeb = $totgebudgeteerd - ($sombasisperuitgavetype[3]->som +$somextraperuitgavetype[3]->som); + + $budgetten->basisbudgetpct = number_format($sombudgetpct, 2,',', '.'); + $budgetten->basisgebudgetpct = number_format($somgebudgetpct, 2,',', '.'); + $budgetten->basisbedragpct = number_format($sombedragpct, 2,',', '.'); + $budgetten->basisbedragbudgetkaal = $sombedragbudgetpct; + $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->extrabedragbudgetkaal = $sombedragpctex; + $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, ',', '.'); + $budgetten->totgebudgetpct= $totgebudgeteerd > 0 ? '100,00': 0; + // 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 +104,44 @@ 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, ',' , '.' )); $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 +159,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 +188,50 @@ 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'); + $subbedragbasis = $sombasisperuitgavetype[3]->som; + $subbudgetbasis = $sombasisperuitgavetype[3]->budgetsom; + $sommen = $this->get_som_regel($basis, $subbedragbasis, $subbudgetbasis, $budgetten->basis); + $basis = $sommen['soorten']; + $somgebudgetpct = $sommen['somgebudgetpct']; + $sombudgetpct = $sommen['sombudgetpct']; + $sombedragpct = $sommen['sombedragpct']; + $sombedragbudgetpct = $sommen['sombedragbudgetpct']; + $subbedragextra = $somextraperuitgavetype[3]->som; + $subbudgetextra = $somextraperuitgavetype[3]->budgetsom; + + $sommenex = $this->get_som_regel($extra,$subbedragextra, $subbudgetextra, $budgetten->extra ); + $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, ',', '.'); + $budgetten->totgebudgetpct= $totgebudgeteerd > 0 ? '100,00': 0; + + + // 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 +239,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 +264,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 +279,87 @@ class Monfin2overzicht extends MY_Controller{ 'budgetten' => $budgetten, 'opmerking' => $opmerking)); } - function sommeeralles($totsomperuitgavetype){ + function sommeeralles($totsomperuitgavetype, $soort){ + $totsom =0; if ($totsomperuitgavetype){ foreach($totsomperuitgavetype as $som){ + $waarde = $som->som; + if($soort == 'BUDGET') $waarde = $som->budgetsom; if ($som->code != "REGELSOM"){ - $totsom += $som->som; + $totsom += $waarde; } } } return $totsom; } - function get_som_regel($soorten){ - if ($soorten){ - foreach($soorten as $soort){ - if ($soort->subsoorten){ - foreach ($soort->subsoorten as $subsoort){ + function get_som_regel($soorten, $bedrag, $gebudget, $budget ){ + $somgebudgetpct = 0; + $sombudgetpct = 0; + $sombedragpct = 0; + $sombedragbudgetpct = 0; + foreach($soorten ? : [] as $soort){ + foreach ($soort->subsoorten ? : [] as $subsoort){ $som = 0; - if ($subsoort->uitgavetypes){ - foreach($subsoort->uitgavetypes as $uitgavetype){ - if ($uitgavetype && $uitgavetype->bedrag){ + $budgetsom = 0; + foreach($subsoort->uitgavetypes ? : [] as $uitgavetype){ + if ($uitgavetype->bedrag){ $som += $uitgavetype->bedrag; $uitgavetype->bedrag = number_format($uitgavetype->bedrag,0,',','.'); - } + } + if ($uitgavetype->budget){ + $budgetsom += $uitgavetype->budget; + $uitgavetype->budget = number_format($uitgavetype->budget,0,',','.'); + } } - } - $subsoort->uitgavetypes[3]= new stdClass; - $subsoort->uitgavetypes[3]->bedrag =number_format($som,0, ',' , '.'); - $subsoort->uitgavetypes[3]->code ='REGELSOM'; + $subsoort->uitgavetypes[3]= new stdClass; + $bedragpct = 0; + $bedragbudgetpct = 0; + $gebudgetpct = 0; + $budgetpct = 0; + + $subsoort->uitgavetypes[3]->bedrag =number_format($som,0, ',' , '.'); + $subsoort->uitgavetypes[3]->budget =number_format($budgetsom,0, ',' , '.'); + + if($budget > 0) $bedragbudgetpct = ($som/$budget)*100; + $subsoort->uitgavetypes[3]->bedragbudgetpct= number_format($bedragbudgetpct,2, ',' , '.'); + + if($subsoort->uitgavetypes[3]->bedrag> 0 && $bedrag > 0) $bedragpct = ($som/$bedrag) * 100; + $subsoort->uitgavetypes[3]->bedragpct= number_format($bedragpct,2, ',' , '.'); + + + if($subsoort->uitgavetypes[3]->budget> 0 &&$gebudget > 0) $gebudgetpct = ($budgetsom/$gebudget) * 100; + $subsoort->uitgavetypes[3]->gebudgetpct =number_format($gebudgetpct,2, ',' , '.'); + + if($subsoort->uitgavetypes[3]->budget> 0 && $budget > 0) $budgetpct =($budgetsom/$budget) * 100; + $subsoort->uitgavetypes[3]->budgetpct =number_format($budgetpct,2, ',' , '.'); + + $subsoort->uitgavetypes[3]->verschil = number_format(($budgetsom - $som), 0,',', '.'); + + $subsoort->uitgavetypes[3]->code ='REGELSOM'; + $sombudgetpct =$sombudgetpct + $budgetpct; + $somgebudgetpct = $somgebudgetpct +$gebudgetpct; + $sombedragpct = $sombedragpct +$bedragpct; + $sombedragbudgetpct = $sombedragbudgetpct + $bedragbudgetpct; } - } + } - } - return $soorten; + + return [ + 'soorten' =>$soorten, + 'sombudgetpct' => $sombudgetpct, + 'somgebudgetpct' => $somgebudgetpct, + 'sombedragpct' => $sombedragpct, + 'sombedragbudgetpct' => $sombedragbudgetpct, + ]; } function sommeer_per_uitgavetype($sombasis,$somextra,$uitgavetypes){ $somtot = []; $regelsom =0; + $regelsom2 = 0; if ($uitgavetypes){ $index =0; foreach($uitgavetypes as $uitgavetype){ @@ -228,20 +367,29 @@ 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]->budgetsom = $regelsom2; } return $somtot; @@ -254,36 +402,38 @@ class Monfin2overzicht extends MY_Controller{ $sombasis[$uitgavetype->code]= new stdClass; $sombasis[$uitgavetype->code]->naam= $uitgavetype->naam; $sombasis[$uitgavetype->code]->som=0; + $sombasis[$uitgavetype->code]->budgetsom =0; + } - if ($basis){ - foreach($basis as $soort){ - if ($soort->subsoorten){ - foreach ($soort->subsoorten as $subsoort){ - if ($subsoort->uitgavetypes){ - foreach($subsoort->uitgavetypes as $uitgavetype) { + + foreach($basis ? $basis : [] as $soort){ + foreach ($soort->subsoorten ? $soort->subsoorten : [] as $subsoort){ + foreach($subsoort->uitgavetypes ? $subsoort->uitgavetypes :[] as $uitgavetype) { $sombasis[$uitgavetype->code]->som += $uitgavetype->bedrag; + $sombasis[$uitgavetype->code]->budgetsom += $uitgavetype->budget; } //foreach - }// if uitgavetypes }//foreach subsoort - }//if subsoort }//foreach basis - } // if basis } // if uitgavetypes $somasarray=[]; $index = 0; $regelsom=0; + $regelsom2 = 0; foreach($uitgavetypes as $uitgavetype){ $somasarray[$index ] = new stdClass; $somasarray[$index]->code = $uitgavetype->code; $somasarray[$index]->naam = $sombasis[$uitgavetype->code]->naam; - $somasarray[$index ]->som = round($sombasis[$uitgavetype->code]->som,0); - $regelsom += $somasarray[$index ]->som; + $somasarray[$index ]->som = round($sombasis[$uitgavetype->code]->som,0); + $somasarray[$index ]->budgetsom = round($sombasis[$uitgavetype->code]->budgetsom,0); + $regelsom += $somasarray[$index ]->som; + $regelsom2 += $somasarray[$index ]->budgetsom; $index += 1; }; $somasarray[$index] = new stdClass; $somasarray[$index]->code ="REGELSOM"; $somasarray[$index]->naam = "Som"; $somasarray[$index]->som = $regelsom; + $somasarray[$index]->budgetsom = $regelsom2; return $somasarray; } @@ -466,16 +616,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 +636,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 +787,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 +811,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/core/MY_Controller.php b/application/core/MY_Controller.php index 8f7b4e4..e5f7a6f 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -80,7 +80,8 @@ 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 $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..8e1379d 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); } @@ -61,7 +63,7 @@ class Finbestemmingen_model extends MY_Model{ if ($uitgavetypes){ foreach($uitgavetypes as $uitgavetype){ $subsoort->uitgavetypes[] = $this->get_bedrag_per_type($orgID, $jaarnr,$subsoort->subsoortID,$uitgavetype->code); - } + } } } }// if subsoorten @@ -87,7 +89,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,7 +124,7 @@ class Finbestemmingen_model extends MY_Model{ // }// if subsoorten // } // }// if soorten - // return $soorten; + // return $soorten; // } function setSomSubsoort($orgid, $jaarnr, $categorie){ @@ -164,6 +167,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 +180,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(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 +261,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/views/monpas/modals/findetails_modal.php b/application/views/monpas/modals/findetails_modal.php new file mode 100644 index 0000000..3914ac4 --- /dev/null +++ b/application/views/monpas/modals/findetails_modal.php @@ -0,0 +1,48 @@ +
| + | + | + | + | + | + | + |
|---|---|---|---|---|---|---|
| - - | - + | |||||
| + | ++ + + | + + | + + + + ++ | + + ++ Som + | ++ Percentage + + + | +|
| + | budget | -+ | - | + style="width: 150px; max-width: 100%; background-color: #e6ffee" + data-bind="textInput: budgetFormat, + event:{change:$root.fSaveBudget.bind($data, $parent.subsoortID, 'BASIS') } , + enable: ! $root.jaarclosed()" + /> + - -
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+ |
| + | uitgaven | + + ++ + | + + +
+
+
+
+
+ |
+
+
+
+
+
+ |
+
- Totaal basisondersteuning
-
+
+
+ Basisondersteuning
+
- Budget
-
+
+ Uitgaven
+
-
+ Gebudgeteerd per kostenpost
+
-
+ Totaal budget
+
+
+
| + | + | + | + | + | + | + | |
|---|---|---|---|---|---|---|---|
| + | + | + - | + | + + | + + + ++ | + + ++ Som + | ++ Percentage + + + + |
| - - - | - - | - - +budget | + + ++ + | + + + +
+
+
+
+
+ |
+
+
+
+
+
+ |
||
| + | uitgaven | + + ++ + + | + + +
+
+
+
+
+ |
+
+
+
+
+
+ |
+
- Totaal extra ondersteuning
-
+
+
+
+ Extra ondersteuning
+
- Budget
-
+ Opmerkingen In de regel budget geeft het eerste getal de som van het budget weer als percentage van het toaal gebudgetteerde bedrag. Het tweede getal is de som ban het budget als percentage van het totaal toegewezen budget. In de regel uitgave wordt de som van de uitgave weergegeven als percentage van de totale uitgaven.
+ Uitgaven
+
-
+ Gebudgeteerd per kostenpost
+
+
+
+ Totaal budget
+
-
-
+
- Basisondersteuning
-
-
-
- Som
- Budget
- Verschil
-
+
+
+
+
+
+ Basisondersteuning
+
+
+
+
+
+
+ som
+
+
+
+ % budget
+
+
+
+ % uitgaven
+
+
+
+ Budget
+
+
+
+
+
+ % gebudgett.
+
+
+
+ % budget
+
+
+
+
+ verschil
+
+
+
+
+
-
-
-
- Totaal basis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Extra ondersteuning
-
-
-
- Som
- Budget
- Verschil
-
-
-
-
- Totaal extra
-
+ Totaal basis
+
+
-
-
-
+
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0,00
+
+ 0,00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extra ondersteuning
+
+
+
+
+
+
+
+
+ som
+
+
+
+
+ % budget
+
+
+
+
+ % uitgaven
+
+
+
+
+ Budget
+
+
+
+
+
+
+ % gebuggett.
+
+
+
+
+ % budget
+
+
+
+
+ Verschil
+
+
+
+
+
+
+
+
+
+
+
+ Totaal extra
+
+
+
+
+
+
+
+
+
+ 0,00
+
+ 0,00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Totaal besteed
+ Totaal besteed
+
-
-
+
+
+
+ 0,00
+
+ 0,00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
diff --git a/public/js/monpas/models/monfin2/bestemmingen.js b/public/js/monpas/models/monfin2/bestemmingen.js
index 274ba18..0360d44 100644
--- a/public/js/monpas/models/monfin2/bestemmingen.js
+++ b/public/js/monpas/models/monfin2/bestemmingen.js
@@ -7,30 +7,80 @@ ls.initBestemmingenModel = function(){
this.naam = p.naam;
}
- function fAddBasissoort(k){
+ function fAddBasissoort(j,k, budget, 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, budget, totbudget, bedrag, k.categorie));
});
}
}
- function fAddSubsoort(p,categorie){
- var dit = dit;
- this.subsoortID = p.subsoortID;
- this.naam = p.naam;
+ function fAddSubsoort(a,b,gebudget, totbudget, totbedrag, categorie){
+ var dit = this;
+ var bedrag = 0;
+ var budget = 0;
+ var uitgaven = 0;
+ var budgettot = 0;
+ var bedragtot = 0;
+ var centbudget = 0;
+ var budgettot2 = 0;
+ var centbudget2 = 0;
+ this.subsoortID = b.subsoortID;
+ this.naam = b.naam;
this.categorie = categorie
- this.uitgavetypes = ko.observableArray()
- var dit = this;
- if (p.uitgavetypes){
- $.each(p.uitgavetypes, function(i,k){
+ this.uitgavetypes = ko.observableArray();
+ this.totaal = ko.observable(0);
+ this.formtotaal = ko.observable('');
+ this.procent = ko.observable(0);
+ this.subbudget = ko.observable(0);
+ this.subbudgetform = ko.observable('');
+ this.budgetprocent = ko.observable(0);
+ this.gebudgetprocent = ko.observable(0);
+ if (b.uitgavetypes) {
+
+ $.each(b.uitgavetypes, function (i, k) {
+ bedrag = Number(bedrag) + Number(k.bedrag);
+ budget = Number(budget) + Number(k.budget);
dit.uitgavetypes.push(new fAddUitgavetype(k));
});
+ dit.totaal(bedrag);
+ dit.formtotaal(parseFloat(bedrag) === 0 ? '' : parseFloat(bedrag).format(2, 3, '.', ','));
+ dit.subbudget(budget);
+ dit.subbudgetform(parseFloat(budget) === 0 ? '' : parseFloat(budget).format(2, 3, '.', ','));
+
+ centbudget = dit.subbudgetform();
+ centbudget = centbudget.replace(/[.| ,]/g, '');
+
+ if (totbudget) {
+ budgettot = totbudget.replace(/[.| ,]/g, '');
+ var budgetpct = ((Number(centbudget) / Number(budgettot)) * 100).toFixed(1)
+ budgetpct = budgetpct.replace('.', ',')
+ dit.budgetprocent(budgettot > 0 ? budgetpct + '%' : '');
+ }
+
+ if (gebudget) {
+ budgettot2 = gebudget.replace(/[.| ,]/g, '');
+ var budgetpct2 = ((Number(centbudget) / Number(budgettot2)) * 100).toFixed(1)
+ budgetpct2 = budgetpct2.replace('.', ',')
+ dit.gebudgetprocent(budgettot2 > 0 ? budgetpct2 + '%' : '')
+ }
+
+
+ if(totbedrag) {
+ bedragtot = totbedrag.replace(/[.| ,]/g, '');
+ uitgaven = dit.formtotaal();
+ uitgaven = uitgaven.replace(/[.| ,]/g, '');
+ uitgaven = ((Number(uitgaven) / Number(bedragtot)) * 100).toFixed(1)
+ dit.procent(uitgaven > 0 ? uitgaven + '%' : '')
+ }
}
+
}
function fAddUitgavetype(k){
@@ -39,6 +89,10 @@ ls.initBestemmingenModel = function(){
this.bedrag = ko.observable(k.bedrag);
this.formatted = ko.observable(parseFloat(k.bedrag).format(2,3,'.',','));
if (parseFloat(k.bedrag) <= 0) this.formatted('');
+ this.budget = ko.observable(k.budget);
+ this.budgetFormat = ko.observable(parseFloat(k.budget).format(2,3,'.',','));
+ if (parseFloat(k.budget) <= 0) this.budgetFormat('');
+ this.kleur =ko.observable('#000000');
}
@@ -51,9 +105,8 @@ ls.initBestemmingenModel = function(){
kalenderjaren : ko.observableArray([]),
selectedKalenderjaar : ko.observable(),
jaartoewijzing : ko.observable(),
- targetjaar : ko.observable(2017), //het jaar waarin met moet werken
+ targetjaar : ko.observable(2017), //het jaar waarin met moet werken
uitgavetypes : ko.observableArray(),
-
basissoorten : ko.observableArray(),
extrasoorten : ko.observableArray(),
@@ -64,7 +117,11 @@ ls.initBestemmingenModel = function(){
extrageopend : ko.observable(false),
totaalextra : ko.observable(),
- totaalbasis : ko.observable(),
+ totaalbasis : ko.observable(0),
+ gebudgetbasis : ko.observable(0),
+ budgetUnformatted : ko.observable(0),
+ gebudgetextra : ko. observable(),
+
initBindings :function(){
var self = ls.BestemmingenModel;
@@ -101,57 +158,271 @@ 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){
+ if (data.jaartoewijzing){
self.jaartoewijzing(data.jaartoewijzing);
}
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));
- });
- }
- self.extrasoorten.removeAll();
- if (data.extrabestemmingen){
- $.each(data.extrabestemmingen,function(j,k){
- self.extrasoorten.push(new fAddBasissoort(k));
- });
- }
-
- self.opmerking(data.opmerking);
+ var budget = 0;
+ var bedrag = 0;
+ if (data.basisbestemmingen){
+ $.each(data.basisbestemmingen, function(i, b){
+ $.each(b.subsoorten, function(x, s){
+ $.each(s.uitgavetypes, function(z, t){
+ budget += Number(t.budget);
+ bedrag += Number(t.bedrag);
+ } )
+ } )
+ })
+ budget = self.fSetTotalValue(budget);
+ self.gebudgetbasis(budget);
+ bedrag = self.fSetTotalValue(bedrag);
+ self.totaalbasis(bedrag);
+ var totbudget = self.jaartoewijzing().basis;
+ $.each(data.basisbestemmingen,function(j,k){
+ self.basissoorten.push(new fAddBasissoort(j,k, budget, totbudget, bedrag));
+ });
+ }
+ budget = 0;
+ bedrag = 0;
+ totbudget = 0;
+ if (data.extrabestemmingen){
+ $.each(data.extrabestemmingen, function(i, b){
+ $.each(b.subsoorten, function(x, s){
+ $.each(s.uitgavetypes, function(z, t){
+ budget += Number(t.budget);
+ bedrag += Number(t.bedrag);
+ } )
+ } )
+ })
+ budget = self.fSetTotalValue(budget);
+ self.gebudgetextra(budget);
+ bedrag = self.fSetTotalValue(bedrag);
+ self.totaalextra(bedrag);
+ totbudget = self.jaartoewijzing().extra;
+ $.each(data.extrabestemmingen,function(j,k){
+ self.extrasoorten.push(new fAddBasissoort(j, k, budget, 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;
+ var uitgave = 0;
+ var formuitgave = 0;
+ var totaaluitgaven = 0;
+ var totaaluitgavenR = 0;
+ // if( Number(dit.budget()) <= 0){
+ // apprise("Vul eerst een budget in.")
+ // return;
+ // }
+ var invoer = dit.formatted();
+ if ( ! invoer) invoer = '0'
+ invoer = invoer.split('.').join('');
+ invoer= invoer.replace(',' , '.');
+ if (isNaN( parseFloat(invoer) ) ) {
+ return;
+ }
+ else {
+ invoer=parseFloat(invoer)
+ }
+
+ dit.formatted(parseFloat(invoer).format(2,3,'.',','));
+ if (invoer <= 0) dit.formatted('');
+ dit.bedrag(invoer);
+ $.each(soort === 'BASIS' ? self.basissoorten() : self.extrasoorten(), function(i, b){
+ $.each(b.subsoorten(), function(x, s){
+ if (s.uitgavetypes()) {
+ $.each(s.uitgavetypes(), function (i, k) {
+ totaaluitgaven = Number(totaaluitgaven) + Number(k.bedrag());
+ });
+ if(s.subsoortID === subsoortid) {
+ $.each(s.uitgavetypes(), function (i, k) {
+ uitgave = Number(uitgave) + Number(k.bedrag());
+ });
+ s.totaal(uitgave);
+ s.formtotaal(parseFloat(uitgave) === 0 ? '' : parseFloat(uitgave).format(2, 3, '.', ','));
+
+ }
+
+ }
+ })
+ })
+ totaaluitgaven = totaaluitgaven.format(2, 3, '.', ',');
+ totaaluitgavenR = totaaluitgaven.replace(/[.| ,]/g, '');
+
+ $.each(soort === 'BASIS' ? self.basissoorten() : self.extrasoorten(), function(i, b){
+ $.each(b.subsoorten(), function(x, s){
+ if (s.uitgavetypes()) {
+ let procent = 0;
+ formuitgave = s.formtotaal();
+ formuitgave = formuitgave.replace(/[.| ,]/g, '');
+ if (Number(totaaluitgavenR) > 0) procent = ((Number(formuitgave) / Number(totaaluitgavenR)) * 100).toFixed(1)
+ else formuitgave = 0;
+ s.procent(Number(totaaluitgavenR) > 0 && Number(procent) > 0 ? procent + '%' : '')
+
+ }
+ })
+ })
+
+ soort === 'BASIS' ? self.totaalbasis(totaaluitgaven): self.totaalextra(totaaluitgaven) ;
+
+ invoer = Math.round(invoer * 100) ;
+ var sd = {'id': dit.finbestemmingID,
+ 'bedrag' : invoer
+ }
+ $.post("index.php/monfin2/bestemmingen/updatebedrag", sd);
+ },
+
+ fSaveBudget:function( subsoortid, soort ){
+ var self = ls.BestemmingenModel;
+ if (self.jaarclosed()) return;
+ var dit = this;
+ var budgetoud = dit.budget();
+ var budgetoudForm = dit.budget() > 0 ? parseFloat(budgetoud).format(2, 3, '.', ',') : '';
+ var subbudget = 0;
+ var subbudgetoud = 0;
+ var subbudgetForm = '';
+ var subbudgetFormoud = '';
+ var totaalgebudget = 0;
+ var totaalgebudgetR = 0;
+ var totaalgebudgetRoud = 0;
+ var totaalgebudgetpct = '';
+ var totaalgebudgetpctoud = '';
+ var subbudgetpct = '';
+ var subbudgetpctoud = '';
+
+
+ var totaalbudget = (soort === 'BASIS' ? self.jaartoewijzing().basis.replace(/[.| ,]/g, '') : self.jaartoewijzing().extra.replace(/[.| ,]/g, ''));
+
+ // 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)
+
+ dit.budgetFormat(parseFloat(invoer).format(2, 3, '.', ','));
+ if (invoer <= 0){
+ dit.budgetFormat(budgetoudForm);
+ invoer = 0;
+ return;
+ }
+ dit.budget(invoer);
+
+ // 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) {
+ subbudgetoud = s.subbudget();
+ subbudgetFormoud= s.subbudgetform();
+ subbudgetpctoud = s.budgetprocent();
+ totaalgebudgetpctoud = s.gebudgetprocent();
+ $.each(s.uitgavetypes(), function (z, k) {
+ subbudget = Number(subbudget) + Number(k.budget());
+ });
+ s.subbudget(subbudget);
+ if (parseFloat(subbudget) > 0) {
+ subbudgetForm = parseFloat(subbudget).format(2, 3, '.', ',');
+ }
+ s.subbudgetform(Number(subbudget) > 0 ? subbudgetForm : '');
+
+ if (Number(subbudget) > 0) {
+ subbudget = subbudgetForm.replace(/[.| ,]/g, '');
+ }
+
+ subbudgetpct = (Number(totaalbudget) > 0 ? ((Number(subbudget) / Number(totaalbudget)) * 100).toFixed(1) : 0);
+ subbudgetpct = subbudgetpct.replace('.', ',');
+ s.budgetprocent(Number(totaalbudget) > 0 ? subbudgetpct + '%' : '')
+
+ }
+ $.each(s.uitgavetypes(), function (z, k) {
+ totaalgebudget = Number(totaalgebudget) + Number(k.budget());
+ });
+ }
+
+ })
+ })
+
+ if (parseFloat(totaalgebudget) > 0) {
+ totaalgebudgetR = parseFloat(totaalgebudget).format(2, 3, '.', ',');
+ totaalgebudgetR = totaalgebudgetR.replace(/[.| ,]/g, '');
+
+
+
+ }
+ totaalgebudgetpct = (Number(totaalgebudgetR) > 0 ? ((Number(subbudget) / Number(totaalgebudgetR)) * 100).toFixed(1) : 0);
+ totaalgebudgetpct = totaalgebudgetpct.replace('.', ',');
+
+ // update procenten
+ $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){
+ $.each(b.subsoorten(), function(x, s){
+ if (s.uitgavetypes()) {
+ if (s.subsoortID === subsoortid) {
+ s.gebudgetprocent(totaalgebudgetpct + '%' );
+ }
+ }
+ })
+ })
+
+ if(Number(totaalgebudget) > Number(totaalbudget) ){
+ dit.budgetFormat(budgetoudForm);
+ dit.budget(budgetoud);
+ $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){
+ $.each(b.subsoorten(), function(x, s){
+ if (s.uitgavetypes()) {
+ if (s.subsoortID === subsoortid) {
+ s.subbudget(subbudgetoud);
+ s.subbudgetform(subbudgetFormoud);
+ s.budgetprocent(subbudgetpctoud);
+ s.gebudgetprocent(totaalgebudgetpctoud);
+ }
+ }
+ })
+ })
+
+
+
+ //hier alle oude waarden invullen
+ apprise("Het budget overschrijdt het totaalbudget")
+ return;
+ }
+ else {
+ soort=== 'BASIS' ? self.gebudgetbasis(totaalgebudget): self.gebudgetextra(totaalbudget);
+
+ invoer = Math.round(invoer * 100);
+ var sd = {
+ 'id' : dit.finbestemmingID,
+ 'budget': invoer,
- 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)
}
- dit.formatted(parseFloat(invoer).format(2,3,'.',','));
- if (invoer <= 0) dit.formatted('');
- dit.bedrag(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 +431,13 @@ ls.initBestemmingenModel = function(){
};// switch
},
+ fToelichting: function(){
+
+ apprise('
+
+
+
+
+
+
+
+
+
+
+
-
- Basisondersteuning
+ Basisondersteuning
Extra ondersteuning
- Organisatie
- Personeel
- Materieel
- Scholing
- Personeel
- Materieel
- Scholing
+
+
- Organisatie
+
+ Personeel
+ Materieel
+ Scholing
+ Personeel
+ Materieel
+ Scholing
+
+
-
-
-
-
-
-
+ budget
+
+
+
+
+
+
+
+
-
+ uitgaven
+
+
+
+
+
+
+
+
+
+
+
+
+ Subtotaal
-
- Materieel
- Scholing
- Personeel
- Materieel
- Scholing
+ budget
+
+ Materieel
+ Scholing
+ Personeel
+ Materieel
+ Scholing
+
+
+ uitgaven
+
+ Materieel
+ Scholing
+ Personeel
+ Materieel
+ Scholing
+
+
-
-
-
-
-
-
+ budget
+
+
+
+
+
+
+
-
+ uitgaven
+
+
+
+
+
+
+
+
- Totaal
- Personeel
- Materieel
- Scholing
- Personeel
- Materieel
- Scholing
+
+
+ Totaal
+ budget
+ Personeel
+ Materieel
+ Scholing
+ Personeel
+ Materieel
+ Scholing
+
+ uitgaven
+ Personeel
+
+ Materieel
+
+ Scholing
+
+ Personeel
+
+ Materieel
+
+ Scholing
+
+