10 Commits
Author SHA1 Message Date
Monique c8fc4767a1 log 2026-03-10 16:19:32 +01:00
Monique 44bc260061 full group by uitzetten 2026-03-10 16:11:52 +01:00
Monique 90b4f0d08e logging 2026-03-10 15:51:46 +01:00
Monique eee1c2091c mogelijkheid verbergen deelbudgetten
per jaartal te bepalen in in MonFin
in bestemmingen geen deelbudgetten als het is uitgezet en dan uitgaven niet in rode kleur
foutmeldingen ivm order by en group by kolommen die niet in select stonden
tooltips bij archieveren, activeren en verwijderen onddersteuningsvormen in mondiv
2026-02-14 12:37:47 +01:00
Monique 48f3a9a7ff sommen parseInt, groepen filteren op schooljaar 2026-02-05 18:52:58 +01:00
Monique e265e257b8 nieuwe onderst. vorm ook opslaan als aantal 0 is 2026-02-03 18:40:55 +01:00
Monique c35552cc66 optie om ondersteuningsvorm per groep te archiveren
+ dearchiveren
2026-02-03 14:33:32 +01:00
Monique 6e6d1af59b Merge branch 'mon-fin-rodekleurverw' 2025-03-11 13:06:27 +01:00
Monique c526c48446 overzicht mon fin 2025-03-11 13:04:54 +01:00
Monique c8fb85e2d1 verise 2025-03-10 16:22:16 +01:00
19 changed files with 777 additions and 219 deletions
@@ -148,7 +148,7 @@ class Monfin2overzicht extends MY_Controller{
$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);
$totaal = $personeel + $materieel + $scholing;
$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, ',', '.');
+148 -31
View File
@@ -40,7 +40,12 @@ class Groepen extends MY_Controller{
if ($groepinfo->ondersteuningsvormen){
foreach($groepinfo->ondersteuningsvormen as $ondersteuningsvorm){
$ondersteuningsvorm->aantal =0;
$ondersteuningsvorm->aantal = 0;
$ondersteuningsvorm->archief = 'F';
// Voor nieuwe groep (id = null) moeten we kijken of de ondersteuningsvorm bij andere groepen gebruikt wordt
// We gebruiken 0 omdat de query groep_id <> {$groepid} gebruikt, en een nieuwe groep heeft geen id
$gebruikt = $this->Aantalxondersteuningsvorm_model->aantalGebruikt($orgid, 0, $ondersteuningsvorm->id);
$ondersteuningsvorm->gebruikt = $gebruikt > 0 ? 'T' : 'F';
}
}
echo json_encode($groepinfo);
@@ -63,10 +68,19 @@ class Groepen extends MY_Controller{
$groep->ondersteuningsvormen = $this->Ondersteuningsvormen_model->getvormen($orgid, $minnivo, $maxnivo);
if ($groep->ondersteuningsvormen){
foreach($groep->ondersteuningsvormen as $ondersteuningsvorm){
// hier get aantal
$ax = $this->Aantalxondersteuningsvorm_model->getaantal($groepid, $ondersteuningsvorm->id);
if ($ax){ $ondersteuningsvorm->aantal = $ax->aantal; }
else{ $ondersteuningsvorm->aantal =0; };
$aantal = 0;
$archief = 'F';
$details = $this->Aantalxondersteuningsvorm_model->getdetails($groepid, $ondersteuningsvorm->id);
if($details) {
if ($details->aantal) $aantal = $details->aantal;
if ($details->archief) $archief = $details->archief;
}
$ondersteuningsvorm->aantal = $aantal;
$ondersteuningsvorm->archief = $archief;
$gebruikt = $this->Aantalxondersteuningsvorm_model->aantalGebruikt($orgid, $groepid, $ondersteuningsvorm->id);
$ondersteuningsvorm->gebruikt = $gebruikt > 0 ? 'T' : 'F';
}
}
echo json_encode($groep);
@@ -126,53 +140,122 @@ class Groepen extends MY_Controller{
echo json_encode($groep);
}
function insertorupdateOS(){
//TODO clean input
if(!$this->userid) die;
$osid = $this->clean_input('id');
$orgid = $this->clean_input("orgid");
$aantal = $this->clean_input('aantal');
if (($osid == 0 || $osid == null) &&($aantal > 0)) {
$data=array("organisatie_id" => $orgid,
"naam" => $this->clean_input("naam"),
"nivo" => $this->clean_input('nivo')
$osid = $this->clean_input('id');
$orgid = $this->clean_input("orgid");
$aantal = $this->clean_input('aantal');
$archief = $this->clean_input('archief');
if ($archief !== 'T') $archief = 'F';
// && ($aantal > 0)
if (($osid == 0 || $osid == null) ) {
$data = array(
"organisatie_id" => $orgid,
"naam" => $this->clean_input("naam"),
"nivo" => $this->clean_input('nivo')
);
$osid = $this->Ondersteuningsvormen_model->insert_record($data);
}
else {
if ($orgid > 0){
$data=array("naam" => $this->clean_input('naam'));
$data = array("naam" => $this->clean_input('naam'));
$this->Ondersteuningsvormen_model->update_record($data, $osid);
}
// update name
}
$data2= array("organisatie_id" => $orgid,
"groep_id" => $this->clean_input('groepid'),
"ondersteuningsvorm_id" => $osid);
$aos =$this->Aantalxondersteuningsvorm_model->get_records_where($data2, TRUE);
$data2 = array(
"organisatie_id" => $orgid,
"groep_id" => $this->clean_input('groepid'),
"ondersteuningsvorm_id" => $osid
);
$aos = $this->Aantalxondersteuningsvorm_model->get_records_where($data2, TRUE);
if($aos){
if ($this->clean_input('aantal') == 0) {
//delete de regel
$this->Aantalxondersteuningsvorm_model->delete_record($aos->id);
}
else {
// update de regel
$data=array( "aantal" => $this->clean_input('aantal') );
// if ($aantal == 0 && $archief !== 'T') {
// // delete alleen als het niet gearchiveerd is
// $this->Aantalxondersteuningsvorm_model->delete_record($aos->id);
// }
// update de regel (ook archief opslaan)
$data = array(
"aantal" => $aantal,
"archief" => $archief
);
$this->Aantalxondersteuningsvorm_model->update_record($data, $aos->id);
}
}
else{
if ($this->clean_input('aantal') > 0){
$data = array( "organisatie_id" => $orgid,
"groep_id" => $this->clean_input('groepid'),
"ondersteuningsvorm_id" => $osid,
"aantal" => $this->clean_input('aantal'));
// record bestaat nog niet: maak hem aan als er aantal > 0 is OF als het archief is
// if ($aantal > 0 || $archief === 'T'){
$data = array(
"organisatie_id" => $orgid,
"groep_id" => $this->clean_input('groepid'),
"ondersteuningsvorm_id" => $osid,
"aantal" => $aantal,
"archief" => $archief
);
$aantalid = $this->Aantalxondersteuningsvorm_model->insert_record($data);
}
// }
}
echo json_encode($osid);
}
// function insertorupdateOS(){
// //TODO clean input
// if(!$this->userid) die;
// $osid = $this->clean_input('id');
// $orgid = $this->clean_input("orgid");
// $aantal = $this->clean_input('aantal');
// if (($osid == 0 || $osid == null) &&($aantal > 0)) {
// $data=array("organisatie_id" => $orgid,
// "naam" => $this->clean_input("naam"),
// "nivo" => $this->clean_input('nivo')
// );
// $osid = $this->Ondersteuningsvormen_model->insert_record($data);
// }
// else {
// if ($orgid > 0){
// $data=array("naam" => $this->clean_input('naam'));
// $this->Ondersteuningsvormen_model->update_record($data, $osid);
// }
// // update name
// }
// $data2= array("organisatie_id" => $orgid,
// "groep_id" => $this->clean_input('groepid'),
// "ondersteuningsvorm_id" => $osid);
// $aos =$this->Aantalxondersteuningsvorm_model->get_records_where($data2, TRUE);
// if($aos){
// if ($this->clean_input('aantal') == 0) {
// //delete de regel
// $this->Aantalxondersteuningsvorm_model->delete_record($aos->id);
// }
// else {
// // update de regel
// $data=array( "aantal" => $this->clean_input('aantal') );
// $this->Aantalxondersteuningsvorm_model->update_record($data, $aos->id);
// }
// }
// else{
// if ($this->clean_input('aantal') > 0){
// $data = array( "organisatie_id" => $orgid,
// "groep_id" => $this->clean_input('groepid'),
// "ondersteuningsvorm_id" => $osid,
// "aantal" => $this->clean_input('aantal'));
// $aantalid = $this->Aantalxondersteuningsvorm_model->insert_record($data);
// }
// }
// echo json_encode($osid);
// }
function getgroepen(){
if (!$this->userid) die;
$orgid = $this->clean_input('schoolID');
@@ -240,6 +323,40 @@ class Groepen extends MY_Controller{
$this->Aantalxondersteuningsvorm_model->delete_record_where(array("ondersteuningsvorm_id" => $osid));
$this->Ondersteuningsvormen_model->delete_record($osid);
}
function archiveerOS(){
if (!$this->userid) die;
if (!$this->writer) return;
$vormID = $this->clean_input('vormID');
$groepID = $this->clean_input('groepID');
$orgID = $this->clean_input('orgID');
$axovID =$this->Aantalxondersteuningsvorm_model->get_fieldvalue(["ondersteuningsvorm_id"=> $vormID, "groep_id" => $groepID], "id");
if ($axovID) $this->Aantalxondersteuningsvorm_model->update_record(["archief"=> 'T', "aantal"=> 0], $axovID);
else $data = [ 'organisatie_id' => $orgID,
'groep_id' => $groepID,
'ondersteuningsvorm_id' => $vormID,
'archief' => 'T',
'aantal' => 0];
$newid = $this->Aantalxondersteuningsvorm_model->insert_record($data);
}
function activeerOS(){
if (!$this->userid) die;
if (!$this->writer) return;
$vormID = $this->clean_input('vormID');
$groepID = $this->clean_input('groepID');
$orgID = $this->clean_input('orgID');
$axovID =$this->Aantalxondersteuningsvorm_model->get_fieldvalue(["ondersteuningsvorm_id"=> $vormID, "groep_id" => $groepID], "id");
if ($axovID) $this->Aantalxondersteuningsvorm_model->update_record(["archief"=> 'F'], $axovID);
else $data = [ 'organisatie_id' => $orgID,
'groep_id' => $groepID,
'ondersteuningsvorm_id' => $vormID,
'archief' => 'T',
'aantal' => 0];
$newid = $this->Aantalxondersteuningsvorm_model->insert_record($data);
}
function getwriter(){
$writer = false;
if ($this->Autorisaties_model->check_autorisatie($this->userrole, 259) > 0){$writer = true;};
@@ -25,6 +25,36 @@ class Monfinbeheer extends MY_Controller{
if($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) <=0) {$bedragen = array('');};
echo json_encode($bedragen);
}
function savedeelbudget(){
if (!$this->userid) die;
if($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) >= 1) {
$id = $this->clean_input('id');
$orgID = $this->clean_input('orgid');
$jaar = $this->clean_input('jaarnr');
$deelbudgetten = $this->clean_input('deelbudgetten');
if ($id == null || $id <= 0){
$data = array(
'orgid' =>$orgID,
'kalenderjaarnr'=> $jaar,
'deelbudgetten' => $deelbudgetten
);
$newid = $this->Toewijzingen_model->insert_record($data);
}
else{
$data = array("deelbudgetten" => $deelbudgetten);
$this->Toewijzingen_model->update_record($data, $id);
$newid = $id;
}
}
else {$newid = false;}; // geen schrijfrechten
echo json_encode(intval($newid));
}
function legvast(){
if($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) >= 1) {
$id = $this->input->post('id');
+7 -1
View File
@@ -99,7 +99,13 @@ class MY_Controller extends CI_Controller{
// public $version = '1.20.27';//dingen
// public $version = '1.21.00';//2factor
// public $version = '1.21.00L'; //2factor -twee
public $version = '1.21.01M'; //verbeteringen compact sop
// public $version = '1.21.01M'; //verbeteringen compact sop
// public $version = '1.21.02M '; //monfin, geen rode cijfers
// public $version = '1.21.03M '; //mondiv ondersteuningsvorm archiveren per groep
// public $version = '1.21.04M '; //mondiv ondersteuningsvorm archiveren per groep foutem hersteld
public $version = '1.21.05M '; //mondiv hovertekst, monfin budgetten verbergen
+19 -2
View File
@@ -13,9 +13,11 @@
class MY_Model extends CI_Model{
function __construct(){
parent::__construct();
// Disable ONLY_FULL_GROUP_BY for legacy queries
$this->db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))");
}
function get_record_by_id($id, $fieldname=FALSE, $row=TRUE){
@@ -74,7 +76,22 @@ class MY_Model extends CI_Model{
function get_query_result(){
$query = $this->db->query($this->sql);
if($query->num_rows()==0){
if($query === FALSE){
$error = $this->db->error();
log_message('error', 'Database query failed: ' . $error['message'] . ' | SQL: ' . $this->sql);
// Tijdelijk ook direct tonen voor debugging
if(ENVIRONMENT !== 'production'){
echo "SQL Error: " . $error['message'] . "\n";
echo "SQL: " . $this->sql . "\n";
}
return FALSE;
}
$num_rows = $query->num_rows();
// Tijdelijk loggen voor debugging
if(ENVIRONMENT !== 'production'){
log_message('debug', 'Query returned ' . $num_rows . ' rows | SQL: ' . substr($this->sql, 0, 100));
}
if($num_rows == 0){
return FALSE;
}else{
return $query->result();
@@ -19,14 +19,32 @@ class Aantalxondersteuningsvorm_model extends MY_Model{
AND ondersteuningsvorm_id = {$ondersteuningsvorm}";
return $this->get_query_row();
}
function getaantallen($vormid, $orgid,$schooljaarnr, $groepids){
function getdetails($groepid, $ondersteuningsvorm){
$this->sql = " SELECT *
FROM tb_aantalxondersteuningsvorm
WHERE groep_id = {$groepid}
AND ondersteuningsvorm_id = {$ondersteuningsvorm}";
return $this->get_query_row();
}
function aantalGebruikt($orgid, $groepid, $ondersteuningsvorm){
$this->sql = " SELECT SUM(aantal) AS aantal
FROM tb_aantalxondersteuningsvorm
WHERE organisatie_id = {$orgid}
AND ondersteuningsvorm_id = {$ondersteuningsvorm}
AND groep_id <> {$groepid}";
return $this->get_query_row('aantal');
}
function getaantallen($vormid, $orgid, $schooljaarnr, $groepsids){
$this->sql ="SELECT G.id, G.naam, IF(AOS.id,aantal,0) AS aantal
FROM tb_groepen G
LEFT JOIN tb_aantalxondersteuningsvorm AOS ON ( G.id = AOS.groep_id
AND AOS.ondersteuningsvorm_id = {$vormid})
WHERE G.organisatie_id = {$orgid}
AND G.schooljaarnr= {$schooljaarnr}
AND G.id IN ({$groepids})
AND G.schooljaarnr = {$schooljaarnr}
AND G.id IN ({$groepsids})
ORDER BY G.niveau, G.naam, G.id";
return $this->get_query_result();
}
@@ -64,7 +64,7 @@ class Filledversions_model extends MY_Model{
function getfilledversionsperorg($orgid, $modulenr){
// om de ingevulde lijsten per school op te halen
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id, OV.organisatie_id, periodenummer, OV.actief, versie_id, V.naam,
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id, OV.organisatie_id, OV.periodenummer, OV.actief, versie_id, V.naam,
OV.vorm, OV.scoretype, OV.score_omschrijving,
DATE_FORMAT(geldigvanaf, '%d-%m-%Y') AS geldigvanaf,
DATE_FORMAT(geldigtm, '%d-%m-%Y') AS geldigtm,
@@ -100,7 +100,7 @@ class Filledversions_model extends MY_Model{
function gettevergelijkenschoolversies($orgids, $modulenr){
// om de ingevulde lijsten per school op te halen
$this->sql =" SELECT DISTINCT (FV.orgversie_id) AS orgversieid, vorm, scoretype, (OV.versie_id) AS versieid, naam, A.omschrijving
$this->sql =" SELECT DISTINCT (FV.orgversie_id) AS orgversieid, vorm, scoretype, (OV.versie_id) AS versieid, naam, A.omschrijving, OV.periodenummer
FROM tb_filledversions FV
JOIN tb_orgversies OV ON OV.id = FV.orgversie_id
JOIN tb_versies V ON V.id =OV.versie_id
@@ -113,7 +113,7 @@ class Filledversions_model extends MY_Model{
function gettevergelijkenschoolversies1school($orgid, $modulenr){
// om de ingevulde lijsten per school op te halen
$this->sql =" SELECT DISTINCT (FV.orgversie_id) AS orgversieid, vorm, scoretype, (OV.versie_id) AS versieid, naam, A.omschrijving
$this->sql =" SELECT DISTINCT (FV.orgversie_id) AS orgversieid, vorm, scoretype, (OV.versie_id) AS versieid, naam, A.omschrijving, OV.periodenummer
FROM tb_filledversions FV
JOIN tb_orgversies OV ON OV.id = FV.orgversie_id
JOIN tb_versies V ON V.id =OV.versie_id
@@ -130,6 +130,7 @@ class Filledversions_model extends MY_Model{
function getversiesperalleorgs($idlijst, $module){
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id, OV.organisatie_id, periodenummer, OV.actief, versie_id,
vorm, scoretype,
OV.geldigtm AS geldig,
DATE_FORMAT(geldigvanaf,'%d-%m-%Y') AS geldigvanaf,
DATE_FORMAT(geldigtm,'%d-%m-%Y') AS geldigtm,
DATE_FORMAT(invullentm,'%d-%m-%Y') AS invullentm,
@@ -165,6 +166,7 @@ class Filledversions_model extends MY_Model{
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id,
OV.organisatie_id, periodenummer, OV.actief, versie_id,
vorm, scoretype,
OV.geldigtm AS geldig,
DATE_FORMAT(geldigvanaf,'%d-%m-%Y') AS geldigvanaf,
DATE_FORMAT(geldigtm,'%d-%m-%Y') AS geldigtm,
DATE_FORMAT(invullentm,'%d-%m-%Y') AS invullentm,
@@ -204,7 +206,7 @@ class Filledversions_model extends MY_Model{
function checkperiode($fvid, $van, $tm){
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id
$this->sql = "SELECT DISTINCT(FV.orgversie_id) as id,
FROM tb_filledversions FV
JOIN tb_orgversies OV ON OV.id = FV.orgversie_id
WHERE FV.id ={$fvid}
+93 -62
View File
@@ -13,23 +13,32 @@ class Groepen_model extends MY_Model{
$this->load->model($models);
}
function getgroep($groepid){
$this->sql = "SELECT GR.id,
GR.naam,
GR.totaantal,
SUM(IF( nivo = 2, AX.aantal, 0)) AS som2,
SUM(IF( nivo = 3, AX.aantal, 0)) AS som3,
SUM(IF( nivo = 4, AX.aantal, 0)) AS som4,
(totaantal - SUM(AX.aantal) ) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.id = {$groepid}
GROUP BY GR.id";
return $this->get_query_row();
}
function getgroep($groepid){
$this->sql = "SELECT GR.id,
GR.naam,
GR.totaantal,
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som2,
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som3,
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som4,
( GR.totaantal - (
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0)
)
) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.id = {$groepid}
GROUP BY GR.id";
return $this->get_query_row();
}
function getgroepenlist($orgid, $schooljaarnr, $module){
$this->sql = "SELECT id, naam, ondersteuning
FROM tb_groepen
@@ -81,56 +90,78 @@ class Groepen_model extends MY_Model{
return $this->get_query_row('aantallln');
}
function getgroepen($orgid, $schooljaarnr, $module){
$this->sql = "SELECT GR.id,
GR.naam,
GR.niveau,
GR.totaantal,
GR.ondersteuning,
SUM(IF( nivo = 2, AX.aantal, 0)) AS som2,
SUM(IF( nivo = 3, AX.aantal, 0)) AS som3,
SUM(IF( nivo = 4, AX.aantal, 0)) AS som4,
(GR.totaantal - IF(SUM(AX.aantal) , SUM(AX.aantal),0) ) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.organisatie_id = {$orgid}
AND GR.schooljaarnr = {$schooljaarnr}
AND GR.schooltype = 'R'
AND GR.module = {$module}
GROUP BY GR.id
ORDER BY niveau, naam, GR.id ";
return $this->get_query_result();
}
function getgroepen($orgid, $schooljaarnr, $module){
$this->sql = "SELECT GR.id,
GR.naam,
GR.niveau,
GR.totaantal,
GR.ondersteuning,
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som2,
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som3,
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som4,
( GR.totaantal - (
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0)
)
) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.organisatie_id = {$orgid}
AND GR.schooljaarnr = {$schooljaarnr}
AND GR.schooltype = 'R'
AND GR.module = {$module}
GROUP BY GR.id, GR.naam, GR.niveau, GR.totaantal, GR.ondersteuning
ORDER BY niveau, naam, GR.id ";
// Tijdelijk debug: ook op productie loggen
error_log("=== GETGROEPEN DEBUG ===");
error_log("orgid: $orgid, schooljaarnr: $schooljaarnr, module: $module");
error_log("SQL: " . $this->sql);
$result = $this->get_query_result();
error_log("Result: " . ($result === FALSE ? 'FALSE' : count($result) . ' rows'));
return $result;
}
function getgekopieerdegroepen($orgid, $schooljaarnr, $module){
$this->sql = "SELECT GR.id,
GR.naam,
GR.niveau,
GR.totaantal,
SUM(IF( nivo = 2, AX.aantal, 0)) AS som2,
SUM(IF( nivo = 3, AX.aantal, 0)) AS som3,
SUM(IF( nivo = 4, AX.aantal, 0)) AS som4,
(GR.totaantal - IF(SUM(AX.aantal) , SUM(AX.aantal),0) ) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.organisatie_id = {$orgid}
AND GR.schooljaarnr = {$schooljaarnr}
AND GR.schooltype = 'R'
AND GR.module = {$module}
GROUP BY GR.id
ORDER BY niveau, naam, GR.id ";
$this->sql = "SELECT GR.id,
GR.naam,
GR.niveau,
GR.totaantal,
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som2,
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som3,
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) AS som4,
( GR.totaantal - (
COALESCE(SUM(IF(OV.nivo = 2 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 3 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0) +
COALESCE(SUM(IF(OV.nivo = 4 AND (AX.archief IS NULL OR AX.archief <> 'T'), AX.aantal, 0)),0)
)
) AS som1
FROM tb_groepen GR
LEFT JOIN tb_aantalxondersteuningsvorm AX
ON GR.id = AX.groep_id
LEFT JOIN tb_ondersteuningsvormen OV
ON OV.id = AX.ondersteuningsvorm_id
WHERE GR.organisatie_id = {$orgid}
AND GR.schooljaarnr = {$schooljaarnr}
AND GR.schooltype = 'R'
AND GR.module = {$module}
GROUP BY GR.id, GR.naam, GR.niveau, GR.totaantal
ORDER BY niveau, naam, GR.id ";
return $this->get_query_result();
}
function getGroepenSboSo($orgid, $schooljaarnr){
$this->sql = "SELECT GR.id,
GR.naam,
@@ -26,7 +26,7 @@ class Ijkpunten_model extends MY_Model{
JOIN tb_ijkpunten Y ON Y.versie_id = OV.versie_id
JOIN tb_indicatoren I ON Y.id = I.ijkpunt_id
WHERE OV.id ={$orgversieid}
GROUP BY Y.nummer
GROUP BY Y.id
ORDER BY Y.nummer ";
return $this->get_query_result();
}
+3 -3
View File
@@ -692,12 +692,12 @@ class Scores_model extends MY_Model{
function getgemscores($orgversieid, $orgids){
$gevuldeversies = $this->fGetGevuldeVersies($orgversieid, $orgids);
if ($gevuldeversies) {
if ($gevuldeversies && $gevuldeversies !== '') {
$this->sql = " SELECT Q.omschrijving, Q.toelichting, Q.ijkpunt_id, Q.disabled, Q.scoretype,
Q.sumscores/Q.sumgewicht AS gem, Q.nummer, 'F' AS disablenvt
FROM (
SELECT Y.omschrijving, Y.toelichting,Y.id as ijkpunt_id,
Y.nummer, Y.disabled, SC.scoretype,
Y.nummer, Y.disabled, MAX(SC.scoretype) AS scoretype,
SUM(CASE WHEN Y.disabled = 'T' THEN 0
@@ -770,7 +770,7 @@ class Scores_model extends MY_Model{
function getgemscorestype4($orgversieid, $orgids){
$gevuldeversies = $this->fGetGevuldeVersies($orgversieid, $orgids);
if ($gevuldeversies) {
if ($gevuldeversies && $gevuldeversies !== '') {
$this->sql = " SELECT Q.omschrijving,
Q.toelichting,
Q.ijkpunt_id,
@@ -14,7 +14,8 @@ class Toewijzingen_model extends MY_Model{
function gettoewijzingen($orgid){
$this->sql = "SELECT T.id, basis, extra, som, overig, vastgelegd,basisextra, basisextravast,
K.naam, K.jaarnr, IF(T.id >0, T.jaarclosed,'F') as jaarclosed
K.naam, K.jaarnr, IF(T.id >0, T.jaarclosed,'F') as jaarclosed,
COALESCE(T.deelbudgetten, 'T') as deelbudgetten
FROM tb_kalenderjaren K
LEFT JOIN (SELECT * FROM tb_toewijzingen WHERE orgid = {$orgid}) T
ON T.kalenderjaarnr = K.jaarnr
@@ -22,7 +23,7 @@ class Toewijzingen_model extends MY_Model{
return $this->get_query_result();
}
function gettoewijzingperjaar($orgid, $jaarnr){
$this->sql = " SELECT id, basis, extra, som, overig, basisextra, jaarclosed
$this->sql = " SELECT id, basis, extra, som, overig, basisextra, jaarclosed, deelbudgetten
FROM tb_toewijzingen
WHERE orgid = {$orgid}
AND kalenderjaarnr = {$jaarnr}";
+120 -20
View File
@@ -27,13 +27,14 @@
<tr style="border-bottom: 1px solid #efefef">
<td class="vat">
<button class="delete"
title="verwijder"
data-bind="click: $parent.fDeleteGroep, visible: $parent.writer()"></button></td>
<td class="vat" data-bind="text: naam"></td>
<td class="vat" style="text-align:right" data-bind="text: totaantal"></td>
<td class="vat" style="text-align:right" data-bind="text: som1() > 0 ? som1 : '' "></td>
<td class="vat" style="text-align:right" data-bind="text: som2() > 0 ? som2 : '' " ></td>
<td class="vat" style="text-align:right" data-bind="text: som3() > 0 ? som3 : ''" ></td>
<td class="vat" style="text-align:right" data-bind="text: som4() > 0 ? som4 : '' " ></td>
<td class="vat" style="text-align:right" data-bind="text: som1() > 0 ? som1() : '' "></td>
<td class="vat" style="text-align:right" data-bind="text: som2() > 0 ? som2() : '' " ></td>
<td class="vat" style="text-align:right" data-bind="text: som3() > 0 ? som3() : ''" ></td>
<td class="vat" style="text-align:right" data-bind="text: som4() > 0 ? som4() : '' " ></td>
<td class="vat" style="padding-left:15px">
<!-- ko foreach: leerkrachten-->
<span data-bind="text:fullname"></span><br />
@@ -83,7 +84,7 @@
<td style="vertical-align:top">
<!-- ko foreach: $parent.leerkrachten -->
<p style="margin:0px" data-bind="text: fullname, visible: selected()"></p>
<p style="margin:0" data-bind="text: fullname, visible: selected()"></p>
<!-- /ko -->
<div data-bind="visible: toonLK"
@@ -131,8 +132,17 @@
<td style="width: 45px" class="integer" data-bind="text: totplus"></td>
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr data-bind="visible: !$parent.geopend2() && nivo==2" >
<td ><button class="delete" data-bind="click: $root.fDeleteOS, visible: orgid > 0 && $root.writer()"></button></td>
<tr data-bind="visible: !$parent.geopend2() && nivo==2 && !archief()" >
<td >
<button class="delete"
title="verwijder"
data-bind="click: $root.fDeleteOS, visible: orgid > 0 && !gebruikt && $root.writer()">
</button>
<i class="fa fa-archive"
title="archief"
data-bind="click: $root.fArchiveOS, visible: orgid > 0 && gebruikt && $root.writer()">
</i>
</td>
<td ><input style="width:100%"
data-bind="textInput: naam,
enable: orgid > 0 && $root.writer(),
@@ -140,9 +150,9 @@
</td>
<td><input class = "integer"
data-bind="textInput: aantal,
attr:{'id' : 'aantal2-' + $index()},
event:{input: $root.fCheckinput.bind($data, 'aantal2-'+$index() )},
enable: $root.writer() && !$root.bezig()" /></td>
attr:{'id' : 'aantal2-' + $index()},
event:{input: $root.fCheckinput.bind($data, 'aantal2-'+$index() )},
enable: $root.writer() && !$root.bezig()" /></td>
</tr>
@@ -150,9 +160,44 @@
<tr data-bind="visible: !geopend2()">
<td></td>
<td colspan=2> <button data-bind="click: $parent.fNewOndersteuning.bind($data,2), visible: $root.writer()">voeg ondersteuningsvorm toe</button></td>
<td colspan=2 style="padding-top: 2px; padding-bottom: 5px;">
<button class="btn-subtle"
data-bind="click: $parent.fNewOndersteuning.bind($data,2), visible: $root.writer()">voeg ondersteuningsvorm toe
</button>
</td>
</tr>
<tr data-bind="visible: !geopend2()">
<!-- ko if:archiefplus() -->
<tr data-bind="visible: !geopend2() && !archief2() ">
<td></td>
<td colspan=2 style="padding-top: 2px;">
<button class="btn-subtle" data-bind="click: $parent.fToggleArchief.bind($data,2), visible: $root.writer()">toon archief
</button></td>
</tr>
<tr data-bind="visible: !geopend2() && archief2() ">
<td colspan=3 style="background-color: lightgrey;"> Gearchiveerde ondersteuningsvormen
</td>
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !$parent.geopend2() && $parent.archief2() && nivo==2 && orgid > 0 && archief() && $root.writer()">
<td >
<button class="activeer" title="activeer" data-bind="click: $root.fActivateOS, ">
</button>
</td>
<td colspan=2 data-bind="text: naam"></td>
</tr>
<!-- /ko -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !geopend2() && archief2() ">
<td colspan=2 ></td>
<td style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fToggleArchief.bind($data,2), visible: $root.writer()">sluit</button></td>
</tr>
<!--/ko-->
<tr data-bind="visible: !geopend2() ">
<td colspan=3> <hr/></td>
</tr>
@@ -165,8 +210,11 @@
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr data-bind="visible: !$parent.geopend3() && nivo==3" >
<td></td>
<tr data-bind="visible: !$parent.geopend3() && nivo==3 && !archief() " >
<td >
<button class="delete" title="verwijder" data-bind="click: $root.fDeleteOS, visible: orgid > 0 && !gebruikt && $root.writer()"></button>
<i class="fa fa-archive" title="archief" data-bind="click: $root.fArchiveOS, visible: orgid > 0 && gebruikt && $root.writer()"></i>
</td>
<td ><input style="width:100%"
data-bind="textInput: naam,
enable: orgid > 0,
@@ -178,10 +226,35 @@
enable: $root.writer() && !$root.bezig()" /></td>
</tr>
<!-- /ko -->
<tr data-bind="visible: !geopend3()">
<tr data-bind="visible: !geopend3() " style="padding-bottom: 5px;">
<td></td>
<td colspan=2> <button data-bind="click: $parent.fNewOndersteuning.bind($data,3), visible: $root.writer()">voeg ondersteuningsvorm toe</button></td>
<td colspan=2 style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fNewOndersteuning.bind($data,3), visible: $root.writer()">voeg ondersteuningsvorm toe</button></td>
</tr>
<!-- ko if:archiefextra() -->
<tr data-bind="visible: !geopend3() && !archief3()">
<td></td>
<td colspan=2 style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fToggleArchief.bind($data,3), visible: $root.writer()">toon archief</button></td>
</tr>
<tr data-bind="visible: !geopend3() && archief3() ">
<td colspan=3 style="background-color: lightgrey;"> Gearchiveerde ondersteuningsvormen</td>
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !$parent.geopend3() && $parent.archief3() && nivo==3 && orgid > 0 && archief() && $root.writer()">
<td >
<button class="activeer" title="activeer" data-bind="click: $root.fActivateOS "></button>
</td>
<td colspan=2 data-bind="text: naam"></td>
</tr>
<!-- /ko -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !geopend3() && archief3()">
<td colspan=2></td>
<td style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fToggleArchief.bind($data,3), visible: $root.writer()">sluit</button></td>
</tr>
<!-- /ko -->
<tr data-bind="visible: !geopend3()">
<td colspan=3> <hr/></td>
</tr>
@@ -193,8 +266,11 @@
<td style="width: 45px" class= "integer" data-bind="text: totextraplus"></td>
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr data-bind="visible: !$parent.geopend4() && nivo==4">
<td></td>
<tr data-bind="visible: !$parent.geopend4() && nivo==4 && !archief()">
<td >
<button class="delete" title="verwijder" data-bind="click: $root.fDeleteOS, visible: orgid > 0 && !gebruikt && $root.writer()"></button>
<i class="fa fa-archive" title="archief" data-bind="click: $root.fArchiveOS, visible: orgid > 0 && gebruikt && $root.writer()"></i>
</td>
<td ><input style="width:100%"
data-bind="textInput: naam,
enable: orgid > 0,
@@ -206,13 +282,37 @@
enable: $root.writer() && !$root.bezig()" /></td>
</tr>
<!-- /ko -->
<tr data-bind="visible: !geopend4()">
<tr data-bind="visible: !geopend4()" style="padding-bottom: 5px;">
<td></td>
<td colspan=2> <button data-bind="click: $parent.fNewOndersteuning.bind($data,4), visible: $root.writer()">voeg ondersteuningsvorm toe</button></td>
<td colspan=2 style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fNewOndersteuning.bind($data,4), visible: $root.writer()">voeg ondersteuningsvorm toe</button></td>
</tr>
<!-- ko if: archiefextraplus() -->
<tr data-bind="visible: !geopend4() && !archief4()">
<td></td>
<td colspan=2 style="padding-top: 2px;"> <button class="btn-subtle" style="background-color: #f1f1f1; " data-bind="click: $parent.fToggleArchief.bind($data,4), visible: $root.writer()">toon archief</button></td>
</tr>
<tr data-bind="visible: !geopend4() && archief4() ">
<td colspan=3 style="background-color: lightgrey;"> Gearchiveerde ondersteuningsvormen</td>
</tr>
<!-- ko foreach: ondersteuningsvormen -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !$parent.geopend4() && $parent.archief4() && nivo==4 && orgid > 0 && archief() && $root.writer()">
<td >
<button class="activeer" title="activeer" data-bind="click: $root.fActivateOS "></button>
</td>
<td colspan=2 data-bind="text: naam"></td>
</tr>
<!-- /ko -->
<tr style="background-color: #f1f1f1;" data-bind="visible: !geopend4() && archief4()">
<td colspan=2></td>
<td style="padding-top: 2px;"> <button class="btn-subtle" data-bind="click: $parent.fToggleArchief.bind($data,4), visible: $root.writer()">sluit</button></td>
</tr>
<tr data-bind="visible: !geopend4()">
<td colspan=3> <hr/></td>
</tr>
<!-- /ko -->
</table>
<div>
<p>Notitie</p>
@@ -52,46 +52,66 @@
<div style="width: 100%"
data-bind="visible: selectedOrg(), with: selectedOrg">
<h4 style="margin-top:0px"><span data-bind="text: fnaam"></span> : Budgetten</h4>
<table class="lstable" style="width:100%; font-size: 0.8em">
<table class="lstable" style="width:100%; font-size: 0.8em; vertical-align: text-top">
<thead>
<tr>
<th style="width:12%; text-align:center">Kalenderjaar</th>
<th style="width:30%; text-align:center">Basis ondersteuning</th>
<th style="width:30%; text-align:center">Extra ondersteuning</th>
<th style="width:10%; text-align:center"></th>
<th style="text-align:center">Kalenderjaar</th>
<th style="text-align:center">Basis ondersteuning</th>
<th style="text-align:center">Extra ondersteuning</th>
<th style="text-align:center"></th>
<th >Deelbudgetten</th>
</tr>
</thead>
<tbody data-bind= "foreach: $parent.bedragen">
<tr>
<td data-bind="text: kalenderjaar"></td>
<td><input class="decimal"
<tr >
<td style="vertical-align: text-top; height: 23px" data-bind="text: kalenderjaar"></td>
<td style="height: 23px"><input class="decimal"
style="max-width: 100%;width:100%"
data-bind="textInput: basis,
event:{change: $root.fUpdatebedrag.bind($data,1)},
visible: !jaarclosed() && (vastgelegd() ==0 || vastgelegd()==null ),
enable:$root.magwijzig()" /></td>
<td><input class="decimal"
<td style="height: 23px"><input class="decimal"
style="max-width: 100%;width:100%"
data-bind="textInput: extra,
event:{change: $root.fUpdatebedrag.bind($data,2)},
visible: !jaarclosed() && (vastgelegd() ==0 || vastgelegd()==null ),
enable:$root.magwijzig()" /></td>
<td ><button data-bind="click: $root.fLegVast,
<td style="height: 23px"><button style="vertical-align: text-top; " data-bind="click: $root.fLegVast,
visible: (vastgelegd() == 0 || vastgelegd() == null) && !jaarclosed()
&& $root.magwijzig()">leg vast</button>
</td>
<td style="height: 23px">
<!-- ko if: deelbudgetten()-->
<span >met deelbudgetten</span>
<!--/ko-->
<!-- ko if: ! deelbudgetten() -->
<span >zonder deelbudgetten </span>
<!--/ko-->
</td>
</tr>
<tr style="border-bottom:1px solid #dbdbdb">
<td>geformatteerd</td>
<td style="text-align: right" data-bind="text: screenbasis"></td>
<td style="text-align: right" data-bind="text: screenextra"></td>
<td colspan =2>
<tr style="border-bottom:1px solid #dbdbdb; ">
<td style="height: 23px">geformatteerd</td>
<td style="text-align: right; height: 23px" data-bind="text: screenbasis"></td>
<td style="text-align: right; height: 23px" data-bind="text: screenextra"></td>
<td style="height: 23px">
<button style="width: 100%; margin-top: 5px; margin-bottom: 5px;"
data-bind="click: $root.fJaarAfsluiten, visible: ! jaarclosed() && $root.selectedOrg().soort ==1 && $root.magwijzig()">
jaar afsluiten
</button>
</td>
</td>
<td style="height: 23px">
<!-- ko if: deelbudgetten()-->
<button style=" vertical-align: text-top; padding-top: 0; " data-bind="click: $root.fToggleDeelbudget">verberg
</button>
<!--/ko-->
<!-- ko if: ! deelbudgetten() -->
<button style=" vertical-align: text-top; padding-top: 0; " data-bind="click: $root.fToggleDeelbudget " >voeg toe
</button>
<!--/ko-->
</td>
</tr>
</tbody>
</table>
@@ -21,17 +21,21 @@
Basisondersteuning
</h4>
<div data-bind="visible: basisgeopend()">
<table class="lstable" style="width : 100%; font-size:0.9em; position: relative">
<table class="lstable" style="width : 100%; font-size:0.9em;border-top: none; position: relative">
<thead style="position: sticky; top: 0" >
<tr>
<th style="width:29%"></th>
<th style="width:5%"></th>
<th style="width: 11%"></th>
<th style="width: 11%"></th>
<th style="width: 11%"></th>
<th style="width: 11%"></th>
<th style="width:11%"></th>
<th style="width:11%"></th>
<th style="width:30%"></th>
<th ></th>
<th ></th>
<th ></th>
<th ></th>
<th ></th>
<!-- ko if: deelbudgetten()-->
<th ></th>
<!--/ko-->
<th ></th>
</tr>
<tr class="blokheader" >
<th colspan="2" style="background-color: #968026; border: none; " >
@@ -41,6 +45,7 @@
<span data-bind="text: code == 'TOTAAL' ? code : code == 'SCHOLING' ? 'SUBTOTALEN' : ' ' "></span>
</th>
<!-- /ko -->
<!-- ko if: deelbudgetten()-->
<th class="blokheader"
style="text-align: right;
padding-right: 5px;
@@ -51,6 +56,7 @@
<span >Restant
</span>
</th>
<!--/ko-->
<th class="blokheader" style="text-align: right; padding-right:5px; padding-bottom: 5px; background-color: #968026;">
<span>Percentage</span>
<i class="fa fa-info-circle"
@@ -65,14 +71,15 @@
<!-- ko foreach: $root.uitgavetypes -->
<th style="text-align:right; border-right: 2px solid #ffffff; background-color: #968026;padding-right: 5px;"
data-bind="style: {'borderTop' : code != 'TOTAAL' ? '2px solid #ffffff' : 'none', }">
data-bind="style: {'borderTop' : code != 'TOTAAL' ? '2px solid #ffffff' : 'none', } " >
<span data-bind="text: code != 'TOTAAL' ? code : ' ' ">
</span>
</th>
<!-- /ko -->
<!-- ko if: deelbudgetten()-->
<th class="blokheader2" style="border-right: 2px solid #ffffff; border-top: none; background-color: #968026;">
</th>
<!--/ko-->
<th class="blokheader2" style="background-color: #968026; border-top: none;">
</th>
</tr>
@@ -82,11 +89,16 @@
<tbody data-bind="foreach: basissoorten">
<tr class="blokheader">
<td class="blokheader" colspan="8" data-bind="text: naam" style="text-align: left; border: 2px solid #ffffff"></td>
<td class="blokheader"
data-bind="text: naam,
attr: {colspan: $parent.deelbudgetten() ? 8 : 7 },
"
style="text-align: left; border: 2px solid #ffffff"></td>
</tr>
<!-- ko foreach:subsoorten -->
<tr>
<!-- ko if: $root.deelbudgetten() -->
<tr >
<td data-bind="text: naam"></td>
<td style="text-align: left; color: #008028 ">budget</td>
<!-- ko foreach: uitgavetypes() -->
@@ -120,37 +132,49 @@
</div>
</td>
</tr>
<!--/ko-->
<tr >
<td ></td>
<td >
<!-- ko if: !$root.deelbudgetten() -->
<span data-bind="text: naam "></span>
<!--/ko-->
</td>
<td style="text-align: left; color:#003e80; ">uitgaven</td>
<!-- ko foreach: uitgavetypes() -->
<!-- ko if: $root.deelbudgetten() || code != 'RESTANT'-->
<td style="text-align: right; padding-bottom: 10px;">
<!-- ko if: code != 'RESTANT' && code != 'TOTAAL'-->
<input class="decimal"
style="width: 145px; max-width:98%; background-color: #e6f2ff"
data-bind="textInput: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) ? '#ff0000' : '#000000' },
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000' },
event: {change:$root.fSaveBedrag.bind($data, $parent.subsoortID, 'BASIS' )} ,
enable: ! $root.jaarclosed()" />
<!-- /ko -->
<!-- ko if: code == 'RESTANT' || code == 'TOTAAL'-->
<!-- ko if: code == 'RESTANT' -->
<span class="decimal"
style="width: 145px; max-width:98%; "
data-bind="text: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000'} ">
</span>
<!-- /ko -->
<!-- ko if: code == 'TOTAAL'-->
<span class="decimal"
style="width: 145px; max-width:98%"
data-bind="text: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) ? '#ff0000' : '#000000',
fontSize : code == 'TOTAAL' ? 'small' : 'normal' },
">
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000'} ">
</span>
<!-- /ko -->
</td>
<!-- /ko -->
<!-- /ko -->
<td style="padding: 0; vertical-align: top">
<div style="width: 98%;height: 24px; color:#003e80;
font-size: 0.9em; font-family: sans-serif, verdana; padding-left: 2px; padding-top: 2px;
padding-bottom: 2px; margin: 0; text-align: right; padding-right: 3px;">
<span data-bind="text: bedragpctFormat,
visible: ! $root.jaarclosed()">
<span data-bind="text: bedragpctFormat,
visible: ! $root.jaarclosed()">
</span>
</div>
</td>
@@ -171,12 +195,14 @@
<span data-bind="text: totbasispct() == '0,0' ? '' : '(' + totbasispct() + '% van het totaalbudget)' ">
</span>
<br>
<!-- ko if: deelbudgetten() -->
<span style="display:inline-block; width: 250px" >Gebudgeteerd per kostenpost</span>
<span style="display:inline-block; width: 100px; text-align:right"
data-bind="text: gebudgetbasis ">
</span>
<span data-bind= "text: gebudgetbasispct()== '0,0' ? '' : '(' + gebudgetbasispct() + '% van het totaalbudget)' "></span>
<br>
<!--/ko -->
<span style="display:inline-block; width: 250px" >Totaalbudget</span>
<span style="display:inline-block; width: 100px; text-align:right"
data-bind="text: jaartoewijzing() ? jaartoewijzing().basis : '' ">
@@ -197,7 +223,9 @@
<th style="width: 11%"></th>
<th style="width: 11%"></th>
<th style="width:11%"></th>
<!-- ko if: $root.deelbudgetten()-->
<th style="width:11%"></th>
<!--/ko-->
<th style="width:11%"></th>
</tr>
<tr class="blokheader" style=" text-align:left; padding-left:5px; ">
@@ -209,6 +237,7 @@
<span data-bind="text: code == 'TOTAAL' ? code : code == 'SCHOLING' ? 'SUBTOTALEN' : ' ' "></span>
</th>
<!-- /ko -->
<!-- ko if: $root.deelbudgetten()-->
<th class="blokheader"
style="text-align: right;
padding-right: 5px;
@@ -218,6 +247,7 @@
border-right: 2px solid #ffffff;">
Restant
</th>
<!-- /ko -->
<th class="blokheader" style="text-align: right; padding-right:5px; padding-bottom: 5px; background-color: #968026">
<span >Percentage</span>
<i class="fa fa-info-circle"
@@ -235,8 +265,10 @@
<span data-bind="text: code != 'TOTAAL' ? code : ' ' "></span>
</th>
<!-- /ko -->
<!-- ko if: $root.deelbudgetten()-->
<th class="blokheader2" style="border-right: 2px solid #ffffff; background-color: background-color: #968026; border-top: none;">
</th>
<!-- /ko -->
<th class="blokheader2" style="background-color: background-color: #968026; border-top: none;">
</th>
</tr>
@@ -245,9 +277,15 @@
<tbody data-bind="foreach: extrasoorten">
<tr class="blokheader">
<td class="blokheader" colspan="8" data-bind="text: naam" style="text-align: left; border: 2px solid #ffffff"></td>
<td class="blokheader"
data-bind="text: naam,
attr: {colspan: $parent.deelbudgetten() ? 8 : 7 },"
style="text-align: left; border: 2px solid #ffffff"></td>
</tr>
<!-- ko foreach:subsoorten -->
<!--ko if: $root.deelbudgetten()-->
<tr>
<td data-bind="text: naam"></td>
<td style="text-align: left; color: #008028 ">budget</td>
@@ -279,27 +317,41 @@
</div>
</td>
</tr>
<!--/ko-->
<tr >
<td ></td>
<td >
<!-- ko if: !$root.deelbudgetten() -->
<span data-bind="text: naam "></span>
<!--/ko-->
</td>
<td style="text-align: left; color:#003e80; ">uitgaven</td>
<!-- ko foreach: uitgavetypes() -->
<!-- ko if: $root.deelbudgetten() || code != 'RESTANT'-->
<td style="text-align: right; padding-top: 1px; vertical-align: top ">
<!-- ko if: code != 'RESTANT' && code != 'TOTAAL'-->
<input class="decimal"
style="width: 145px; max-width:98%; background-color: #e6f2ff"
data-bind="textInput: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) ? '#ff0000' : '#000000'},
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000'},
event: {change:$root.fSaveBedrag.bind($data, $parent.subsoortID, 'BASIS' )} ,
enable: ! $root.jaarclosed()" />
<!-- /ko -->
<!-- ko if: code == 'RESTANT' || code == 'TOTAAL'-->
<!-- ko if: code == 'RESTANT' -->
<span class="decimal"
data-bind="text: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) ? '#ff0000' : '#000000'}" >
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000'}" >
</span>
<!-- /ko -->
<!-- ko if: code == 'TOTAAL'-->
<span class="decimal"
data-bind="text: bedragFormat,
style: { color : Number(budget()) < Number(bedrag()) && $root.deelbudgetten() ? '#ff0000' : '#000000'}" >
</span>
<!-- /ko -->
</td>
<!-- /ko -->
<!-- /ko -->
<td style="padding: 0; vertical-align: top">
<div style="width: 98%;height: 24px;
font-size: 0.9em; font-family: sans-serif, verdana; padding-left: 2px; padding-top: 2px;
@@ -326,6 +378,7 @@
</span>
<span data-bind="text: totextrapct() =='0,0' ? '' : '(' + totextrapct() + '% van het totaalbudget)'"></span>
<br>
<!-- ko if: deelbudgetten() -->
<span style="display:inline-block; width: 250px" >Gebudgeteerd per kostenpost</span>
<span style="display:inline-block; width: 100px; text-align:right"
data-bind="text: gebudgetextra() ">
@@ -333,6 +386,7 @@
<span data-bind="text: gebudgetextrapct() =='0,0' ? '' : '(' + gebudgetextrapct() + '% van het totaalbudget)' "></span>
<br>
<!-- /ko -->
<span style="display:inline-block; width: 250px" >Totaalbudget</span>
<span style="display:inline-block; width: 100px; text-align:right"
data-bind="text: jaartoewijzing() ? jaartoewijzing().extra : '' ">
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M560.3 301.2C570.7 313 588.6 315.6 602.1 306.7C616.8 296.9 620.8 277 611 262.3L563 190.3C560.2 186.1 556.4 182.6 551.9 180.1L351.4 68.7C332.1 58 308.6 58 289.2 68.7L88.8 180C83.4 183 79.1 187.4 76.2 192.8L27.7 282.7C15.1 306.1 23.9 335.2 47.3 347.8L80.3 365.5L80.3 418.8C80.3 441.8 92.7 463.1 112.7 474.5L288.7 574.2C308.3 585.3 332.2 585.3 351.8 574.2L527.8 474.5C547.9 463.1 560.2 441.9 560.2 418.8L560.2 301.3zM320.3 291.4L170.2 208L320.3 124.6L470.4 208L320.3 291.4zM278.8 341.6L257.5 387.8L91.7 299L117.1 251.8L278.8 341.6z"/></svg>

After

Width:  |  Height:  |  Size: 759 B

+27
View File
@@ -202,6 +202,33 @@ button.delete{
cursor: pointer;
box-shadow:none;
}
button.activeer{
background-image: url('/css/images/box-open.svg');
margin-right: 1px;
background-color: rgba(255, 255, 255, 0);
background-repeat: no-repeat;
background-size: 15px 20px;
background-position:center;
width: 20px;
height: 20px;
border: medium none;
cursor: pointer;
box-shadow:none;
}
button.btn-subtle{
border-color: #bdbdbd;
background-color: #f1f1f1;
box-shadow: 1px 1px 2px #9b9b9b;
}
button.btn-subtle:hover{
box-shadow: 1px 1px 2px #7f7f7f;
}
button.btn-subtle:focus{
outline: none;
box-shadow: 0 0 0 2px #d0d0d0;
}
.printer{
background-image: url('/css/images/print.png');
margin-right: 1px;
+130 -34
View File
@@ -6,12 +6,12 @@ $(function(){
this.id = p.id;
this.naam = p.naam
this.niveau = p.niveau;
this.totaantal = ko.observable(p.totaantal);
this.aantal2 = ko.observable(p.totaantal);
this.som1 = ko.observable(p.som1);
this.som2 = ko.observable(p.som2);
this.som3 = ko.observable(p.som3);
this.som4 = ko.observable(p.som4);
this.totaantal = ko.observable(parseInt(p.totaantal, 10)|| 0);
this.aantal2 = ko.observable(parseInt(p.totaantal, 10) || 0);
this.som1 = ko.observable(parseInt(p.som1, 10)|| 0);
this.som2 = ko.observable(parseInt(p.som2, 10)|| 0);
this.som3 = ko.observable(parseInt(p.som3, 10)|| 0);
this.som4 = ko.observable(parseInt(p.som4, 10)|| 0);
this.leerkrachten = ko.observableArray([]);
var dit = this;
if (p.leerkrachten){
@@ -28,11 +28,14 @@ $(function(){
}
function fAddEditGroep(p){
var dit = this;
this.id = p.id;
var dit= this;
this.id = p.id;
this.naam = ko.observable(p.naam);
this.orgid = p.orgid;
this.schooljaar = p.schooljaar;
this.schooljaar = p.schooljaar;
this.archief2 = ko.observable(false);
this.archief3 = ko.observable(false);
this.archief4 = ko.observable(false);
this.niveau = ko.observableArray([]);
if (p.niveau){
@@ -88,6 +91,44 @@ $(function(){
this.basis = ko.computed(function(){
return parseInt(dit.totaantal()) - (parseInt(dit.totplus()) + dit.totextra()+dit.totextraplus());
})
this.archiefplus = ko.computed(function(){
let toon = false;
if (dit.ondersteuningsvormen()){
$.each(dit.ondersteuningsvormen(), function(x,y){
if (parseInt(y.nivo )=== 2 ){
if(y.archief() && y.orgid > 0)
toon = true;
}
});
}
return toon;
});
this.archiefextra = ko.computed(function(){
var toon = false
if (dit.ondersteuningsvormen()){
$.each(dit.ondersteuningsvormen(), function(x,y){
if (parseInt(y.nivo) === 3 && y.archief()){
toon = true;
}
});
}
return toon;
});
this.archiefextraplus = ko.computed(function(){
var toon = false;
if (dit.ondersteuningsvormen()){
$.each(dit.ondersteuningsvormen(), function(x,y){
if (parseInt(y.nivo) === 4 && y.archief()){
toon = true;
}
});
}
return toon;
});
this.geopend1 = ko.observable(false);
this.geopend2 = ko.observable(false);
this.geopend3 = ko.observable(false);
@@ -99,11 +140,13 @@ $(function(){
function fAddOndersteuningsvorm(k){
var dit = this;
this.id = k.id;
this.orgid = k.organisatie_id;
this.naam = ko.observable(k.naam);
this.orgid = k.organisatie_id;
this.naam = ko.observable(k.naam);
this.nivo = k.nivo;
this.aantal = ko.observable(k.aantal);
this.gebruikt = k.gebruikt==='T';
this.archief = ko.observable(false);
if (k.archief==='T') dit.archief(true);
}
@@ -292,14 +335,15 @@ $(function(){
}
});
}) // delete groepxuser
self.selectedGroep().totaantal(self.editGroep().totaantal());
self.selectedGroep().totaantal(parseInt(self.editGroep().totaantal(), 10));
// hier alle regels en/of aantallen opslaan
self.selectedGroep().som1(self.selectedGroep().totaantal());
self.selectedGroep().som2(0);
self.selectedGroep().som3(0);
self.selectedGroep().som4(0);
self.selectedGroep().som1(parseInt(self.editGroep().basis(), 10) || 0);
self.selectedGroep().som2(parseInt(self.editGroep().totplus(), 10) || 0);
self.selectedGroep().som3(parseInt(self.editGroep().totextra(), 10) || 0);
self.selectedGroep().som4(parseInt(self.editGroep().totextraplus(), 10) || 0);
if (self.editGroep().ondersteuningsvormen()){
$.each(self.editGroep().ondersteuningsvormen(), function(i,p){
@@ -309,25 +353,16 @@ $(function(){
groepid : self.editGroep().id,
nivo : p.nivo,
naam : p.naam(),
aantal : p.aantal() };
aantal : p.aantal(),
archief : p.archief() ? 'T': 'F'}
$.post("index.php/monpas/groepen/insertorupdateOS", submitData, function(result){
if (result){
if (p.id == null || p.id == 0) p.id = result;
}
},'json');
// HIER NOG OPTELLEN VAN LEERLINGEN PER ONDERSTEUNINGSVORM VOOR SELECTED GROEP
if (p.aantal()) {
self.selectedGroep().som1(self.selectedGroep().som1() - parseInt(p.aantal()));
switch (p.nivo){
case '2': self.selectedGroep().som2( self.selectedGroep().som2() + parseInt(p.aantal()));
break;
case '3': self.selectedGroep().som3( self.selectedGroep().som3() + parseInt(p.aantal()));
break;
case '4': self.selectedGroep().som4(self.selectedGroep().som4() + parseInt(p.aantal()));
break;
}
} ; // if p.aantal
}); // each
}// if
@@ -396,10 +431,23 @@ $(function(){
orgid:self.schoolid(),
naam: ko.observable(''),
nivo: wat,
aantal: ko.observable(0)}
aantal: ko.observable(0),
gebruikt: false,
archief: ko.observable(false)
}
self. editGroep().ondersteuningsvormen.push( newos);
},
fToggleArchief: function(wat){
var self = ls.GroepenModel;
if (!self.editGroep()) return;
if (wat === 2) self.editGroep().archief2(! self.editGroep().archief2());
if (wat === 3) self.editGroep().archief3(! self.editGroep().archief3());
if (wat === 4) self.editGroep().archief4(! self.editGroep().archief4());
},
fCheckinput: function(data,elid){
var self =ls.GroepenModel;
var dit = this;
@@ -484,17 +532,65 @@ $(function(){
}
},'json');
},
fArchiveOS : function(){
var self = ls.GroepenModel;
var dit = this;
let waarschuwing ="Weet u zeker dat u " + dit.naam() + " wilt archiveren?";
if(parseInt(dit.aantal()) > 0) waarschuwing = waarschuwing + "<br/>De leerlingen in deze groep die toegewezen zijn aan deze" +
" ondersteuningsvorm worden ingedeeld in de basisondersteuning."
let sd ={
vormID : dit.id,
groepID: self.editGroep().id,
orgID: self.schoolid()
}
apprise(waarschuwing , {verify: true, textYes: 'ja', textNo:'nee'}, function(ans){
if (ans){
$.post("index.php/monpas/groepen/archiveerOS", sd, function(){
dit.archief(true);
dit.aantal(0);
});
};// if ans
});//apprise
},
fActivateOS : function(){
var self = ls.GroepenModel;
var dit = this;
let waarschuwing ="Weet u zeker dat u " + dit.naam() + " actief wilt maken?";
let sd ={
vormID : dit.id,
groepID: self.editGroep().id,
orgID: self.schoolid()
}
apprise(waarschuwing , {verify: true, textYes: 'ja', textNo:'nee'}, function(ans){
if (ans){
$.post("index.php/monpas/groepen/activeerOS", sd, function(){
dit.archief(false);
});
};// if ans
});//apprise
},
fDeleteOS : function(){
var self = ls.GroepenModel;
var dit = this;
apprise("Weet u zeker dat u " + dit.naam() + " wilt verwijderen? </br/> Alle leerlingen (in alle groepen) die toegewezen zijn aan deze" +
" ondersteuningsvorm worden ingedeeld in de basisondersteuning.", {verify: true, textYes: 'ja', textNo:'nee'}, function(ans){
let waarschuwing ="Weet u zeker dat u " + dit.naam() + " wilt verwijderen?";
if(parseInt(dit.aantal(), 10) > 0)waarschuwing = waarschuwing + "</br/> De leerlingen die toegewezen zijn aan deze ondersteuningsvorm worden ingedeeld in de basisondersteuning.";
apprise(waarschuwing, {verify: true, textYes: 'ja', textNo:'nee'}, function(ans){
if (ans){
$.post("index.php/monpas/groepen/deleteOS/" + dit.id, function(){
self.editGroep().ondersteuningsvormen.remove(dit);
});
};// if ans
}// if ans
});//apprise
},
fWijzigLeerkrachten : function(){
+22 -12
View File
@@ -106,11 +106,11 @@ ls.initBestemmingenModel = function(){
kalenderjaren : ko.observableArray([]),
selectedKalenderjaar : ko.observable(),
jaartoewijzing : ko.observable(),
erIsBudget : ko.observable(false),
erIsBudget : ko.observable(false),
uitgavetypes : ko.observableArray(),
basissoorten : ko.observableArray(),
extrasoorten : ko.observableArray(),
deelbudgetten : ko.observable(true),
opmerking : ko.observable(''),
jaarclosed : ko.observable(true),
bezig : ko.observable(false),
@@ -174,13 +174,16 @@ ls.initBestemmingenModel = function(){
var sd ={jaarnr:self.selectedKalenderjaar().jaarnr}
$.post("index.php/monfin2/bestemmingen/getBestemmingen ", sd, function(data) {
console.log(data, 'data')
if (data.jaartoewijzing) {
self.jaartoewijzing(data.jaartoewijzing);
self.deelbudgetten(self.jaartoewijzing().deelbudgetten === 'T');
}
else self.deelbudgetten
self.jaarclosed(data.jaarclosed);
self.fUpdateSubbedragen(function (){self.fGetUpdatedBestemmingen()}, data);
},'json')
},
@@ -452,16 +455,24 @@ ls.initBestemmingenModel = function(){
'bedrag': invoer
}
console.log(sd, 'bedrag')
$.post("index.php/monfin2/bestemmingen/updatebedrag", sd);
var sd2 = {
'id' : subtotID,
'bedrag': subtotaal
$.post("index.php/monfin2/bestemmingen/updatebedrag", sd, function(result){
if(result) {
var sd2 = {
'id': subtotID,
'bedrag': subtotaal
}
$.post("index.php/monfin2/bestemmingen/updatebedrag", sd2, function (ok) {
});
}
},'json',);
}
$.post("index.php/monfin2/bestemmingen/updatebedrag", sd2);
console.log(sd, 'regeltotaal')
},
@@ -526,7 +537,6 @@ ls.initBestemmingenModel = function(){
stuurMelding = false;
totaalgebudget = Number(totaalgebudget) + Number(s.uitgavetypes()[0].budget())
console.log(subbudget , 'subbudget bij wijzigen scholing')
}
break;
@@ -40,11 +40,16 @@ function fAddBedrag(p){
this.extra = ko.observable(p.extra);
if (this.extra() >=0) this.extra(p.extra / 100)
else this.extra(0);
this.deelbudgetten = ko.observable(p.deelbudgetten === "T");
this.vastgelegd = ko.observable(p.vastgelegd);
this.jaarclosed = ko.observable(true);
if (p.jaarclosed == "F"){this.jaarclosed(false); }
if (p.jaarclosed == "F"){
this.jaarclosed(false);
}
this.screenbasis = ko.computed(function(){
var ssom = String(this.basis());
@@ -144,6 +149,29 @@ ls.initMonfinBeheer2Model = function(){
}
});
},
fToggleDeelbudget: function(){
let vm = ls.MonfinBeheer2Model;
let dit = this;
dit.deelbudgetten(! dit.deelbudgetten());
let sd = {
id : dit.id,
orgid : vm.selectedOrg().id,
jaarnr : dit.jaarnr,
deelbudgetten: dit.deelbudgetten() ? "T" : "F",
}
$.post("index.php/monpas/monfinbeheer/savedeelbudget",sd,function(newid){
if (newid) dit.id = newid;
});
},
fMaakSubmitData :function(dit){
var self = ls.MonfinBeheer2Model;
var ssom;