Files
monpas/application/libraries/monpas/compactsop/Compacteversies.php
T
MoniqueandClaude Opus 5.5 0ad26b0583 zes logische fouten (toewijzing i.p.v. vergelijking, typfouten)
- Overzichtscores::geteditrecht: '$recht == true' en '$this->uderrole'
  (typfout) maakten de rechtencontrole voor kamer en bestuur onjuist
- Users::getorgs: 'soort=1' overschreef de soort; blok draait bewust
  voor alle soorten (gebruikersmodel.js gebruikt die boom)
- Sopoud: '$module = 4' -> '=='
- Compacteversies: 'schooltype = 'R'' -> SBO-modules krijgen label SBO
- Diversiteitmonitor: typfout $swvID -> $swvid
- Monfinoverzicht::getbedragen: $budget -> $budgetten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 13:43:27 +02:00

337 lines
13 KiB
PHP

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Compacteversies
{
private $CI;
private $schooljaar;
private $kalenderjaar1;
private $kalenderjaar2;
private $jaarnr1;
private $jaarnr2;
private $swvID;
private $orglist;
private $aantallln;
private $onderdelen;
private $onderdeel;
private $budgetten;
private $indexFin = -1;
private $indexDiv = -1;
private $versie;
private $gevuldeversies;
private $gevuldschooljaar;
private $vormtekst;
private $filledversie;
private $schooljaarnr;
private $orgid;
private $orgsoortnr;
public function getOnderdelen(){
return $this->onderdelen;
}
public function __construct( $schooljaarnr, $orgid, $orgsoort)
{
$this->CI =& get_instance();
$this->schooljaarnr = $schooljaarnr;
$this->orgid = $orgid;
$this->orgsoortnr = $orgsoort;
$this->handle();
}
private function handle()
{
$this->setSchooljaar();
$this->setKalenderjaren();
$this->setOrglist();
$this->setSWVID();
$this->setCompactSopOnderdelen();
$this->loopCompactSop();
$this->removeOnderdelen();
}
private function setSchooljaar(){
$jaarid = $this->CI->Schooljaren_model->get_fieldvalue(['schooljaarnr'=>$this->schooljaarnr],'id');
$this->schooljaar = $this->CI->Schooljaren_model->get_record_by_id($jaarid);
}
private function setKalenderjaren(){
$this->kalenderjaar1 = substr($this->schooljaar->naam, 0, 4 );
$this->kalenderjaar2 = substr($this->schooljaar->naam, 5, 4);
$this->jaarnr1 = $this->CI->Kalenderjaren_model->get_fieldvalue(['naam' =>$this->kalenderjaar1], 'jaarnr');
$this->jaarnr2 = $this->CI->Kalenderjaren_model->get_fieldvalue(['naam' =>$this->kalenderjaar2], 'jaarnr');
if(!$this->jaarnr2) $this->jaarnr2 = intval($this->jaarnr1) + 1;
}
private function setOrglist(){
$lijst = [];
$orglist = $this->CI->Organisaties_model->getlistrecursief($this->orgid, $lijst);
$orglist = implode('","', $orglist);
$this->orglist = '"'. $orglist .'"';
}
private function setSWVID(){
switch ($this->orgsoortnr) {
case "1":
$this->swvID = $this->orgid;
break;
case "2":
$kamer = $this->CI->Organisaties_model->get_record_by_id($this->orgid);
$this->swvID = $kamer->valtonder_id;
break;
case "3" :
$bg = $this->CI->Organisaties_model->get_record_by_id($this->orgid);
$kamer = $this->CI->Organisaties_model->get_record_by_id($bg->valtonder_id);
$this->swvID = $kamer->valtonder_id;
break;
case "4":
$school = $this->CI->Organisaties_model->get_record_by_id($this->orgid);
$bg = $this->CI->Organisaties_model->get_record_by_id($school->valtonder_id);
$kamer = $this->CI->Organisaties_model->get_record_by_id($bg->valtonder_id);
$this->swvID = $kamer->valtonder_id;
break;
}
}
private function setCompactSopOnderdelen(){
$this->onderdelen = $this->CI->Compactsoponderdelen_model->getOnderdelen( $this->orgid);
}
private function loopCompactSop(){
if ($this->onderdelen){
foreach($this->onderdelen as $index=> $this->onderdeel) {
$this->onderdeel->gegevens = 'F';
$this->setExtraOmvang();
$this->setDivSchooltypes();
$this->setDiversiteit($index);
$this->setBudgetten($index);
$this->setOrgVersies();
$this->setGeopendeVersies();
$this->loopGeopendeVersies();
$this->setSelectedLijstOnderdelen();
}
}
}
private function setDivSchooltypes(){
switch($this->onderdeel->modulenr){
case 1: $this->onderdeel->schooltype = 'Alle';
break;
case 2:
case 6: $this->onderdeel->schooltype = 'R';
break;
case 30:
case 40:
case 230: $this->onderdeel->schooltype = 'Alle';
break;
case 270:
case 300: $this->onderdeel->schooltype = 'SBO';
break;
case 630: $this->onderdeel->schooltype = 'Alle';
break;
case 660: $this->onderdeel->schooltype = 'R';
break;
case 680: $this->onderdeel->schooltype = 'Alle';
break;
default: $this->onderdeel->schooltype = 'R';
}
}
private function setDiversiteit($index){
if($this->onderdeel->type != "DIV") return;
if($this->schooljaarnr < 9 && $this->onderdeel->modulenr == 660 ) {
$this->indexDiv = $index;
return;
}
$module = $this->onderdeel->modulenr;
$this->aantallln = $this->CI->Groepen_model->getversiesmetleerlingengoedeversie(
$this->orgid, $this->schooljaarnr, $this->onderdeel->schooltype, $module);
if(isset($this->aantallln)){
if ($this->aantallln > 0) {
$this->onderdeel->groepen = $this->CI->Groepen_model->get_AantalGroepen($this->schooljaarnr, $this->orgid, $module);
$this->onderdeel->erIsDiversiteit = 'T';
$this->onderdeel->gegevens = 'T';
// was 'schooltype = 'R'' (toewijzing): alles werd PO en schooltype werd overschreven
$this->onderdeel->schoolsoort = $this->onderdeel->schooltype == 'SBO' ? 'SBO' : 'PO';
$this->onderdeel->versie = $this->schooljaar->naam. ', '. $this->onderdeel->schoolsoort;
}
}
}
private function setExtraOmvang(){
if($this->onderdeel->type != "OMVANG") return;
$schooljaren = $this->CI->Aantalleerlingen_model->get_gevuldeschooljaren_Sop($this->schooljaarnr, $this->orglist);
if($schooljaren && count($schooljaren) > 0) {
$this->onderdeel->gegevens = 'T';
$this->onderdeel->gevuldeschooljaren = $schooljaren;
foreach ($this->onderdeel->gevuldeschooljaren as $this->gevuldschooljaar) {
$this->gevuldschooljaar->erZijnTLVs = false;
$this->gevuldschooljaar->erZijnArrangementen = false;
$tlvs = $this->CI->Tlvs_model->getAantalTLVsSop($this->gevuldschooljaar->schooljaarnr, $this->orglist);
if ($tlvs) {
if ($tlvs->aantal > 0) {
$this->gevuldschooljaar->erZijnTLVs = true;
$this->gevuldschooljaar->orgsmettlvs = $tlvs->orgsmettlvs;}
}
$arr = $this->CI->Arrangementen_model->getAantalLeerlingenMetArrangement($this->gevuldschooljaar->schooljaarnr, $this->orglist);
if ($arr) {
if ($arr->aantal > 0){
$this->gevuldschooljaar->erZijnArrangementen = true;
$this->gevuldschooljaar->orgsmetarrs = $arr->orgsmetarrs;
}
}
}
}
}
private function setBudgetten($index){
if($this->onderdeel->type != "FIN") return;
$this->onderdeel->budgetversies = [];
$this->budgetten = $this->CI->Finbestemmingen_model->getTotaalSchoolBestedingen($this->orgid, $this->jaarnr1);
if($this->budgetten > 0){
$this->onderdeel->budgetversies [] = $this->kalenderjaar1;
$this->onderdeel->erZijnBudgetten = 'T';
$this->onderdeel->gegevens = 'T';
}
$this->budgetten = $this->CI->Finbestemmingen_model->getTotaalSchoolBestedingen($this->orgid, $this->jaarnr2);
if(intval($this->budgetten) > 0){
$this->onderdeel->budgetversies [] = $this->kalenderjaar2;
$this->onderdeel->erZijnBudgetten = 'T';
$this->onderdeel->gegevens = 'T';
}
}
private function setOrgVersies(){
if($this->onderdeel->type != "LIJST" && $this->onderdeel->type != "LIJSTBREED") return;
$this->onderdeel->erZijnOrgVersies = 'F';
$this->onderdeel->gegevens = 'F';
$orgversies = $this->CI->Orgversies_model->getOrgversiesBijSOP($this->swvID, $this->onderdeel->modulenr);
if($orgversies){
$this->onderdeel->erZijnOrgVersies = 'T';
}
}
private function setGeopendeVersies(){
if($this->onderdeel->type != "LIJST" && $this->onderdeel->type != "LIJSTBREED") return;
$this->onderdeel->geopendeversies = $this->CI->Filledversions_model->getfilledversions_bij_orglist(
$this->orglist, $this->onderdeel->modulenr);
}
private function loopGeopendeVersies(){
if(($this->onderdeel->type != "LIJST" && $this->onderdeel->type != "LIJSTBREED")||!$this->onderdeel->geopendeversies ) return;
$this->onderdeel->erIsEenVersie= 'F';
$this->onderdeel->gegevens= 'F';
$this->onderdeel->filledversies = [];
foreach($this->onderdeel->geopendeversies as $index => $this->versie) {
$this->setFilledVersies();
}
}
private function setFilledVersies(){
$this->gevuldeversies = $this->CI->Scores_model->fTelGevuldeVersiesBijOrglist(
$this->versie->id, $this->orglist);
if($this->gevuldeversies) {
if($this->gevuldeversies->aantalFV > 0 ) {
if ($this->versie->vorm == 1) {
$this->vormtekst = 'schoolversie';
}
if ($this->versie->vorm == 2) {
$this->vormtekst = 'individuele versie';
}
$this->versie->naam = $this->versie->naam . ', periode: ' . $this->versie->periodenummer . ': ' .
$this->versie->geldigvanaf . ' - ' . $this->versie->geldigtm . ', ' . $this->vormtekst;
$this->versie->naamkort = 'Periode: ' . $this->versie->periodenummer . ': ' . $this->versie->geldigvanaf . ' - ' . $this->versie->geldigtm;
if($this->orgsoortnr < 4){
if($this->gevuldeversies->aantalorgs == 1) {
$this->versie->naam = $this->versie->naam . ' (' . $this->gevuldeversies->aantalorgs . ' school';
}
else{
$this->versie->naam = $this->versie->naam . ' (' . $this->gevuldeversies->aantalorgs . ' scholen';
}
$this->versie->naamkort = $this->versie->naamkort . ' ('. $this->gevuldeversies->aantalorgs;
if ($this->versie->vorm == 2) {
if($this->gevuldeversies->aantalFV == 1){
$this->versie->naam = $this->versie->naam . '/ '. $this->gevuldeversies->aantalFV . ' lijst)';
}
else{
$this->versie->naam = $this->versie->naam . '/ '. $this->gevuldeversies->aantalFV . ' lijsten)';
}
$this->versie->naamkort = $this->versie->naamkort .'/ '. $this->gevuldeversies->aantalFV . ')';
}
else{
$this->versie->naam = $this->versie->naam . ')';
$this->versie->naamkort = $this->versie->naamkort . ')';
}
}
else{
if ($this->versie->vorm == 2) {
if($this->gevuldeversies->aantalFV == 1){
$this->versie->naam = $this->versie->naam . ' (' . $this->gevuldeversies->aantalFV . ' lijst)';
}
else {
$this->versie->naam = $this->versie->naam . ' (' . $this->gevuldeversies->aantalFV . ' lijsten)';
}
$this->versie->naamkort = $this->versie->naamkort .' ('. $this->gevuldeversies->aantalFV . ')';
}
else{
$this->versie->naam = $this->versie->naam . ')';
$this->versie->naamkort = $this->versie->naamkort . ')';
}
}
$this->onderdeel->filledversies [] = $this->versie;
}
}
}
private function setSelectedLijstOnderdelen(){
if($this->onderdeel->type != "LIJST"&& $this->onderdeel->type != "LIJSTBREED") return;
if(!isset($this->onderdeel->filledversies) || count($this->onderdeel->filledversies) == 0) return;
$this->onderdeel->erIsEenVersie = "T";
$this->onderdeel->gegevens = "T";
foreach($this->onderdeel->filledversies as $index => $this->filledversie) {
$this->filledversie->selected = 'F';
$valterin = $this->CI->Filledversions_model->checkperiode($this->filledversie->id,$this->schooljaar->start,
$this->schooljaar->eind );
if($valterin){
$this->filledversie->selected = 'T';
}
}
}
private function removeOnderdelen(){
if($this->indexFin == -1 && $this->indexDiv == -1) return;
$onderdelendef = [];
foreach($this->onderdelen as $index => $this->onderdeel){
if($index != $this->indexFin && $index != $this->indexDiv) $onderdelendef [] = $this->onderdeel;
}
$this->onderdelen = $onderdelendef;
}
}