From ac46447bea6d54108f3ce25e363c666973cc0123 Mon Sep 17 00:00:00 2001 From: Monique Hansma Date: Fri, 9 Jun 2023 15:50:11 +0200 Subject: [PATCH 1/4] tussenopslag --- .../controllers/monfin2/Bestemmingen.php | 2 + .../models/monfin2/Finbestemmingen_model.php | 33 +- .../monpas/pages/monfin2/bestemmingen.php | 355 ++++++------ public/css/monpas/main.css | 13 + .../js/monpas/models/monfin2/bestemmingen.js | 548 ++++++++++-------- 5 files changed, 513 insertions(+), 438 deletions(-) diff --git a/application/controllers/monfin2/Bestemmingen.php b/application/controllers/monfin2/Bestemmingen.php index a48f08e..b59675b 100644 --- a/application/controllers/monfin2/Bestemmingen.php +++ b/application/controllers/monfin2/Bestemmingen.php @@ -90,6 +90,8 @@ class Bestemmingen extends MY_Controller{ 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(){ diff --git a/application/models/monfin2/Finbestemmingen_model.php b/application/models/monfin2/Finbestemmingen_model.php index 1c503d7..7e6388b 100644 --- a/application/models/monfin2/Finbestemmingen_model.php +++ b/application/models/monfin2/Finbestemmingen_model.php @@ -35,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 @@ -58,13 +61,31 @@ 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) { + $restant = 0; + $restantbudget = 0; + foreach ($uitgavetypes as $uitgavetype) { + + $subsoort->uitgavetypes[] = $this->get_bedrag_per_type($orgID, $jaarnr, $subsoort->subsoortID, $uitgavetype->code); } - } + if (count($subsoort->uitgavetypes) > 0) { + $restant = number_format(0, 2); + $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); + } + $subsoort->uitgavetypes[] = [ + 'id' => '0', + 'bedrag' => $restant, + 'budget' => $restantbudget, + 'code' => 'RESTANT', + ]; + } + } }// if subsoorten } diff --git a/application/views/monpas/pages/monfin2/bestemmingen.php b/application/views/monpas/pages/monfin2/bestemmingen.php index fe2870c..5a7029c 100644 --- a/application/views/monpas/pages/monfin2/bestemmingen.php +++ b/application/views/monpas/pages/monfin2/bestemmingen.php @@ -23,89 +23,101 @@ Basisondersteuning
- - +
+ - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + @@ -114,47 +126,38 @@ - - - + - - - - - - - - - + - -
- - - - - Som - - Percentage - - -
+ + + + Restant + + + Percentage + + +
+
+ + + + +
budget + + 0), + style : {'backgroundColor' : code == 'TOTAAL' ? '#e6ffee' : Number($parent.uitgavetypes()[0].budget()) > 0 ? '#e6ffee' : '#cccccc' } " /> + + + + + + -
- - -
-
-
- +
uitgaven + + + + + + -
- - -
-
-
-
@@ -187,90 +190,93 @@ Extra ondersteuning
- - +
+ - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + - - - - - - - - - - - - @@ -279,47 +285,34 @@ - - - - - - - - - - - - - - @@ -351,9 +344,7 @@

Opmerkingen

