Files
monpas/application/libraries/monpas/compactsop/Compacteonderdelen.php
T
MoniqueandClaude Opus 5.5 fcc26ca952 compact sop: periodecheck, lege lijsten, pdf los van app.monpas.nl
- checkperiode: losse komma uit SQL, vergelijk op orgversie_id i.p.v. FV.id,
  lijst telt mee in het schooljaar waarin geldigtm valt
- Compacteversies: checkperiode per filledversie i.p.v. laatste versie
- Compacteonderdelen: lijstblok zonder gekozen versie overslaan
- Compactepaginas: schoolgegevens doorgeven aan paginacompact
- paginacompact: jQuery van eigen server laden
- sopcompact: bootstrap en OpenSans ingesloten in de pdf-html

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

459 lines
16 KiB
PHP

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Compacteonderdelen
{
private $CI;
private $onderdeel;
private $omvangjaren;
private $omvangjaar;
private $jaar;
private $schooljaar;
private $details;
private $orgGegevens;
private $orgpartial = [];
private $orglist;
private $organisatie;
private $orgsoort;
private $kleuren;
private $legenda;
private $diversiteit;
private $ijkpunten;
private $scorevorm;
private $selectie;
private $selecties = [];
private $vorm;
private $jaarnummer;
private $subsoorten;
private $subsoort;
private $somE;
private $somB;
private $uitgavetypen;
private $type;
private $typesom;
private $data;
private $onderdelenNew;
private $compacteonderdelen;
private $schooljaarnr;
private $onderdelen;
private $orgid;
public function __construct($schooljaarnr, $onderdelen, $omvangjaren, $orgid){
$this->CI = &get_instance();
$this->schooljaarnr = $schooljaarnr;
$this->onderdelen = $onderdelen;
$this->omvangjaren = $omvangjaren;
$this->orgid = $orgid;
$this->handle();
}
public function getCompacteOnderdelen(){
return $this->compacteonderdelen;
}
public function getSchooljaar(){
return $this->schooljaar->naam;
}
public function getSchoolnaam(){
return $this->organisatie->naamkort;
}
private function handle()
{
$this->setSchooljaar();
$this->setOrganisatie();
$this->setOrgSoort();
$this->setOrgdetails();
$this->setOrgGegevens();
$this->setOrgPartial();
$this->setOrglist();
$this->setKleuren();
$this->setLegenda();
$this->loopOnderdelen();
$this->setCompacteOnderdelen();
}
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 setOrganisatie(){
$this->organisatie = $this->CI->Organisaties_model->get_record_by_id($this->orgid);
}
private function setOrgSoort(){
switch($this->organisatie->soort){
case 1: $this->orgsoort = "SWV";
break;
case 2: $this->orgsoort = "Regio";
break;
case 3: $this->orgsoort = "Bestuur";
break;
case 4:
default: $this->orgsoort = "School";
}
}
private function setOrgdetails(){
$this->details = $this->CI->Schooldetails_model->get_details($this->orgid);
}
private function setOrgGegevens(){
$test = $this->CI->rootpath;
$logo = false;
if($this->details && $this->details->logo) {
// $logo = $this->CI->config->item('vendor_url') . '/images/logos/' . $this->details->logo;
$logo = $_ENV['VENDOR_URL']. '/images/logos/' . $this->details->logo;
}
$this->orgGegevens = [
'organisatie' => $this->organisatie,
'naamkort' => $this->organisatie->naamkort,
'details' => $this->details,
'orgsoort' => $this->orgsoort,
'orgsoortnr' => $this->organisatie->soort,
'schooljaar' => $this->schooljaar->naam,
'schooljaarnr' => $this->schooljaarnr,
'datum' => date("d-m-Y"),
'logo' => $logo
];
}
private function setOrgpartial()
{
$this->orgpartial['data'] = $this->orgGegevens;
$this->orgpartial['html'] = 'monpas/compactsop/schoolgegevens';
}
private function setOrglist(){
$lijst = [];
$orglist = $this->CI->Organisaties_model->getlistrecursief($this->orgid, $lijst);
$orglist = implode('","', $orglist);
$this->orglist = '"'. $orglist .'"';
}
private function setKleuren()
{
if (!$this->kleuren || $this->kleuren == " ") {
$this->kleuren = new stdClass();
$this->kleuren->cluster_id = 0;
$this->kleuren->grens1 = '60';
$this->kleuren->grens2 = '80';
$this->kleuren->grens3 = '90';
$this->kleuren->grens4 = '100';
$this->kleuren->kleur1 = '#e08885';
$this->kleuren->kleur2 = '#ffcc80';
$this->kleuren->kleur3 = '#9fdf9f';
$this->kleuren->kleur4 = '#99d6ff';
}
}
private function setLegenda()
{
$this->legenda['data'] = $this->kleuren;
$this->legenda['html'] = "monpas/compactsop/legendacompact";
}
private function loopOnderdelen()
{
foreach ($this->onderdelen ? : [] as $index => $this->onderdeel) {
$this->switchOnderdelen();
$this->setOnderdeel();
$this->setOnderdelen();
}
}
private function switchOnderdelen()
{
if (!$this->onderdeel['type']) return;
switch ($this->onderdeel['type']) {
case "LIJST":
case "LIJSTBREED":
$this->setIJkpunten();
break;
case "DIV":
$this->setDiversiteit();
break;
case "OMVANG":
$this->setSetOmvang();
break;
case "FIN":
$this->setMiddelen();
break;
}
}
private function setDiversiteit()
{
$divcompact = New Diversiteit($this->schooljaarnr, $this->orgid, $this->onderdeel['modulenr']);
$divdata = $divcompact->getDiversiteit();
$divafbeelding = New Diversiteitafbeeldingen($divdata, $this->onderdeel['modulenr'], $this->schooljaarnr);
$this->diversiteit = $divafbeelding->getDiversiteitafbeeldingen();
$data = [
'schooljaar' => $this->schooljaar->naam,
'groepen' => $this->diversiteit['groepen'],
'schooldq' => $this->diversiteit['schooldq'],
'schooldiversiteit' => $this->diversiteit['totdiversiteit'],
];
$this->data = $data;
}
private function setSetOmvang(){
if(! isset($this->omvangjaren) || ! is_array($this->omvangjaren) || count($this->omvangjaren) < 1 || !$this->omvangjaren) return;
$jaren = implode("','", $this->omvangjaren);
$jaren = "'" . $jaren . "'";
if($this->organisatie->soort == 4) {
$arrs = $this->CI->Arrangementen_model->getArrangementnamenSop($jaren, $this->orgid);
if ($arrs) {
$kleuren = ['#ffcc80', '#ffb84d', '#ffa31a', '#e68a00', '#b36b00', '#804d00', '#4d2e00', '#ffe0b3', '#fff5e6'];
$index = 0;
foreach ($arrs as $arr) {
if ($index >= count($kleuren)) $index = 0;
$arr->kleur = $kleuren[$index];
$index++;
}
}
}
foreach($this->omvangjaren as $index => $this->omvangjaar) {
$this->jaar = new stdClass();
$this->jaar->aantallen =
$this->CI->Aantalleerlingen_model->get_omvang($this->omvangjaar, $this->orglist);
$totaal = 'Totaal aantal leerlingen: ' . $this->jaar->aantallen->aantal;
$scholen = ' scholen';
if($this->jaar->aantallen->aantalorgs == 1) $scholen = ' school';
if($this->organisatie->soort < 4) $totaal = $totaal. ' van '.$this->jaar->aantallen->aantalorgs. $scholen;
$this->jaar->aantallen->totaal = $totaal;
$this->jaar->tlvs =
$this->CI->Tlvs_model->getAantalLeerlingenMetTLV($this->omvangjaar, $this->orglist);
if($this->organisatie->soort < 4){
$this->jaar->arrangementen =
$this->CI->Arrangementen_model->getAantalLeerlingenMetArrangement($this->omvangjaar, $this->orglist );
}
if($this->organisatie->soort == 4) {
$this->jaar->arrangementen =
$this->CI->Arrangementen_model->getArrangementenMetAantallenSop( $this->organisatie->id, $this->omvangjaar );
if($this->jaar->arrangementen) {
foreach ($this->jaar->arrangementen as $arrangement) {
foreach ($arrs as $arr) {
if ($arrangement->id == $arr->id) {
$arrangement->kleur = $arr->kleur;
}
$arrangement->naamkort = $arrangement->naam;
if (strlen($arrangement->naam) > 10) {
$arrangement->naamkort = substr($arrangement->naam, 0, 12);
$arrangement->naamkort = $arrangement->naamkort . '..';
}
}
}
}
}
$this->data [] = $this->jaar;
}
}
private function setMiddelen()
{
$this->setUitgavetypen();
$this->loopUitgavetypen();
$this->setTypeSom();
// $this->typesom = $this->setBedragNL($this->typesom);
$this->setSubsoorten();
$this->loopSubsoorten();
$this->setSomSubsoort();
// $this->somB = $this->setBedragNL($this->somB);
// $this->somE = $this->setBedragNL($this->somE);
$this->setMiddelenData();
}
private function setUitgavetypen()
{
$this->jaarnummer = $this->CI->Kalenderjaren_model->get_fieldvalue(['naam' => $this->onderdeel['orgversieid']], 'jaarnr');
$this->uitgavetypen = $this->CI->Finbestemmingen_model->getUitgavenPerType($this->orgid, $this->jaarnummer);
}
private function loopUitgavetypen()
{
if (!$this->uitgavetypen) return;
foreach ($this->uitgavetypen as $index => $this->type) {
$this->afrondenType();
// $this->type->bedragNL = $this->setBedragNL($this->type->format);
$this->lowercase();
}
}
private function afrondenType(){
$euros= number_format(($this->type->bedrag /100) , 0,',','.');
$this->type->euros = $euros;
$this->type->bedragNL =$euros;
// $euros = round(($this->type->bedrag / 100), 2);
// $this->type->euros = $euros;
}
private function setBedragNL($bedrag){
$metpunt = str_replace(',', '.', $bedrag);
$lengte = strlen($metpunt);
$deel1 = substr($metpunt, 0, ($lengte - 3));
$deel2 = substr($metpunt, ($lengte - 2), 2);
return $deel1 . ',' . $deel2;
}
private function lowercase(){
$klein = strtolower($this->type->uitgavetype);
$eerste = ucfirst($klein);
$this->type->uitgavetype = $eerste;
}
private function setTypeSom(){
$this->typesom = $this->CI->Finbestemmingen_model->getTotaalSchoolBestedingen($this->orgid, $this->jaarnummer);
$this->typesom = number_format(($this->typesom / 100), 0,',','.');
}
private function setSubsoorten(){
$this->subsoorten = $this->CI->Finbestemmingen_model->getUitgavenPerSubsoortSchool($this->orgid, $this->jaarnummer);
}
private function loopSubsoorten(){
if (!$this->subsoorten) return;
foreach ($this->subsoorten as $index => $this->subsoort) {
$this->afrondenSoort();
//$this->subsoort->bedragNL = $this->setBedragNL($this->subsoort->format);
}
}
private function afrondenSoort(){
$euros= number_format(($this->subsoort->bedrag /100) , 0,',','.');
$this->subsoort->euros = $euros;
$this->subsoort->bedragNL =$euros;
}
private function setSomSubsoort(){
$this->somB = $this->CI->Finbestemmingen_model->setSomSubsoort(
$this->CI->globorgid, $this->jaarnummer, 'BASIS');
$this->somB = str_replace(',','', $this->somB);
$this->somB = is_numeric($this->somB) ? number_format(($this->somB ), 0,',','.') : null; // PHP 8: number_format('') is a TypeError
$this->somE = $this->CI->Finbestemmingen_model->setSomSubsoort(
$this->CI->globorgid, $this->jaarnummer, 'EXTRA');
$this->somE = str_replace(',','', $this->somE);
$this->somE = is_numeric($this->somE) ? number_format(($this->somE ), 0,',','.') : null; // PHP 8: number_format('') is a TypeError
}
private function setMiddelenData()
{
$data = ['subsoorten' => $this->subsoorten,
'typesom' => $this->typesom,
'somB' => $this->somB,
'somE' => $this->somE,
'uitgaventypen' => $this->uitgavetypen,
'versie' => $this->onderdeel['orgversieid']
];
$this->data = $data;
}
private function setIJkpunten()
{
// geen lijst gekozen voor dit blok: overslaan (anders query met lege orgversie_id)
if(!$this->onderdeel['orgversieid']) {
$this->data = false;
return;
}
$this->setScorevorm();
$this->setSelecties();
$this->setLijsten();
$this->setIJkpuntenGegevens();
}
private function setScorevorm(){
if(!$this->onderdeel['orgversieid']) return;
$this->scorevorm =
$this->CI->Orgversies_model->get_fieldvalue( ['id' => $this->onderdeel['orgversieid'] ],'vorm');
}
private function setSelecties(){
$this->selectie =[];
$this->selecties = [];
$this->selectie = [
'orgversieid' => $this->onderdeel['orgversieid'],
'vorm' => $this->scorevorm
];
$this->selecties[] = $this->selectie;
if($this->onderdeel['vergelijkid'] ){
// foreach($this->onderdeel['vergelijkids'] as $index => $this->vergelijkingid){
$this->vorm = $this->CI->Orgversies_model->get_fieldvalue(['id' => $this->onderdeel['vergelijkid']], 'vorm');
$this->selectie = ['orgversieid' => $this->onderdeel['vergelijkid'],
'vorm' => $this->vorm];
$this->selecties [] = $this->selectie;
// }
}
}
private function setLijsten(){
$this->ijkpunten = "";
$lijsten = new Lijsten($this->orgid, $this->selecties);
$this->ijkpunten = $lijsten->getSopInfo();
}
private function setIJkpuntenGegevens(){
$this->data = $this->ijkpunten;
}
private function setOnderdeel(){
if (!$this->onderdeel['modulenr']) return;
// $this->onderdeelcs['breed'] = 'F';
$html = $this->CI->Modules_model->getPad($this->onderdeel['modulenr']);
$this->onderdeel['html'] = $html;
if($this->data){
$this->onderdeel['data'] =
['data' =>$this->data,
'naam' =>$this->onderdeel['naam'],
'chartid'=>'blokje' . $this->onderdeel['modulenr'],
'orgsoort'=> $this->orgsoort ];
}
}
private function setOnderdelen(){
$this->onderdelenNew []= $this->onderdeel;
}
private function setCompacteOnderdelen(){
$this->compacteonderdelen= [
'orggegevens' => $this->orgpartial,
'legenda' => $this->legenda,
'onderdelen' => $this->onderdelenNew,
'schooljaarnr' => $this->schooljaarnr,
'schooljaar' => $this->schooljaar->naam,
'orgnaam' => $this->organisatie->naamkort
];
}
}