- - 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/monfin2/bestemmingen.js b/public/js/monpas/models/monfin2/bestemmingen.js index 722a8d7..894ea3b 100644 --- a/public/js/monpas/models/monfin2/bestemmingen.js +++ b/public/js/monpas/models/monfin2/bestemmingen.js @@ -7,108 +7,92 @@ ls.initBestemmingenModel = function(){ this.naam = p.naam; } - function fAddBasissoort(j,k, budget, totbudget, bedrag ){ + 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(a, b, budget, totbudget, bedrag, k.categorie)); + dit.subsoorten.push(new fAddSubsoort(a, b, totbudget, bedrag, k.categorie)); }); } } - 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 centbedrag = 0; - this.subsoortID = b.subsoortID; - this.naam = b.naam; - this.categorie = categorie - this.uitgavetypes = ko.observableArray(); - this.totaal = ko.observable(0); - this.formtotaal = ko.observable(''); - this.procent = ko.observable(0); - this.totaalbudgetprocent = ko.observable(''); - this.subbudget = ko.observable(0); - this.subbudgetReserve = ko.observable(0); - this.subbudgetform = ko.observable(''); - this.subbudgetformReserve = ko.observable(''); - this.budgetprocent = ko.observable(0); - this.gebudgetprocent = ko.observable(0); + function fAddSubsoort(a,b, totbudget, totbedrag, categorie) { + var dit = this; + 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) { + subbudget = b.uitgavetypes[0].budget; + subbedrag = b.uitgavetypes[0].bedrag; $.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.subbudgetReserve(budget); - dit.subbudgetform(parseFloat(budget) === 0 ? '' : parseFloat(budget).format(2, 3, '.', ',')); - dit.subbudgetformReserve(parseFloat(budget) === 0 ? '' : parseFloat(budget).format(2, 3, '.', ',')); + 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 : '' ); + } - centbudget = dit.subbudgetform(); - centbudget = centbudget.replace(/[.| ,]/g, ''); - uitgaven = dit.formtotaal(); - uitgaven = uitgaven.replace(/[.| ,]/g, ''); + 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 : '' ); + } - if (totbudget) { - budgettot = totbudget.replace(/[.| ,]/g, ''); - var budgetpct = ((Number(centbudget) / Number(budgettot)) * 100).toFixed(1) - budgetpct = budgetpct.replace('.', ',') - dit.budgetprocent(budgettot > 0 ? budgetpct + '%' : ''); - var budgetbedragpct = ((Number(uitgaven) / Number(budgettot)) * 100).toFixed(1) - budgetbedragpct = budgetbedragpct.replace('.', ',') - dit.totaalbudgetprocent(Number(budgettot) > 0 && Number(centbudget) > 0 ? budgetbedragpct + '%' : ''); } - else{ - dit.budgetprocent(''); - dit.totaalbudgetprocent(''); - } - - if (gebudget) { - budgettot2 = gebudget.replace(/[.| ,]/g, ''); - var budgetpct2 = ((Number(centbudget) / Number(budgettot2)) * 100).toFixed(1) - budgetpct2 = budgetpct2.replace('.', ',') - dit.gebudgetprocent(budgettot2 > 0 ? budgetpct2 + '%' : '') - } - else dit.gebudgetprocent(''); - - - if(totbedrag) { - bedragtot = totbedrag.replace(/[.| ,]/g, ''); - - - var uitgavenF = ((Number(uitgaven) / Number(bedragtot)) * 100).toFixed(1) - dit.procent(Number(uitgaven) > 0 ? uitgavenF + '%' : '') - } - else dit.procent(''); - } - } - 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.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'); + 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); + } + if(Number(this.bedrag) > Number(this.budget())) this.bedragKleur('red'); + if( Number(this.bedrag()) < 0) this.bedragKleur('red'); + if(Number(this.budget())< 0) this.budgetKleur('red') + + + } @@ -183,25 +167,94 @@ ls.initBestemmingenModel = function(){ 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); - } - else {self.jaartoewijzing(false);} - self.jaarclosed(data.jaarclosed); + $.post("index.php/monfin2/bestemmingen/getBestemmingen ", sd, function(data) { + if (data.jaartoewijzing) { + self.jaartoewijzing(data.jaartoewijzing); + } else { + self.jaartoewijzing(false); + } + 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){ - $.each(s.uitgavetypes, function(z, t){ - budget += Number(t.budget); - bedrag += Number(t.bedrag); - } ) + $.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); + } + }) + } } ) }) if(Number(totbudget) > 0) { @@ -224,8 +277,10 @@ ls.initBestemmingenModel = function(){ bedrag = self.fSetTotalValue(bedrag); self.totaalbasis(bedrag); + bedrag = bedrag.replace(/[.|,]/g, ''); + $.each(data.basisbestemmingen,function(j,k){ - self.basissoorten.push(new fAddBasissoort(j,k, budget, totbudget, bedrag)); + self.basissoorten.push(new fAddBasissoort(j,k, totbudget, bedrag)); }); } budget = 0; @@ -237,8 +292,10 @@ ls.initBestemmingenModel = function(){ $.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); + if(t.code == 'TOTAAL') { + budget += Number(t.budget); + bedrag += Number(t.bedrag); + } } ) } ) }) @@ -263,9 +320,10 @@ ls.initBestemmingenModel = function(){ 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, budget, totbudget, bedrag)); + self.extrasoorten.push(new fAddBasissoort(j, k, totbudget, bedrag)); }); } @@ -286,52 +344,58 @@ ls.initBestemmingenModel = function(){ var self = ls.BestemmingenModel; if (self.jaarclosed()) return; var dit = this; + var subtotaal = 0; var subtotaalForm = ''; var totuitgaven = 0; var totuitgavenForm = 0; var uitgavenpct = '0,0'; - var budgetpct = ''; + var subtotID = 0; var totaalbudget = (soort === 'BASIS' ? self.jaartoewijzing().basis.replace(/[.| ,]/g, '') : self.jaartoewijzing().extra.replace(/[.| ,]/g, '')); // update bedrag en bedragformat - var invoer = dit.formatted(); + 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.formatted(parseFloat(invoer).format(2, 3, '.', ',')); - else dit.formatted(''); + + 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) { - $.each(s.uitgavetypes(), function (z, k) { - subtotaal = Number(subtotaal) + Number(k.bedrag()); - }); + subtotID = s.uitgavetypes()[0].finbestemmingID; - s.totaal(subtotaal); + 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(subtotaal) > 0) { - subtotaalForm = Number(subtotaal).format(2, 3, '.', ','); - s.formtotaal(subtotaalForm); + if (Number(s.uitgavetypes()[0].bedrag()) > 0) { + subtotaalForm = Number(s.uitgavetypes()[0].bedrag()).format(2, 3, '.', ','); + s.uitgavetypes()[0].bedragFormat(subtotaalForm) } - - if (Number(subtotaal) > 0) { - subtotaal = subtotaalForm.replace(/[.| ,]/g, ''); - } - //met extra nullen van centen } - $.each(s.uitgavetypes(), function (z, k) { - totuitgaven = Number(totuitgaven) + Number(k.bedrag()); - }); } + totuitgaven = Number(totuitgaven) + Number(s.uitgavetypes()[0].bedrag()); }) }) @@ -343,26 +407,24 @@ ls.initBestemmingenModel = function(){ // update procenten en reserve totalen van subsoorten $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ $.each(b.subsoorten(), function(x, s){ - if (s.uitgavetypes()) { - subtotaal = s.totaal(); + + if (s.uitgavetypes() && s.subsoortID === subsoortid) { + subtotaal = Number(s.uitgavetypes()[0].bedrag()); if (parseFloat(subtotaal) > 0) { subtotaal = parseFloat(subtotaal).format(2, 3, '.', ','); subtotaal = subtotaal.replace(/[.| ,]/g, ''); - if(Number(totuitgaven)> 0 ) { + if (Number(totuitgaven) > 0) { uitgavenpct = ((Number(subtotaal) / Number(totuitgaven)) * 100).toFixed(1); uitgavenpct = uitgavenpct.replace('.', ','); - s.procent(uitgavenpct + '%'); - budgetpct = ((Number(subtotaal) / Number(totaalbudget)) * 100).toFixed(1); - budgetpct = budgetpct.replace('.', ',') - s.totaalbudgetprocent(budgetpct + '%'); - } - } - else{ - s.procent(''); - s.totaalbudgetprocent(''); - } + s.bedragpctFormat(uitgavenpct + '%'); - } + } else { + s.bedragpct(0); + s.bedragpctFormat('') + + } + + }} }) }) @@ -383,6 +445,12 @@ ls.initBestemmingenModel = function(){ 'bedrag': invoer, } $.post("index.php/monfin2/bestemmingen/updatebedrag", sd); + + var sd2 = { + 'id' : subtotID, + 'bedrag': subtotaal, + } + $.post("index.php/monfin2/bestemmingen/updatebedrag", sd2); }, @@ -393,114 +461,142 @@ ls.initBestemmingenModel = function(){ 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 subbudgetForm = ''; var totaalgebudget = 0; var totaalgebudgetForm = 0; var totaalgebudgetpct = 0; var budgetpct = ''; - var gebudgetpct = ''; 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' + 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.budgetFormat(parseFloat(invoer).format(2, 3, '.', ',')); - else dit.budgetFormat(''); - - dit.budget(invoer); - - // update subtotalen + // 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) { - $.each(s.uitgavetypes(), function (z, k) { - subbudget = Number(subbudget) + Number(k.budget()); - }); - s.subbudget(subbudget); - //zonder nullen van centen - if (parseFloat(subbudget) > 0) { - subbudgetForm = parseFloat(subbudget).format(2, 3, '.', ','); + switch(code){ + case 'TOTAAL' : subbudget = Number(s.uitgavetypes()[1].budget()) +Number(s.uitgavetypes()[2].budget()) + Number(s.uitgavetypes()[3].budget()); + if(invoer >= subbudget) { + dit.budget(invoer); + stuurMelding = false; + } + totaalgebudget +=invoer + + break; + case 'PERSONEEL': subbudget = invoer +Number(s.uitgavetypes()[2].budget()) + Number(s.uitgavetypes()[3].budget()); + if(Number(s.uitgavetypes()[0].budget()) >= subbudget) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget+= Number(s.uitgavetypes()[0].budget()) + } + break; + case 'MATERIEEL': subbudget = Number(s.uitgavetypes()[1].budget()) + invoer+ Number(s.uitgavetypes()[3].budget()); + if(Number(s.uitgavetypes()[0].budget()) >= subbudget) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget+= Number(s.uitgavetypes()[0].budget()); + } + break; + case 'SCHOLING': subbudget = Number(s.uitgavetypes()[1].budget()) + Number(s.uitgavetypes()[2].budget())+ invoer ; + if(Number(s.uitgavetypes()[0].budget() >= subbudget)) { + dit.budget(invoer); + stuurMelding = false; + totaalgebudget+= Number(s.uitgavetypes()[0].budget()) + } + break; + } - s.subbudgetform(Number(subbudget) > 0 ? subbudgetForm : ''); + + + 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); + if(restant > 0 ) s.uitgavetypes()[4].budgetFormat(parseFloat(restant).format(2, 3, '.', ',')); - if (Number(subbudget) > 0) { - subbudget = subbudgetForm.replace(/[.| ,]/g, ''); } - //met extra nullen van centen } - $.each(s.uitgavetypes(), function (z, k) { - totaalgebudget = Number(totaalgebudget) + Number(k.budget()); - }); + else{ + totaalgebudget += 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(restantOudForm); +// +// } +// } +// }) +// }) +// +// // var string = "Het budget overschrijdt het totaalbudget." +// // if(Number(totaalbudget) ===0) string = 'Er is nog geen budget.' +// // apprise(string); +// // return; +// +// } - if(Number(totaalgebudget) > Number(totaalbudget)){ - dit.budget(budgetoud); - dit.budgetFormat(budgetoudForm); - $.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(s.subbudgetReserve()); - s.subbudgetform(s.subbudgetformReserve()); - } - - } - - }) - }) - var string = "Het budget overschrijdt het totaalbudget." - if(Number(totaalbudget) ===0) string = 'Er is nog geen budget.' - apprise(string); - return; - - } - - // update procenten en reserve totalen van subsoorten + // update procenten $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ - $.each(b.subsoorten(), function(x, s){ - if (s.uitgavetypes()) { - subbudget = s.subbudget(); - if (parseFloat(subbudget) > 0) { - subbudget = parseFloat(subbudget).format(2, 3, '.', ','); - subbudget = subbudget.replace(/[.| ,]/g, ''); - if(Number(totaalgebudget)> 0 ) { - gebudgetpct = ((Number(subbudget) / Number(totaalgebudget)) * 100).toFixed(1); - gebudgetpct = gebudgetpct.replace('.', ','); - s.gebudgetprocent(gebudgetpct + '%'); - budgetpct = ((Number(subbudget) / Number(totaalbudget)) * 100).toFixed(1); - budgetpct = budgetpct.replace('.', ',') - s.budgetprocent(budgetpct + '%'); - } - } - else{ - s.gebudgetprocent(''); - s.budgetprocent(''); - } - - if (s.subsoortID === subsoortid) { - s.subbudgetReserve(s.subbudget()); - s.subbudgetformReserve(s.subbudgetform()); - } + $.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(''); + } + } }) }) @@ -539,8 +635,8 @@ ls.initBestemmingenModel = function(){ fToelichting: function(){ apprise( - '

In de rijen budget geeft het percentage het gebugeteerde bedrag in de rij weer in verhouding tot het toaalbudget.

'+ - '

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

' + '

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.

' ) }, @@ -558,54 +654,6 @@ ls.initBestemmingenModel = function(){ },500); } } ; // 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 } // function initBestemmingenModel From f7adcfcc93a0cc3c7d5223fc3fbaa99d013f9f0a Mon Sep 17 00:00:00 2001 From: Monique Hansma Date: Wed, 14 Jun 2023 12:44:03 +0200 Subject: [PATCH 2/4] tussenopslag --- .../controllers/monfin2/Monfin2overzicht.php | 65 +++++++++---------- .../js/monpas/models/monfin2/bestemmingen.js | 15 +++-- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/application/controllers/monfin2/Monfin2overzicht.php b/application/controllers/monfin2/Monfin2overzicht.php index df54fd9..613e563 100644 --- a/application/controllers/monfin2/Monfin2overzicht.php +++ b/application/controllers/monfin2/Monfin2overzicht.php @@ -38,8 +38,6 @@ class Monfin2overzicht extends MY_Controller{ $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"); @@ -50,7 +48,6 @@ class Monfin2overzicht extends MY_Controller{ $totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG'); $totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET'); - $sommen = $this->get_som_regel($basis, $budgetten->basis); $basis = $sommen['soorten']; $sombudgetpct = $sommen['sombudgetpct']; @@ -268,21 +265,21 @@ class Monfin2overzicht extends MY_Controller{ 'budgetten' => $budgetten, 'opmerking' => $opmerking)); } - function sommeeralles($totsomperuitgavetype, $soort){ + 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 += $waarde; - } - } - } - return $totsom; - } - + $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_regel($soorten, $budget ){ $somgebudgetpct = 0; $sombudgetpct = 0; @@ -377,22 +374,23 @@ class Monfin2overzicht extends MY_Controller{ 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($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 $uitgavetype) { - $sombasis[$uitgavetype->code]->som += $uitgavetype->bedrag; - $sombasis[$uitgavetype->code]->budgetsom += $uitgavetype->budget; - } //foreach - }//foreach subsoort - }//foreach basis + 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 ?: 0); + $sombasis[$uitgavetype->code]->budgetsom += ($uitgavetype->budget ?: 0); + } //foreach + }//foreach subsoort + }//foreach basis + } } // if uitgavetypes $somasarray=[]; $index = 0; @@ -404,10 +402,11 @@ class Monfin2overzicht extends MY_Controller{ $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); - $regelsom += $somasarray[$index ]->som; - $regelsom2 += $somasarray[$index ]->budgetsom; $index += 1; }; + $regelsom = $somasarray[0]->som; + $regelsom2 = $somasarray[0 ]->budgetsom; + $somasarray[$index] = new stdClass; $somasarray[$index]->code ="REGELSOM"; $somasarray[$index]->naam = "Som"; diff --git a/public/js/monpas/models/monfin2/bestemmingen.js b/public/js/monpas/models/monfin2/bestemmingen.js index 894ea3b..faf0d15 100644 --- a/public/js/monpas/models/monfin2/bestemmingen.js +++ b/public/js/monpas/models/monfin2/bestemmingen.js @@ -33,7 +33,9 @@ ls.initBestemmingenModel = function(){ var subbedrag = 0; - if (b.uitgavetypes) { + if (b.uitgavetypes || b.uitgavetypes()) { + if (b.uitgavetypes) { + subbudget = b.uitgavetypes[0].budget; subbedrag = b.uitgavetypes[0].bedrag; @@ -41,6 +43,7 @@ ls.initBestemmingenModel = function(){ dit.uitgavetypes.push(new fAddUitgavetype(k)); }); + } if ( Number(totbudget) > 0) { if(Number(subbudget) > 0) subbudget = subbudget.replace(/[.| ,]/g, ''); @@ -368,8 +371,6 @@ ls.initBestemmingenModel = function(){ if(Number(invoer) > 0) dit.bedragFormat(parseFloat(invoer).format(2, 3, '.', ',')); else dit.bedragFormat(''); - - dit.bedrag(invoer); var code = dit.code; @@ -407,8 +408,6 @@ ls.initBestemmingenModel = function(){ // update procenten en reserve totalen van subsoorten $.each(soort === 'BASIS' ? self.basissoorten(): self.extrasoorten(), function(i, b){ $.each(b.subsoorten(), function(x, s){ - - if (s.uitgavetypes() && s.subsoortID === subsoortid) { subtotaal = Number(s.uitgavetypes()[0].bedrag()); if (parseFloat(subtotaal) > 0) { subtotaal = parseFloat(subtotaal).format(2, 3, '.', ','); @@ -424,7 +423,7 @@ ls.initBestemmingenModel = function(){ } - }} + } }) }) @@ -654,6 +653,10 @@ ls.initBestemmingenModel = function(){ },500); } } ; // definition van model + + + + ls.BestemmingenModel.initBindings(); }; // else } // function initBestemmingenModel From 0afb3a9263eb6d6b1f2a8127d6e769eef79bc9c9 Mon Sep 17 00:00:00 2001 From: Monique Hansma Date: Mon, 19 Jun 2023 17:38:26 +0200 Subject: [PATCH 3/4] tussenstand --- .../controllers/monfin2/Monfin2overzicht.php | 91 ++++++++++--------- .../models/monfin2/Finbestemmingen_model.php | 16 ++-- .../views/monpas/pages/monfin2/overzicht.php | 65 ++++++++----- .../js/monpas/models/monfin2/bestemmingen.js | 77 ++++++++-------- .../monpas/models/monfin2/monfinoverzicht2.js | 7 +- 5 files changed, 146 insertions(+), 110 deletions(-) diff --git a/application/controllers/monfin2/Monfin2overzicht.php b/application/controllers/monfin2/Monfin2overzicht.php index 613e563..3c20875 100644 --- a/application/controllers/monfin2/Monfin2overzicht.php +++ b/application/controllers/monfin2/Monfin2overzicht.php @@ -42,6 +42,13 @@ class Monfin2overzicht extends MY_Controller{ $basis = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr,"BASIS"); $extra = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr,"EXTRA"); +// echo json_encode([ +// 'basis' => $basis, +// 'extra' =>$extra +// ]); +// +// return; + $sombasisperuitgavetype = $this->get_som_per_uitgavetype($basis, $uitgavetypes); $somextraperuitgavetype = $this->get_som_per_uitgavetype($extra, $uitgavetypes); $totsomperuitgavetype = $this->sommeer_per_uitgavetype($sombasisperuitgavetype,$somextraperuitgavetype, $uitgavetypes); @@ -291,12 +298,12 @@ class Monfin2overzicht extends MY_Controller{ $budgetsom = 0; foreach($subsoort->uitgavetypes ? : [] as $uitgavetype){ if ($uitgavetype->bedrag){ - $som += $uitgavetype->bedrag; + $som += isset($uitgavetype->bedrag) && floatval($uitgavetype->bedrag) > 0 ? floatval($uitgavetype->bedrag): 0; $uitgavetype->bedrag = number_format($uitgavetype->bedrag,0,',','.'); } if ($uitgavetype->budget){ - $budgetsom += $uitgavetype->budget; - $uitgavetype->budget = number_format($uitgavetype->budget,0,',','.'); + $budgetsom += is_numeric($uitgavetype->budget) ? $uitgavetype->budget: 0; + $uitgavetype->budget =is_numeric($uitgavetype->budget) ? number_format($uitgavetype->budget,0,',','.'): '0,00'; } } $subsoort->uitgavetypes[3]= new stdClass; @@ -371,50 +378,48 @@ class Monfin2overzicht extends MY_Controller{ return $somtot; } - function get_som_per_uitgavetype($basis,$uitgavetypes){ - $sombasis = []; - if ($uitgavetypes){ - foreach($uitgavetypes as $uitgavetype) { - $sombasis[$uitgavetype->code] = new stdClass; - $sombasis[$uitgavetype->code]->naam = $uitgavetype->naam; - $sombasis[$uitgavetype->code]->som = 0; - $sombasis[$uitgavetype->code]->budgetsom = 0; + 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 $uitgavetype) { - - $sombasis[$uitgavetype->code]->som += ($uitgavetype->bedrag ?: 0); - $sombasis[$uitgavetype->code]->budgetsom += ($uitgavetype->budget ?: 0); - } //foreach - }//foreach subsoort - }//foreach basis } - } // if uitgavetypes - $somasarray=[]; - $index = 0; - $regelsom=0; - $regelsom2 = 0; - foreach($uitgavetypes as $uitgavetype){ - $somasarray[$index ] = new stdClass; - $somasarray[$index]->code = $uitgavetype->code; - $somasarray[$index]->naam = $sombasis[$uitgavetype->code]->naam; - $somasarray[$index ]->som = round($sombasis[$uitgavetype->code]->som,0); - $somasarray[$index ]->budgetsom = round($sombasis[$uitgavetype->code]->budgetsom,0); - $index += 1; - }; - $regelsom = $somasarray[0]->som; - $regelsom2 = $somasarray[0 ]->budgetsom; - $somasarray[$index] = new stdClass; - $somasarray[$index]->code ="REGELSOM"; - $somasarray[$index]->naam = "Som"; - $somasarray[$index]->som = $regelsom; + foreach($basis ? $basis : [] as $soort){ + foreach ($soort->subsoorten ? $soort->subsoorten : [] as $subsoort){ + foreach($subsoort->uitgavetypes ? $subsoort->uitgavetypes :[] as $kostenpost) { + $sombasis[$uitgavetype->code]->som += is_numeric($kostenpost->bedrag)? floatval($kostenpost->bedrag): 0; + $sombasis[$uitgavetype->code]->budgetsom += is_numeric($kostenpost->budget) ? floatval($kostenpost->budget): 0; + } //foreach + }//foreach subsoort + }//foreach basis + } // if uitgavetypes + $somasarray=[]; + $index = 0; + $regelsom=0; + $regelsom2 = 0; + foreach($uitgavetypes as $uitgavetype){ + $somasarray[$index ] = new stdClass; + $somasarray[$index]->code = $uitgavetype->code; + $somasarray[$index]->naam = $sombasis[$uitgavetype->code]->naam; + $somasarray[$index ]->som = round($sombasis[$uitgavetype->code]->som,0); + $somasarray[$index ]->budgetsom = round($sombasis[$uitgavetype->code]->budgetsom,0); + $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; - } + + return $somasarray; + } function getbestuursbedragen(){ $targetorgid = $this->clean_input('orgid'); diff --git a/application/models/monfin2/Finbestemmingen_model.php b/application/models/monfin2/Finbestemmingen_model.php index 7e6388b..027b72e 100644 --- a/application/models/monfin2/Finbestemmingen_model.php +++ b/application/models/monfin2/Finbestemmingen_model.php @@ -64,26 +64,26 @@ class Finbestemmingen_model extends MY_Model{ foreach($soort->subsoorten as $index =>$subsoort){ // haal per uitgavetypes de bedragen op if ($uitgavetypes) { - $restant = 0; + $restantbudget = 0; foreach ($uitgavetypes as $uitgavetype) { $subsoort->uitgavetypes[] = $this->get_bedrag_per_type($orgID, $jaarnr, $subsoort->subsoortID, $uitgavetype->code); } if (count($subsoort->uitgavetypes) > 0) { - $restant = number_format(0, 2); $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); } - $subsoort->uitgavetypes[] = [ - 'id' => '0', - 'bedrag' => $restant, - 'budget' => $restantbudget, - 'code' => 'RESTANT', - ]; + $restant = new stdClass(); + $restant->id = '0'; + $restant->bedrag = '0.00'; + $restant->budget = $restantbudget; + $restant->code = 'RESTANT'; + + $subsoort->uitgavetypes[] = $restant; } } diff --git a/application/views/monpas/pages/monfin2/overzicht.php b/application/views/monpas/pages/monfin2/overzicht.php index e5b6692..787bf00 100644 --- a/application/views/monpas/pages/monfin2/overzicht.php +++ b/application/views/monpas/pages/monfin2/overzicht.php @@ -76,22 +76,39 @@ + - - + + + + + + + + + + + + + + + + - - - + + + + + + - + + - - - - - + diff --git a/public/js/monpas/models/monfin2/bestemmingen.js b/public/js/monpas/models/monfin2/bestemmingen.js index faf0d15..bbd0944 100644 --- a/public/js/monpas/models/monfin2/bestemmingen.js +++ b/public/js/monpas/models/monfin2/bestemmingen.js @@ -90,9 +90,7 @@ ls.initBestemmingenModel = function(){ budget = Number(budget).format(2,3,'.',','); this.budgetFormat = ko.observable(budget); } - if(Number(this.bedrag) > Number(this.budget())) this.bedragKleur('red'); - if( Number(this.bedrag()) < 0) this.bedragKleur('red'); - if(Number(this.budget())< 0) this.budgetKleur('red') + @@ -487,32 +485,32 @@ ls.initBestemmingenModel = function(){ 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(invoer >= subbudget) { + if(Number(invoer) >= Number(subbudget)) { dit.budget(invoer); stuurMelding = false; } - totaalgebudget +=invoer + totaalgebudget = Number(totaalgebudget) +Number(invoer); break; - case 'PERSONEEL': subbudget = invoer +Number(s.uitgavetypes()[2].budget()) + Number(s.uitgavetypes()[3].budget()); - if(Number(s.uitgavetypes()[0].budget()) >= subbudget) { + 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(s.uitgavetypes()[0].budget()) + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()) } break; - case 'MATERIEEL': subbudget = Number(s.uitgavetypes()[1].budget()) + invoer+ Number(s.uitgavetypes()[3].budget()); + 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(s.uitgavetypes()[0].budget()); + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()); } break; - case 'SCHOLING': subbudget = Number(s.uitgavetypes()[1].budget()) + Number(s.uitgavetypes()[2].budget())+ invoer ; + 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(s.uitgavetypes()[0].budget()) + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()) } break; @@ -529,18 +527,19 @@ ls.initBestemmingenModel = function(){ if(Number(invoer) > 0) dit.budgetFormat(parseFloat(invoer).format(2, 3, '.', ',')); else dit.budgetFormat(''); - var restant = Number(s.uitgavetypes()[0].budget()) -subbudget; + var restant = Number(s.uitgavetypes()[0].budget()) - subbudget; s.uitgavetypes()[4].budget(restant); if(restant > 0 ) s.uitgavetypes()[4].budgetFormat(parseFloat(restant).format(2, 3, '.', ',')); } } else{ - totaalgebudget += s.uitgavetypes()[0].budget(); + totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget()); } } + console.log(totaalgebudget) }) @@ -553,29 +552,33 @@ ls.initBestemmingenModel = function(){ } //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(restantOudForm); -// -// } -// } -// }) -// }) -// -// // var string = "Het budget overschrijdt het totaalbudget." -// // if(Number(totaalbudget) ===0) string = 'Er is nog geen budget.' -// // apprise(string); -// // return; -// -// } + console.log(totaalgebudget, 'ge') + console.log(totaalbudget, 'budget') + console.log(Number(totaalgebudget) > Number(totaalbudget), 'bewering') + + 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){ diff --git a/public/js/monpas/models/monfin2/monfinoverzicht2.js b/public/js/monpas/models/monfin2/monfinoverzicht2.js index 7fb64e4..bb38235 100644 --- a/public/js/monpas/models/monfin2/monfinoverzicht2.js +++ b/public/js/monpas/models/monfin2/monfinoverzicht2.js @@ -106,15 +106,20 @@ ls.initMonfinOverzicht2Model = function(){ fGetBedragen: function(){ var self = ls.MonfinOverzicht2Model; if (!self.selectedOrg() || !self.selectedKalenderjaar()) return; + console.log( self.selectedOrg().soort, 'orgsoort') + + if (self.selectedOrg().soort == 4) { self.zelfjanee('1');}; + console.log(self.zelfjanee(), 'janee') - 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); From b9acce3072ec8f7701e4e2cdaef33ce2f090d455 Mon Sep 17 00:00:00 2001 From: Monique Hansma Date: Thu, 22 Jun 2023 16:25:31 +0200 Subject: [PATCH 4/4] totaalbudget verdelen --- .../controllers/monfin2/Bestemmingen.php | 12 +- .../controllers/monfin2/Monfin2overzicht.php | 174 +++-- application/core/MY_Controller.php | 3 +- .../models/monfin2/Finbestemmingen_model.php | 18 +- .../views/monpas/modals/findetails_modal.php | 102 ++- .../views/monpas/pages/monfin2/overzicht.php | 692 +++++++++++++----- public/js/monpas/models/ijkpuntenmodel.js | 8 - .../js/monpas/models/monfin2/bestemmingen.js | 21 +- .../monpas/models/monfin2/monfinoverzicht2.js | 18 +- 9 files changed, 730 insertions(+), 318 deletions(-) diff --git a/application/controllers/monfin2/Bestemmingen.php b/application/controllers/monfin2/Bestemmingen.php index b59675b..3b18084 100644 --- a/application/controllers/monfin2/Bestemmingen.php +++ b/application/controllers/monfin2/Bestemmingen.php @@ -22,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;} @@ -87,7 +87,7 @@ 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){ + if ($targetjaar >= $bestemmingjaar){ $this->Finbestemmingen_model->update_record(['bedrag'=>$this->clean_input('bedrag')], $bestemmingID); } $record = $this->Finbestemmingen_model->get_record_by_id($bestemmingID); @@ -97,9 +97,11 @@ class Bestemmingen extends MY_Controller{ function updatebudget(){ // TODO check autorisatie $bestemmingID = $this->clean_input("id"); - - $this->Finbestemmingen_model->update_record(['budget'=>$this->clean_input('budget')], $bestemmingID); - + $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); + } } diff --git a/application/controllers/monfin2/Monfin2overzicht.php b/application/controllers/monfin2/Monfin2overzicht.php index 3c20875..5494df4 100644 --- a/application/controllers/monfin2/Monfin2overzicht.php +++ b/application/controllers/monfin2/Monfin2overzicht.php @@ -22,11 +22,6 @@ class Monfin2overzicht extends MY_Controller{ $kalenderjaarnr = $this->clean_input("jaarnr"); $uitgavetypes = $this->Finuitgavetypes_model->get_uitgavetypes(); $budgetten = $this->Toewijzingen_model->gettoewijzingperjaar($orgid, $kalenderjaarnr); - $basis = array(); - $extra = array(); - - $schooltot = 0; - $opmerking = ''; if ($budgetten) { $budgetten->totaal = ROUND(($budgetten->basis + $budgetten->extra) / 100); @@ -42,33 +37,26 @@ class Monfin2overzicht extends MY_Controller{ $basis = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr,"BASIS"); $extra = $this->Finbestemmingen_model->get_bestemmingen($orgid, $kalenderjaarnr,"EXTRA"); -// echo json_encode([ -// 'basis' => $basis, -// 'extra' =>$extra -// ]); -// -// return; - $sombasisperuitgavetype = $this->get_som_per_uitgavetype($basis, $uitgavetypes); $somextraperuitgavetype = $this->get_som_per_uitgavetype($extra, $uitgavetypes); - $totsomperuitgavetype = $this->sommeer_per_uitgavetype($sombasisperuitgavetype,$somextraperuitgavetype, $uitgavetypes); + $totsomperuitgavetype = $this->sommeer_per_uitgavetype($sombasisperuitgavetype,$somextraperuitgavetype, $uitgavetypes); $totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG'); $totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET'); - $sommen = $this->get_som_regel($basis, $budgetten->basis); + $sommen = $this->get_som_per_regel($basis, $budgetten->basis, $sombasisperuitgavetype[0]); $basis = $sommen['soorten']; $sombudgetpct = $sommen['sombudgetpct']; $sombedragpct = $sommen['sombedragpct']; - $sommenex = $this->get_som_regel($extra, $budgetten->extra); + $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); + $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,',', '.'); @@ -183,37 +171,34 @@ class Monfin2overzicht extends MY_Controller{ $totsomperuitgavetype = $this->sommeer_per_uitgavetype($sombasisperuitgavetype,$somextraperuitgavetype, $uitgavetypes); $totbesteed = $this->sommeeralles($totsomperuitgavetype, 'BEDRAG'); $totgebudgeteerd = $this->sommeeralles($totsomperuitgavetype, 'BUDGET'); - $subbedragbasis = $sombasisperuitgavetype[3]->som; - $subbudgetbasis = $sombasisperuitgavetype[3]->budgetsom; - $sommen = $this->get_som_regel($basis, $budgetten->basis); + $sommen = $this->get_som_per_regel($basis, $budgetten->basis, $sombasisperuitgavetype[0]); + $basis = $sommen['soorten']; - $somgebudgetpct = $sommen['somgebudgetpct']; +// $somgebudgetpct = $sommen['somgebudgetpct']; $sombudgetpct = $sommen['sombudgetpct']; $sombedragpct = $sommen['sombedragpct']; - $sombedragbudgetpct = $sommen['sombedragbudgetpct']; - $subbedragextra = $somextraperuitgavetype[3]->som; - $subbudgetextra = $somextraperuitgavetype[3]->budgetsom; +// $sombedragbudgetpct = $sommen['sombedragbudgetpct']; - $sommenex = $this->get_som_regel($extra, $budgetten->extra ); + $sommenex = $this->get_som_per_regel($extra, $budgetten->extra, $somextraperuitgavetype[0] ); $extra = $sommenex['soorten']; - $somgebudgetpctex = $sommenex['somgebudgetpct']; +// $somgebudgetpctex = $sommenex['somgebudgetpct']; $sombudgetpctex = $sommenex['sombudgetpct']; $sombedragpctex = $sommenex['sombedragpct']; - $sombedragbudgetpctex = $sommen['sombedragbudgetpct']; +// $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); $budgetten->basisbudgetpct = number_format($sombudgetpct, 2,',', '.'); - $budgetten->basisgebudgetpct = number_format($somgebudgetpct, 2,',', '.'); +// $budgetten->basisgebudgetpct = number_format($somgebudgetpct, 2,',', '.'); $budgetten->basisbedragpct = number_format($sombedragpct, 2,',', '.'); - $budgetten->basisbedragbudgetpct = number_format($sombedragbudgetpct, 2,',', '.'); +// $budgetten->basisbedragbudgetpct = number_format($sombedragbudgetpct, 2,',', '.'); $budgetten->extrabudgetpct = number_format($sombudgetpctex, 2,',', '.'); - $budgetten->extragebudgetpct = number_format($somgebudgetpctex, 2,',', '.'); +// $budgetten->extragebudgetpct = number_format($somgebudgetpctex, 2,',', '.'); $budgetten->extrabedragpct = number_format($sombedragpctex, 2,',', '.'); - $budgetten->extrabedragbudgetpct = number_format($sombedragbudgetpctex, 2,',', '.'); +// $budgetten->extrabedragbudgetpct = number_format($sombedragbudgetpctex, 2,',', '.'); $bedrag = $budgetten->totaal > 0 ? ($totbesteed/$budgetten->totaal) *100: 0; $budgetten->totbedragbudgetkaal = $bedrag; @@ -287,55 +272,64 @@ class Monfin2overzicht extends MY_Controller{ return $totsom; } } - function get_som_regel($soorten, $budget ){ - $somgebudgetpct = 0; + function get_som_per_regel($soorten, $budget, $uitgaven ){ $sombudgetpct = 0; $sombedragpct = 0; - $sombedragbudgetpct = 0; foreach($soorten ? : [] as $soort){ foreach ($soort->subsoorten ? : [] as $subsoort){ - $som = 0; - $budgetsom = 0; - foreach($subsoort->uitgavetypes ? : [] as $uitgavetype){ - if ($uitgavetype->bedrag){ - $som += isset($uitgavetype->bedrag) && floatval($uitgavetype->bedrag) > 0 ? floatval($uitgavetype->bedrag): 0; - $uitgavetype->bedrag = number_format($uitgavetype->bedrag,0,',','.'); - } - if ($uitgavetype->budget){ - $budgetsom += is_numeric($uitgavetype->budget) ? $uitgavetype->budget: 0; - $uitgavetype->budget =is_numeric($uitgavetype->budget) ? number_format($uitgavetype->budget,0,',','.'): '0,00'; - } - } - $subsoort->uitgavetypes[3]= new stdClass; - $bedragpct = 0; - $budgetpct = 0; + $budgetpct = 0; + $budgetpctformat = 0; + $bedragpct = 0; + $bedragpctformat = 0; - $subsoort->uitgavetypes[3]->bedrag =number_format($som,0, ',' , '.'); - $subsoort->uitgavetypes[3]->budget =number_format($budgetsom,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)) { - - if($subsoort->uitgavetypes[3]->budget> 0 && $budget > 0) { - $budgetpct = ($budgetsom / $budget) * 100; - $subsoort->uitgavetypes[3]->budgetpct = number_format($budgetpct, 1, ',', '.'); - $bedragpct = ($som/$budget) * 100; - $subsoort->uitgavetypes[3]->bedragpct= number_format($bedragpct,1, ',' , '.'); + $bedragpct = ($totaal / $uitgaven->som) * 100; + $bedragpctformat = number_format($bedragpct, 1, ',', '.'); } - $subsoort->uitgavetypes[3]->verschil = number_format(($budgetsom - $som), 0,',', '.'); - $subsoort->uitgavetypes[3]->code ='REGELSOM'; + + $totbudget = empty($subsoort->uitgavetypes[0]->budget) ? 0 : floatval($subsoort->uitgavetypes[0]->budget); + $persbudget = empty($subsoort->uitgavetypes[1]->budget) ? 0 : floatval($subsoort->uitgavetypes[1]->budget); + $matbudget = empty($subsoort->uitgavetypes[2]->budget) ? 0 : floatval($subsoort->uitgavetypes[2]->budget); + $schoolbudget = empty($subsoort->uitgavetypes[3]->budget) ? 0 : floatval($subsoort->uitgavetypes[3]->budget); + + $subsoort->uitgavetypes[0]->budgetform = $totbudget == 0 ? '': number_format($totbudget, 0, ',', '.'); + $subsoort->uitgavetypes[1]->budgetform = $persbudget == 0 ? '': number_format($persbudget, 0, ',', '.'); + $subsoort->uitgavetypes[2]->budgetform = $matbudget == 0 ? '': number_format($matbudget, 0, ',', '.'); + $subsoort->uitgavetypes[3]->budgetform = $schoolbudget == 0 ? '': number_format($schoolbudget, 0, ',', '.'); + if(! empty($subsoort->uitgavetypes[0]->budget) && ! empty($budget)) { + $budgetpct = ($totbudget/ $budget) * 100; + $budgetpctformat = number_format($budgetpct, 1, ',', '.'); + } + + $verschil = $totbudget - $totaal; + $subsoort->uitgavetypes[0]->verschilfloat = $verschil; + $subsoort->uitgavetypes[0]->verschil = $verschil == 0 ? '' : number_format($verschil, 0,',', '.'); + $subsoort->uitgavetypes[0]->budgetpct = $budgetpct == 0 ? '' : $budgetpctformat; + $subsoort->uitgavetypes[0]->bedragpct = $bedragpct == 0 ? '' : $bedragpctformat; + $restant = $totbudget-$persbudget - $matbudget- $schoolbudget; + $subsoort->uitgavetypes[0]->budgetrestant = $restant == 0 ? '' : $restant; + $sombudgetpct =$sombudgetpct + $budgetpct; $sombedragpct = $sombedragpct +$bedragpct; } - } return [ 'soorten' =>$soorten, 'sombudgetpct' => $sombudgetpct, - 'somgebudgetpct' => $somgebudgetpct, 'sombedragpct' => $sombedragpct, - 'sombedragbudgetpct' => $sombedragbudgetpct, ]; } @@ -368,11 +362,11 @@ class Monfin2overzicht extends MY_Controller{ $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; +// $somtot[$index] = new stdClass; +// $somtot[$index]->code = "REGELSOM"; +// $somtot[$index]->naam = "Som"; +// $somtot[$index]->som = $regelsom; +// $somtot[$index]->budgetsom = $regelsom2; } return $somtot; @@ -381,42 +375,44 @@ class Monfin2overzicht extends MY_Controller{ 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($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 } - - foreach($basis ? $basis : [] as $soort){ - foreach ($soort->subsoorten ? $soort->subsoorten : [] as $subsoort){ - foreach($subsoort->uitgavetypes ? $subsoort->uitgavetypes :[] as $kostenpost) { - $sombasis[$uitgavetype->code]->som += is_numeric($kostenpost->bedrag)? floatval($kostenpost->bedrag): 0; - $sombasis[$uitgavetype->code]->budgetsom += is_numeric($kostenpost->budget) ? floatval($kostenpost->budget): 0; - } //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); - $regelsom += $somasarray[$index ]->som; - $regelsom2 += $somasarray[$index ]->budgetsom; + if($index != 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; + + $somasarray[0]->som = $regelsom; + $somasarray[0]->budgetrestant = $somasarray[0]->budgetsom - $regelsom2; return $somasarray; } diff --git a/application/core/MY_Controller.php b/application/core/MY_Controller.php index 1a0fc30..1fd7213 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -83,7 +83,8 @@ class MY_Controller extends CI_Controller{ // 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.04';// monfin met budgetten update + public $version = '1.20.05';// monfin met budgetten update 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 027b72e..175b19b 100644 --- a/application/models/monfin2/Finbestemmingen_model.php +++ b/application/models/monfin2/Finbestemmingen_model.php @@ -65,10 +65,15 @@ class Finbestemmingen_model extends MY_Model{ // 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); + $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)) - @@ -149,15 +154,6 @@ class Finbestemmingen_model extends MY_Model{ // } 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){ @@ -207,10 +203,10 @@ class Finbestemmingen_model extends MY_Model{ $row = $this->get_query_row(); } if ($row) { + $row->bedrag = str_replace(',' , '' , $row->bedrag); $row->budget = str_replace(',' , '' , $row->budget); - } return $row; } diff --git a/application/views/monpas/modals/findetails_modal.php b/application/views/monpas/modals/findetails_modal.php index 3914ac4..b189e15 100644 --- a/application/views/monpas/modals/findetails_modal.php +++ b/application/views/monpas/modals/findetails_modal.php @@ -9,28 +9,100 @@


-
+ + + + Restant + + Percentage + + +
+ + + + +
- - - - - Som - - Percentage - - -
budget + + + + + + + -
- - -
-
-
- +
uitgaven + + + + + + + -
- - -
-
-
-
Basisondersteuning som uitgaven - - - som budget + + + + som uitgaven + data-bind="click: $parent.fToelichting.bind($data, 'SOM')"> som budget + + + verschil @@ -119,17 +136,23 @@ Totaal basis 0,00 0,00 0, click: $root.fOpenDetails.bind($data, 'DETAIL')">
- - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + +
+ + +
restant + + +
diff --git a/application/views/monpas/pages/monfin2/overzicht.php b/application/views/monpas/pages/monfin2/overzicht.php index 787bf00..1a67e14 100644 --- a/application/views/monpas/pages/monfin2/overzicht.php +++ b/application/views/monpas/pages/monfin2/overzicht.php @@ -1,114 +1,472 @@
-
- - - - - - - +
+ + + + + + - - - - - + + + + - - - - + + + + - - 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 + +
+

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Basisondersteuning + + + + 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"); ?> + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Selecteer eerst een organisatie

+

Kalenderjaar + + +

+ +

+

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

+
+
+ + - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - + + + - - - + + + + + + @@ -169,50 +521,50 @@ - + - - - - - + - - - + - + @@ -222,7 +574,7 @@ @@ -270,13 +622,13 @@ - + - + @@ -307,36 +659,36 @@ - - - - - + - - - + @@ -345,14 +697,14 @@ - - - - + + + + - - - + + + @@ -376,25 +728,25 @@ style: {color: parseFloat($root.budgetten().totbedragbudgetkaal) > 100 ? 'red' : 'black'}" > - + -
Basisondersteuning - - - som uitgaven - - som budget - + data-bind="click: $parent.fToelichting.bind($data, 'KOSTEN')"> som uitgaven + + + som budget + + + verschil @@ -129,37 +487,31 @@
- Totaal basis
+ Totaal basis 0,000,00
+ + + + 0, click: $root.fOpenDetails.bind($data, 'DETAIL')"> +
+ data-bind="click: $parent.fToelichting.bind($data, 'KOSTEN')"> Totaal extra 0,00 0,00
0, click: $root.fOpenDetails.bind($data, 'EXTRA')"> +
Totaal
Totaal + data-bind="text: $root.budgetten() ? $root.budgetten().totbudgetpct: '0,00' ">
-
-

Opmerkingen

-

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

Opmerkingen

+

+
+
+
+ load->view("monpas/pages/monfin2/overorgs.php"); ?> +
+
+ load->view("monpas/pages/monfin2/pmsorgs.php"); ?> +
+
+ load->view("monpas/modals/findetails_modal"); ?> 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 bbd0944..ab8b1af 100644 --- a/public/js/monpas/models/monfin2/bestemmingen.js +++ b/public/js/monpas/models/monfin2/bestemmingen.js @@ -106,6 +106,7 @@ ls.initBestemmingenModel = function(){ kalenderjaren : ko.observableArray([]), selectedKalenderjaar : ko.observable(), jaartoewijzing : ko.observable(), + erIsBudget : ko.observable(false), targetjaar : ko.observable(2017), //het jaar waarin met moet werken uitgavetypes : ko.observableArray(), basissoorten : ko.observableArray(), @@ -171,9 +172,9 @@ ls.initBestemmingenModel = function(){ $.post("index.php/monfin2/bestemmingen/getBestemmingen ", sd, function(data) { if (data.jaartoewijzing) { self.jaartoewijzing(data.jaartoewijzing); - } else { - self.jaartoewijzing(false); + } + self.jaarclosed(data.jaarclosed); self.fUpdateSubbedragen(function (){self.fGetUpdatedBestemmingen()}, data); },'json') @@ -185,6 +186,7 @@ ls.initBestemmingenModel = function(){ $.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, '') @@ -215,7 +217,7 @@ ls.initBestemmingenModel = function(){ var sd = { 'id': id, - 'bedrag': subtotaal, + 'bedrag': subtotaal } $.post("index.php/monfin2/bestemmingen/updatebedrag", sd, function(data){ @@ -439,13 +441,15 @@ ls.initBestemmingenModel = function(){ invoer = Math.round(invoer * 100); var sd = { 'id' : dit.finbestemmingID, - 'bedrag': invoer, + 'bedrag': invoer + } $.post("index.php/monfin2/bestemmingen/updatebedrag", sd); var sd2 = { 'id' : subtotID, - 'bedrag': subtotaal, + 'bedrag': subtotaal + } $.post("index.php/monfin2/bestemmingen/updatebedrag", sd2); }, @@ -539,7 +543,6 @@ ls.initBestemmingenModel = function(){ } - console.log(totaalgebudget) }) @@ -552,9 +555,6 @@ ls.initBestemmingenModel = function(){ } //waarden terugzetten als totaal budget wordt overschreden - console.log(totaalgebudget, 'ge') - console.log(totaalbudget, 'budget') - console.log(Number(totaalgebudget) > Number(totaalbudget), 'bewering') if(Number(totaalgebudget) > Number(totaalbudget)){ dit.budget(budgetoud); @@ -620,7 +620,8 @@ ls.initBestemmingenModel = function(){ invoer = Math.round(invoer * 100); var sd = { 'id' : dit.finbestemmingID, - 'budget': invoer, + 'budget': invoer + } $.post("index.php/monfin2/bestemmingen/updatebudget", sd); }, diff --git a/public/js/monpas/models/monfin2/monfinoverzicht2.js b/public/js/monpas/models/monfin2/monfinoverzicht2.js index bb38235..ed06400 100644 --- a/public/js/monpas/models/monfin2/monfinoverzicht2.js +++ b/public/js/monpas/models/monfin2/monfinoverzicht2.js @@ -106,11 +106,9 @@ ls.initMonfinOverzicht2Model = function(){ fGetBedragen: function(){ var self = ls.MonfinOverzicht2Model; if (!self.selectedOrg() || !self.selectedKalenderjaar()) return; - console.log( self.selectedOrg().soort, 'orgsoort') if (self.selectedOrg().soort == 4) { self.zelfjanee('1');}; - console.log(self.zelfjanee(), 'janee') if (self.zelfjanee()==1 || self.selectedOrg().soort==4){ var sd={orgid : self.selectedOrg().id, @@ -209,7 +207,7 @@ ls.initMonfinOverzicht2Model = function(){ break; case '%BUDGET' : message = 'Het gebudgetteerde bedrag als percentage van het totale budget.'; break; - case '%UITGAVEN' : message = 'Uitgaven als percentage van het totale budget.'; + case '%UITGAVEN' : message = 'Uitgaven als percentage van de totale uitgaven.'; break; } @@ -229,7 +227,9 @@ ls.initMonfinOverzicht2Model = function(){ self.selectedSubsoort(''); switch(niveau){ case 'BASIS' : self.selectedSubsoort( - {'naam' : 'Basisondersteuning gebudgetteerd', + + { + 'naam' : 'Basisondersteuning gebudgetteerd', 'uitgavetypes' : self.sombasisperuitgavetype() }); break; @@ -237,7 +237,7 @@ ls.initMonfinOverzicht2Model = function(){ break; case 'EXTRA': self.selectedSubsoort( {'naam' : 'Extra ondersteuning gebudgetteerd', - 'uitgavetypes' : self.totsomperuitgavetype() + 'uitgavetypes' : self.somextraperuitgavetype() }); break; case 'TOTAAL': self.selectedSubsoort( @@ -251,10 +251,10 @@ ls.initMonfinOverzicht2Model = function(){ }, 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 ten opzichte van het totaalbudget.'); - }, + // 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