Huidige scripts in de NVKH database en beschrijvingen.

This commit is contained in:
2026-08-28 11:09:50 +02:00
parent 890fe546c8
commit 6326a0c8e1
39 changed files with 9686 additions and 0 deletions
@@ -0,0 +1,294 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialiseren
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_diploma_dt = record\attribute('Contact', $contact_id, 'vakopleidingDatumDiploma');
$na_dispensatie = record\attribute('Contact', $contact_id, 'dispensatie');
$na_regiocode = record\attribute('Contact', $contact_id, 'regiocode');
$na_regiocode_str = $na_regiocode;
$na_regiocode = toInt($na_regiocode); // regiocode numeriek maken
$na_diploma_jr = datetime\year($na_diploma_dt);
ifThen(!global\isset('nascholingsnorm-hash'),
$na_script = configGet('script-lees-nascholingsnorm-hash');
Exec($na_script);
);
$na_norm = global\get('nascholingsnorm-hash');
$na_id = '<none>';
$na_methode_1_tot_en_met = configGet('berekening-methode-1-tot-en-met');
$na_werkgroep_div = configGet('werkgroep-dagen-deel-factor');
$na_werkgroep_max = configGet('werkgroep-dagen-max');
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bereken de totalen dagen en dagenMedisch.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
ifThen(!$no_db_update,
$na_recs = record\fetchManyHash('Nascholingstotaal',
'id, dagen, dagenMedisch, dagenHomeopathie, dagenWerkgroep, handmatig, dagenVrijstelling, nascholingsnormId, startSurplus',
'createdAt', 'asc',
'contactId=', $contact_id,
'jaar=', $year
);
$na_nrecs = array\length($na_recs);
ifThenElse($na_nrecs > 0,
$na_rec = array\at($na_recs, 0);
$na_id = hash\get($na_rec, 'id');
$na_handmatig = hash\get($na_rec, 'handmatig');
$na_vrijstelling = hash\get($na_rec, 'dagenVrijstelling');
$na_start_surplus = hash\get($na_rec, 'startSurplus');
log('warning', 'Berekenen nascholingen voor jaar: ', $year, ', na_id = ', $na_id);
// Zolang de totalen handmatig zijn, wordt er niets berekend.
ifThenElse($na_handmatig,
$na_totaal_dagen = hash\get($na_rec, 'dagen');
$na_totaal_medisch = hash\get($na_rec, 'dagenMedisch');
$na_totaal_homeopathie = hash\get($na_rec, 'dagenHomeopathie');
$na_totaal_werkgroep = hash\get($na_rec, 'dagenWerkgroep');
log('warning', 'Handmatige nascholing, er wordt niets berekend');
log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie,
', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen);
,
// Totalen op 0, dit is een te berekenen nascholing
$na_totaal_dagen = 0;
$na_totaal_medisch = 0;
$na_totaal_homeopathie = 0;
$na_totaal_werkgroep = 0;
// De goedgekeurde handmatige en geaccrediteerde nascholingen
// kan nog steeds met methode 1.
$na_rows = record\fetchRelatedMany(
'Nascholingstotaal', $na_id, 'nascholingen1',
'jaar, dagen, dagenMedisch, dagenHomeopathie, status, name',
'jaar', 'asc',
'jaar=', $year
);
$na_i = 0;
$na_n = array\length($na_rows);
log('warning', '#nascholingen gerelateerd aan nascholingstotaal:', $na_n);
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$status = array\at($na_row, 4);
$name = array\at($na_row, 5);
log('warning', 'i = ', $na_i, ', status = ', $status);
ifThen($status != '-' && $status != 'afgekeurd',
$na_totaal_dagen = $na_totaal_dagen + array\at($na_row, 1);
$na_totaal_medisch = $na_totaal_medisch + array\at($na_row, 2);
$na_totaal_homeopathie = $na_totaal_homeopathie + array\at($na_row, 3);
log('warning', 'Dagen: hom:', $na_totaal_homeopathie, ', dagen: ', $na_totaal_dagen, ', medisch:', $na_totaal_medisch);
);
$na_i = $na_i + 1;
);
// Dan het aantal notulen voor de werkgroepen van dit contact voor het gegeven jaar
// Eerst kijken we of we al groter dan het grensjaar zitten.
// Dit is niet meer voor methode 1.
ifThen($year > $na_methode_1_tot_en_met,
// Nu kunnen we ons best doen.
// Haal de werkgroep lidmaatschappen op die geldig zijn voor dit jaar.
$na_today = datetime\now();
$na_werkgroepen_ids_1 = record\fetchRelatedManyHash('Contact', $contact_id,
'werkgroeplidmaatschappen',
'werkgroepId, datumVanaf',
'name', 'asc',
'lidmaatschapBeeindigd=', 0,
'jaarVanaf<=', $year,
);
$na_werkgroepen_ids_2 = record\fetchRelatedManyHash('Contact', $contact_id,
'werkgroeplidmaatschappen',
'werkgroepId, datumVanaf, datumTotEnMet',
'name', 'asc',
'lidmaatschapBeeindigd=', 1,
'jaarVanaf<=', $year,
'jaarTotEnMet>=', $year
);
// Oke, nu hebben we de werkgroep ids.
// En dan kijken naar het aantal verslagen over dit jaar.
// En afkappen op een maximaal aantal dagen.
$na_werkgroep_verslagen = 0;
$na_n = array\length($na_werkgroepen_ids_1);
log('warning', 'Werkgroepen die niet beëindigd zijn :', $na_n);
$na_i = 0;
while($na_i < $na_n,
// Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner einde dit jaar.
$na_row = array\at($na_werkgroepen_ids_1, $na_i);
$na_werkgroep_id = hash\get($na_row, 'werkgroepId');
$na_datumVanaf = hash\get($na_row, 'datumVanaf');
$na_year_begin = string\concatenate($year, '-01-01');
$na_end = string\concatenate($year, '-12-31');
ifThenElse($na_datumVanaf > $na_year_begin,
$na_begin = $na_datumVanaf,
$na_begin = $na_year_begin);
log('warning', 'werkgroepid = ', $na_werkgroep_id);
log('warning', 'datum vanaf: ', $na_begin, ', datum eind:', $na_end);
$na_count = record\countRel('Werkgroep', $na_werkgroep_id,
'werkgroepverslagen',
'datum>=', $na_begin,
'datum<=', $na_end
);
$na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count;
log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen);
$na_i = $na_i + 1;
);
// Oke en nu voor de jaren waarin er een einddatum is gezet.
$na_n = array\length($na_werkgroepen_ids_2);
log('warning', 'Werkgroepen met een einddatum:', $na_n);
$na_i = 0;
while($na_i < $na_n,
// Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner MIN(datumTotEnMet, einde dit jaar).
$na_row = array\at($na_werkgroepen_ids_2, $na_i);
$na_werkgroep_id = hash\get($na_row, 'werkgroepId');
$na_datumVanaf = hash\get($na_row, 'datumVanaf');
$na_year_begin = string\concatenate($year, '-01-01');
ifThenElse($na_datumVanaf > $na_year_begin,
$na_begin = $na_datumVanaf,
$na_begin = $na_year_begin);
$na_datumTotEnMet = hash\get($na_row, 'datumTotEnMet');
$na_year_end = string\concatenate($year, '-12-31');
ifThenElse($na_datumTotEnMet < $na_year_end,
$na_end = $na_datumTotEnMet,
$na_end = $na_year_end);
log('warning', 'werkgroepid = ', $na_werkgroep_id);
log('warning', 'datum vanaf: ', $na_begin, ', datum einde:', $na_end);
$na_count = record\countRel('Werkgroep', $na_werkgroep_id,
'werkgroepverslagen',
'datum>=', $na_begin,
'datum<=', $na_end
);
$na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count;
log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen);
$na_i = $na_i + 1;
);
log('warning', 'totaal aantal werkgroep verslagen voor ', $year, ' = ', $na_werkgroep_verslagen);
// Bereken de zooi.
$na_totaal_werkgroep = number\floor($na_werkgroep_verslagen / $na_werkgroep_div);
ifThen($na_totaal_werkgroep > $na_werkgroep_max, $na_totaal_werkgroep = $na_werkgroep_max);
);
);
,
log('error', 'Geen nascholingstotaal voor contact_id ', $contact_id, ' en jaar ', $year);
$na_totaal_dagen = 0;
$na_totaal_medisch = 0;
$na_vrijstelling = 0;
$na_totaal_homeopathie = 0;
$na_totaal_werkgroep = 0;
);
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bereken de norm & vrijstelling
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$norm_key = $year;
ifThen($na_regiocode == 8,
log('warning', 'Afwijkende norm key');
$norm_key = string\concatenate($year, '-', $na_regiocode_str);
);
log('warning', 'Regiocode=', $na_regiocode, ', str=', $na_regiocode_str, ', Norm key = ', $norm_key);
$na_dagen_norm_formeel = hash\get(hash\get($na_norm, $norm_key), 'dagen');
$na_medisch_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenMedisch');
$na_homeopathie_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenHomeopathie');
log('warning', 'nascholingsnorm: jaar: ', $year, ', dagen: ', $na_dagen_norm_formeel,
', medisch: ', $na_medisch_norm,
', homeopathie: ', $na_homeopathie_norm,
', start surplus: ', $na_start_surplus
);
// $na_vrijstelling is op zich al bekend, maar misschien is er nog dispensatie of registratie jaar
$na_registration = ($year <= $na_diploma_jr);
$na_examenjaar = false;
ifThenElse($na_dispensatie,
$na_vrijstelling = $na_dagen_norm_formeel;
,
ifThen($na_registration,
//$na_vrijstelling = $na_dagen_norm_formeel;
$na_dagen_norm_formeel = 0;
$na_medisch_norm = 0;
$na_homeopathie_norm = 0;
$na_examenjaar = true;
);
);
$na_dagen_norm = $na_dagen_norm_formeel - $na_vrijstelling;
// Het aantal start dagen surplus kan nooit de norm overschrijden.
// startSurplus wordt alleen bij het 2013 record gebruikt, m.a.w. voor mensen die daarvoor
// al lid waren. In alle andere gevallen is $na_start_surplus gelijk aan 0.
ifThen($na_start_surplus > $na_dagen_norm_formeel, $na_start_surplus = $na_dagen_norm_formeel);
log('warning', 'dispensatie=', $na_dispensatie, ', regjr=', $na_registration,
', norm=', $na_dagen_norm, ', start surplus=', $na_start_surplus);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bereken het saldo aan dagen
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie,
', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen);
$na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep;
$na_saldo = $na_totaal_alle_dagen - $na_dagen_norm;
$na_saldo = $na_saldo + $na_start_surplus;
$na_saldo_homeopathie = $na_totaal_homeopathie - $na_homeopathie_norm;
$na_saldo_medisch = $na_totaal_medisch - $na_medisch_norm;
log('warning', 'totaal alle:', $na_totaal_alle_dagen,
', saldo:', $na_saldo,
', saldo hom:', $na_saldo_homeopathie,
', saldo medisch:', $na_saldo_medisch);
log('warning', 'no db update = ', $no_db_update, ', na_id = ', $na_id);
log('warning', 'na_examenjaar = ', $na_examenjaar);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Nascholingstotaal updaten (alleen van belang als we niet al aan het updaten zijn!)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
ifThen(!$no_db_update && $na_id != '<none>',
log('warning', 'Updaten nascholingstotaal: ', $na_id, ' jaar=', $year);
$oke = record\update('Nascholingstotaal', $na_id,
'dagen', $na_totaal_dagen,
'dagenMedisch', $na_totaal_medisch,
'dagenHomeopathie', $na_totaal_homeopathie,
'dagenWerkgroep', $na_totaal_werkgroep,
'dagenTotaal', $na_totaal_alle_dagen,
'dagenSaldo', $na_saldo,
'homeopathieSaldo', $na_saldo_homeopathie,
'medischSaldo', $na_saldo_medisch,
'dagenFormeleNorm', $na_dagen_norm_formeel,
'medischFormeleNorm', $na_medisch_norm,
'homeopathieFormeleNorm', $na_homeopathie_norm,
'examenjaar', $na_examenjaar
);
ifThen(!$oke, log('error', 'Update ging niet goed!'));
);
@@ -0,0 +1,931 @@
//exec last execution: Fri Jan 20 2023 15:56:21 GMT+0100 (Midden-Europese standaardtijd)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialisatie
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
log('warning', 'Doorrekenen voor contact ', $contact_id);
$na_reg_dt = record\attribute('Contact', $contact_id, 'datumRegistratie');
$na_reg_jr = datetime\year($na_reg_dt);
$na_methode_1_max_jaar = configGet('berekening-methode-1-tot-en-met');
$na_methode_1_max_surplus = configGet('berekening-methode-1-max-surplus');
$na_style_rubric = configGet('nascholingstotaal-rapport-jaar-rubric-style');
$na_style_dagen = configGet('nascholingstotaal-rapport-jaar-dagen-style');
$na_style_dagen_inspr = configGet('nascholingstotaal-rapport-jaar-dagen-style-inspr');
$na_style_nstd_goed = configGet('nascholingstotaal-rapport-jaar-nstd-goed-style');
$na_style_nstd_goed_report = configGet('nascholingstotaal-rapport-jaar-nstd-goed-report-style');
$na_style_nstd_tekort = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-style');
$na_style_nstd_tekort_report = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-report-style');
$na_style_nstd_nvt = configGet('nascholingstotaal-rapport-jaar-nstd-nvt-style');
$na_style_bepaald = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-style');
$na_style_bepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-report-style');
$na_style_onbepaald = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-style');
$na_style_onbepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-report-style');
$na_style_kop = configGet('nascholingstotaal-rapport-jaar-kop-style');
$na_style_probleem = configGet('nascholingstotaal-rapport-probleem-style');
$na_style_waarschuwing = configGet('nascholingstotaal-rapport-waarschuwing-style');
$na_style_sub_rubric = configGet('nascholingstotaal-rapport-sub-rubriek-style');
$na_nascholing_onvoldoende = false;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Haal eerst alle nascholingstotalen voor een contact op, in volgorde van jaar.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_geen_status_vanaf_jaar = datetime\year(datetime\now()) - 1;
$na_in_calc_key = string\concatenate('nascholingstotalen-in-berekening-voor', $contact_id);
global\set($na_in_calc_key, true);
$na_rows = record\fetchManyHash('Nascholingstotaal',
'id, jaar, dagen, dagenMedisch, dagenHomeopathie, dagenTotaal, medischSaldo, homeopathieSaldo, dagenSaldo, saldoNaCorrectie, dagenWerkgroep, dagenVrijstelling, status, berekeningsUitleg, startSurplus, dagenFormeleNorm, homeopathieFormeleNorm, medischFormeleNorm, examenjaar, handmatig',
'jaar', 'asc',
'contactId=', $contact_id,
);
$h_surplus = hash\new();
$h_saldi = hash\new();
$h_verr = hash\new();
$h_surplus_med = hash\new();
$h_saldi_med = hash\new();
$h_verr_med = hash\new();
$h_surplus_hom = hash\new();
$h_saldi_hom = hash\new();
$h_verr_hom = hash\new();
$na_n = array\length($na_rows);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Sla alle saldi op
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
log('warning', 'Alle saldi opslaan');
$na_i = 0;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_saldo = hash\get($na_row, 'dagenSaldo');
$h_saldi = hash\set($h_saldi, $na_id, $na_saldo);
$h_verr = hash\set($h_verr, $na_id, '');
$na_saldo_med = hash\get($na_row, 'medischSaldo');
$h_saldi_med = hash\set($h_saldi_med, $na_id, $na_saldo_med);
$h_verr_med = hash\set($h_verr_med, $na_id, '');
$na_saldo_hom = hash\get($na_row, 'homeopathieSaldo');
$h_saldi_hom = hash\set($h_saldi_hom, $na_id, $na_saldo_hom);
$h_verr_hom = hash\set($h_verr_hom, $na_id, '');
$na_i = $na_i + 1;
);
log('warning', 'Oke, klaar');
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Pas de eenvoudige doorschuif methode toe t/m het gegeven jaar voor methode 1
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_jaar_max = -1;
$na_i = 0;
$na_surplus = 0;
while($na_i < $na_n && hash\get(array\at($na_rows, $na_i), 'jaar') <= $na_methode_1_max_jaar,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_jaar = hash\get($na_row, 'jaar');
ifThen($na_jaar > $na_jaar_max, $na_jaar_max = $na_jaar);
$na_verr = hash\get($h_verr, $na_id);
$na_saldo = hash\get($na_row, 'dagenSaldo');
$na_start_surplus = hash\get($na_row, 'startSurplus');
$na_saldo_med = hash\get($na_row, 'medischSaldo');
$na_saldo_hom = hash\get($na_row, 'homeopathieSaldo');
$na_examenjaar = hash\get($na_row, 'examenjaar');
$na_dg_totaal = hash\get($na_row, 'dagenTotaal');
$na_dg_med = hash\get($na_row, 'dagenMedisch');
$na_dg_hom = hash\get($na_row, 'dagenHomeopathie');
strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_totaal, 1), "]%%");
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm_tot = hash\get($na_row, 'dagenFormeleNorm');
strAdd($na_verr, "[TNorm:][N", number\format($na_norm_tot, 1), "]%%");
ifThen($na_examenjaar,
strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%");
);
$na_surplus_gemaximeerd = false;
$na_surplus_old = $na_surplus;
$na_surplus = $na_surplus + $na_saldo;
ifThen($na_surplus > $na_methode_1_max_surplus, $na_surplus = $na_methode_1_max_surplus; $na_surplus_gemaximeerd = true);
$na_surplus_med = $na_saldo_med;
$na_surplus_hom = $na_saldo_hom;
strAdd($na_verr, "[TSaldo dagen:][N", number\format($na_saldo, 1), "]%%");
ifThenElse($na_start_surplus != 0.0,
strAdd($na_verr, "[TResterend Saldo dagen uit voorgaande jaren:][N", number\format($na_start_surplus, 1), "]%%");
,
strAdd($na_verr, "[TResterend Saldo dagen van ", $na_jaar - 1, ":][N", number\format($na_surplus_old , 1), "]%%");
);
ifThen($na_surplus >= 0,
ifThen($na_surplus_gemaximeerd,
strAdd($na_verr, "[TResterend saldo dagen gemaximaliseerd op:][N", number\format($na_surplus, 1), "]%%");
);
);
$h_verr = Hash\Set($h_verr, $na_id, $na_verr);
/*ifThenElse($na_norm_med > 0,
$na_verr = hash\get($h_verr_med, $na_id);
strAdd($na_verr, '[TDagen gevolgd:][N', number\format($na_dg_med, 1), ']%%');
strAdd($na_verr, '[TNorm:][N', number\format($na_norm_med, 1), ']%%');
strAdd($na_verr, '[TSaldo dagen:][N', number\format($na_saldo_med, 1), ']%%');
$h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr);
,
$h_verr_med = Hash\Set($h_verr_med, $na_id, '');
);*/
$h_verr_hom = Hash\Set($h_verr_hom, $na_id, '');
$h_surplus = Hash\Set($h_surplus, $na_id, $na_surplus);
$h_surplus_med = Hash\Set($h_surplus_med, $na_id, $na_saldo_med);
$h_surplus_hom = Hash\Set($h_surplus_hom, $na_id, $na_saldo_hom);
log('warning', 'jaar=', $na_jaar, ', saldo=', $na_saldo, ', surplus=', $na_surplus);
$na_i = $na_i + 1;
);
log('warning', 'Door:', $na_i);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Nu wordt het moeilijker. Vanaf dit jaar moeten de drie saldi samen >= 0 zijn voor ieder opeenvolgend stel.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_ii = $na_i;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_jaar = hash\get($na_row, 'jaar');
// Normen bepalen
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm_tot = hash\get($na_row, 'dagenFormeleNorm');
$na_examenjaar = hash\get($na_row, 'examenjaar');
// Gevolgde dagen bepalen
$na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep');
$na_dg_vrij = hash\get($na_row, 'dagenVrijstelling');
$na_dg_totaal = hash\get($na_row, 'dagenTotaal');
$na_dg_hom = hash\get($na_row, 'dagenHomeopathie');
$na_dg_med = hash\get($na_row, 'dagenMedisch');
$na_dg_ovg = hash\get($na_row, 'dagen');
log('warning', 'na_jaar = ', $na_jaar, ' - na_dg_totaal = ', $na_dg_totaal);
$na_verr = hash\get($h_verr_hom, $na_id);
$saldo = hash\get($h_saldi_hom, $na_id);
strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_hom, 1), "]%%");
strAdd($na_verr, "[TNorm:][N", number\format($na_norm_hom, 1), "]%%");
ifThen($na_examenjaar,
strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%");
);
strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%");
$h_verr_hom = hash\set($h_verr_hom, $na_id, $na_verr);
$na_verr = hash\get($h_verr_med, $na_id);
$saldo = hash\get($h_saldi_med, $na_id);
strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_med, 1), "]%%");
strAdd($na_verr, "[TNorm:][N", number\format($na_norm_med, 1), "]%%");
ifThen($na_examenjaar,
strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%");
);
strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%");
$h_verr_med = hash\set($h_verr_med, $na_id, $na_verr);
$na_verr = hash\get($h_verr, $na_id);
$saldo = hash\get($h_saldi, $na_id);
strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_totaal, 1), "]%%");
strAdd($na_verr, "[IDagen voor klassieke homeopathie:I][NI", number\format($na_dg_hom, 1), "]%%");
strAdd($na_verr, "[IDagen voor medisch:I][NI", number\format($na_dg_med, 1), "]%%");
strAdd($na_verr, "[IDagen voor homeopathie overig:I][NI", number\format($na_dg_ovg, 1), "]%%");
strAdd($na_verr, "[IDagen voor werkgroep deelname:I][NI", number\format($na_dg_werkgroep, 1), "]%%");
ifThen($na_dg_vrij > 0,
strAdd($na_verr, "[TDagen vrijstelling:][N", number\format($na_dg_vrij, 1), "]%%");
);
strAdd($na_verr, "[TNorm:][N", number\format($na_norm_tot, 1), "]%%");
ifThen($na_examenjaar,
strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%");
);
strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%");
$h_verr = hash\set($h_verr, $na_id, $na_verr);
// En de volgende rij
$na_i = $na_i + 1;
);
$na_i = $na_ii;
while($na_i < $na_n,
$na_row_prev = null;
ifThen($na_i > 0, $na_row_prev = array\at($na_rows, $na_i - 1);$na_id_prev = hash\get($na_row_prev, 'id'););
$na_row_next = null;
ifThen($na_i < ($na_n - 1), $na_row_next = array\at($na_rows, $na_i + 1);$na_id_next = hash\get($na_row_next, 'id'););
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_jaar = hash\get($na_row, 'jaar');
ifThen($na_jaar > $na_jaar_max, $na_jaar_max = $na_jaar);
// Normen bepalen
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm_tot = hash\get($na_row, 'dagenFormeleNorm');
$na_examenjaar = hash\get($na_row, 'examenjaar');
// Gevolgde dagen bepalen
$na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep');
$na_dg_vrij = hash\get($na_row, 'dagenVrijstelling');
$na_dg_totaal = hash\get($na_row, 'dagenTotaal');
$na_dg_hom = hash\get($na_row, 'dagenHomeopathie');
$na_dg_med = hash\get($na_row, 'dagenMedisch');
$na_dg_ovg = hash\get($na_row, 'dagen');
// Check of je het voorgaande surplus en evt. het opvolgende saldo kunt gebruiken om
// te compenseren op het huidige saldo, indien dat noodzakelijk is.
// Als het huidige saldo negatief is, moet dit worden gecompenseerd vanuit het voorgaande surplus en/of het opvolgende saldo.
// Als je het negatieve saldo van medisch of van klassieke homeopathie ophoogt, dan
// hoog je daarmee ook het totaal aantal dagen op. Dus die correctie moet je dan ook bij het totaal toepassen.
// Let op. Het aantal dagen dat wordt gecompenseerd mag niet het totaal aantal dagen van de norm overschrijden.
// Dus, als het totaal aantal dagen 5 is en de norm is 4, dan kan ik maximaal 1 dag compenseren, ook al heb ik misschien
// van zowel medisch als homeopathie 1 dag over, dus in totaal 2 dagen.
$na_totaal_extra = 0;
// Eerst berekenen we de klassieke homeopathie.
// $h_saldi_hom, $h_surplus_hom, $h_verr_hom
log('warning', 'Berekenen Klassieke Homeopathie:');
ifThenElse($na_row_prev,
$prev_surplus = hash\get($h_surplus_hom, $na_id_prev);
$prev_surplus_tot = hash\get($h_surplus, $na_id_prev);
,
$prev_surplus = 0;
$prev_surplus_tot = 0;
);
ifThenElse($na_row_next,
$next_saldo = hash\get($h_saldi_hom, $na_id_next);
$next_saldo_tot = hash\get($h_saldi, $na_id_next);
,
$next_saldo = 0;
$next_saldo_tot = 0;
);
$saldo = hash\get($h_saldi_hom, $na_id);
$na_verr = hash\get($h_verr_hom, $na_id);
$na_surplus = $saldo;
// Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm.
ifThenElse($prev_surplus > 0 && $prev_surplus_tot > 0,
$na_verr_a = hash\get($h_verr_hom, $na_id_prev);
$na_verr_t = hash\get($h_verr, $na_id_prev);
$na_verr_tot = hash\get($h_verr, $na_id);
ifThenElse($prev_surplus > $prev_surplus_tot,
$max_compensatie = $prev_surplus_tot;
$na_uitleg_extra = " (totaal < kl. homeopathie)";
,
$max_compensatie = $prev_surplus;
$na_uitleg_extra = "";
);
$na_uitleg = string\concatenate("Aantal dagen surplus kl. homeopathie overgenomen uit ", toString($na_jaar - 1));
$na_uitleg_a = string\concatenate("Aantal dagen surplus kl. homeopathie doorgeschoven naar ", toString($na_jaar));
strAdd($na_uitleg, $na_uitleg_extra);
strAdd($na_uitleg_a, $na_uitleg_extra);
ifThen($max_compensatie > $na_norm_hom,
$max_compensatie = $na_norm_hom;
$na_norm_uitl = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_hom, 1));
strAdd($na_uitleg, $na_norm_uitl);
strAdd($na_uitleg_a, $na_norm_uitl);
);
strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_tot, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_t, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%");
$prev_surplus = $prev_surplus - $max_compensatie;
$prev_surplus_tot = $prev_surplus_tot - $max_compensatie;
$na_surplus = $na_surplus + $max_compensatie;
$na_totaal_extra = $na_totaal_extra + $max_compensatie;
$h_verr_hom = hash\set($h_verr_hom, $na_id_prev, $na_verr_a);
$h_verr = hash\set($h_verr, $na_id_prev, $na_verr_t);
$h_verr = hash\set($h_verr, $na_id, $na_verr_tot);
,
ifThen($prev_surplus > 0,
strAdd($na_verr, "[EHoewel het saldo kl. homeopathie dagen in ", toString($na_jaar - 1), " toereikend is",
", kan er niet doogeschoven worden, omdat het totaal saldo van ", toString($na_jaar - 1), " <= 0 isE]%%");
);
);
ifThenElse($na_surplus < 0,
// Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar.
$na_verr_a = hash\get($h_verr_hom, $na_id_next);
$na_verr_t = hash\get($h_verr, $na_id_next);
// Het huidig surplus klassieke homeopathie voldoet niet.
// Als er nu een huidig totaal surplus is, en het saldo klassieke homeopathie van het opvolgende jaar
// is voldoende en het totaal saldo van het opvolgende jaar + het totaal surplus van het huidige jaar is voldoende
// dan kan er nog wat.
ifThenElse($next_saldo > ($next_saldo_tot + $na_totaal_extra),
$max_compensatie = ($next_saldo_tot + $na_totaal_extra),
$max_compensatie = $next_saldo
);
ifThen($max_compensatie > 0,
ifThenElse(($max_compensatie + $na_surplus) >= 0,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%");
strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " klassieke homeopathie te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%");
$next_saldo = $next_saldo + $na_surplus;
$next_saldo_tot = $next_saldo_tot + $na_surplus;
$na_surplus = 0;
,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " klassieke homeopathie te compenseren:I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($max_compensatie, 1), "]%%");
$na_surplus = $na_surplus + $max_compensatie;
$next_saldo = $next_saldo - $max_compensatie;
$next_saldo_tot = $next_saldo_tot - $max_compensatie;
);
,
ifThen($next_saldo > ($next_saldo_tot + $na_totaal_extra) && $next_saldo > 0,
strAdd($na_verr, "[EHoewel het saldo kl. homeopathie dagen in ", toString($na_jaar + 1), " toereikend is",
", kan er niet gecompenseerd worden, omdat het totaal saldo van ", toString($na_jaar + 1), " <= 0 isE]%%");
);
);
$h_verr_hom = hash\set($h_verr_hom, $na_id_next, $na_verr_a);
$h_verr = hash\set($h_verr, $na_id_next, $na_verr_t);
);
// Nu de saldi opslaan en surplus opslaan
ifThen($na_row_prev,
$h_surplus_hom = hash\set($h_surplus_hom, $na_id_prev, $prev_surplus);
$h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus_tot);
);
ifThen($na_row_next,
$h_saldi_hom = hash\set($h_saldi_hom, $na_id_next, $next_saldo);
$h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo_tot);
);
$h_surplus_hom = Hash\Set($h_surplus_hom, $na_id, $na_surplus);
$h_verr_hom = Hash\Set($h_verr_hom, $na_id, $na_verr);
$na_end_hom = $na_surplus;
// Daarna berekenen we het medische gedeelte
// $h_saldi_med, $h_surplus_med, $h_verr_med
log('warning', 'Berekenen Medische Dagen:');
ifThenElse($na_row_prev,
$prev_surplus = hash\get($h_surplus_med, $na_id_prev);
$prev_surplus_tot = hash\get($h_surplus, $na_id_prev);
,
$prev_surplus = 0;
$prev_surplus_tot = 0;
);
ifThenElse($na_row_next,
$next_saldo = hash\get($h_saldi_med, $na_id_next);
$next_saldo_tot = hash\get($h_saldi, $na_id_next);
,
$next_saldo = 0;
$next_saldo_tot = 0;
);
$saldo = hash\get($h_saldi_med, $na_id);
$na_verr = hash\get($h_verr_med, $na_id);
$na_surplus = $saldo;
log('warning', 'jaar = ', $na_jaar, ' - surplus medisch = ', $na_surplus);
// Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm.
ifThenElse($prev_surplus > 0 && $prev_surplus_tot > 0,
$na_verr_a = hash\get($h_verr_med, $na_id_prev);
$na_verr_t = hash\get($h_verr, $na_id_prev);
$na_verr_tot = hash\get($h_verr, $na_id);
ifThenElse($prev_surplus > $prev_surplus_tot,
$max_compensatie = $prev_surplus_tot;
$na_uitleg_extra = " (totaal < medisch)";
,
$max_compensatie = $prev_surplus;
$na_uitleg_extra = "";
);
$na_uitleg = string\concatenate("Aantal dagen surplus medisch overgenomen uit ", toString($na_jaar - 1));
$na_uitleg_a = string\concatenate("Aantal dagen surplus medisch doorgeschoven naar ", toString($na_jaar));
strAdd($na_uitleg, $na_uitleg_extra);
strAdd($na_uitleg_a, $na_uitleg_extra);
ifThen($max_compensatie > $na_norm_med,
$max_compensatie = $na_norm_med;
$na_norm_uitl = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_med, 1));
strAdd($na_uitleg, $na_norm_uitl);
strAdd($na_uitleg_a, $na_norm_uitl);
);
strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_tot, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_t, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%");
$prev_surplus = $prev_surplus - $max_compensatie;
$prev_surplus_tot = $prev_surplus_tot - $max_compensatie;
$na_surplus = $na_surplus + $max_compensatie;
$na_totaal_extra = $na_totaal_extra + $max_compensatie;
$h_verr_med = hash\set($h_verr_med, $na_id_prev, $na_verr_a);
$h_verr = hash\set($h_verr, $na_id_prev, $na_verr_t);
$h_verr = hash\set($h_verr, $na_id, $na_verr_tot);
,
ifThen($prev_surplus > 0,
strAdd($na_verr, "[EHoewel het saldo medisch dagen in ", toString($na_jaar - 1), " toereikend is",
", kan er niet doorgeschoven worden, omdat het totaal saldo van ", toString($na_jaar - 1), " <= 0 isE]%%");
);
);
ifThen($na_surplus < 0,
// Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar.
$na_verr_a = hash\get($h_verr_med, $na_id_next);
$na_verr_t = hash\get($h_verr, $na_id_next);
ifThenElse($next_saldo > ($next_saldo_tot + $na_totaal_extra),
$max_compensatie = ($next_saldo_tot + $na_totaal_extra),
$max_compensatie = $next_saldo
);
strAdd($na_verr, "[Enext-saldo = ", $next_saldo, ", next-saldo-tot = ", $next_saldo_tot, ", max-compensatie = ", $max_compensatie, "E]%%");
strAdd($na_verr, "[Ena_totaal_extra = ", $na_totaal_extra, "E]%%");
ifThenElse($max_compensatie > 0,
ifThenElse(($max_compensatie + $na_surplus) >= 0,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%");
strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " medisch te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%");
$next_saldo = $next_saldo + $na_surplus;
$next_saldo_tot = $next_saldo_tot + $na_surplus;
$na_surplus = 0;
,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " medisch te compenseren:I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($max_compensatie, 1), "]%%");
$na_surplus = $na_surplus + $max_compensatie;
$next_saldo = $next_saldo - $max_compensatie;
$next_saldo_tot = $next_saldo_tot - $max_compensatie;
);
,
ifThen($next_saldo > ($next_saldo_tot + $na_totaal_extra) && $next_saldo > 0,
strAdd($na_verr, "[EHoewel het saldo medische dagen in ", toString($na_jaar + 1), " toereikend is",
", kan er niet gecompenseerd worden, omdat het totaal saldo van ", toString($na_jaar + 1), " <= 0 isE]%%");
);
);
$h_verr_med = hash\set($h_verr_med, $na_id_next, $na_verr_a);
$h_verr = hash\set($h_verr, $na_id_next, $na_verr_t);
);
// Nu de saldi opslaan en surplus opslaan
ifThen($na_row_prev,
$h_surplus_med = hash\set($h_surplus_med, $na_id_prev, $prev_surplus);
$h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus_tot);
);
ifThen($na_row_next,
$h_saldi_med = hash\set($h_saldi_med, $na_id_next, $next_saldo);
$h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo_tot);
);
log('warning', 'jaar = ', $na_jaar, ' - surplus medisch berekend = ', $na_surplus);
$h_surplus_med = Hash\Set($h_surplus_med, $na_id, $na_surplus);
$h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr);
$na_end_med = $na_surplus;
// En nu berekenen we het totaal. Dat is en blijft een lastige
// $h_saldi, $h_surplus, $h_verr
log('warning', 'Berekenen Totaal Dagen:');
ifThenElse($na_row_prev, $prev_surplus = hash\get($h_surplus, hash\get($na_row_prev, 'id')), $prev_surplus = 0);
ifThenElse($na_row_next, $next_saldo = hash\get($h_saldi, hash\get($na_row_next, 'id')), $next_saldo = 0);
$saldo = hash\get($h_saldi, $na_id);
$na_verr = hash\get($h_verr, $na_id);
$na_surplus = $saldo;
// Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm.
ifThen($prev_surplus > 0,
$na_verr_a = hash\get($h_verr, $na_id_prev);
$max_compensatie = $prev_surplus;
$na_uitleg = string\concatenate("Aantal aantal dagen surplus overgenomen uit ", toString($na_jaar - 1));
$na_uitleg_a = string\concatenate("Aantal dagen surplus doorgeschoven naar ", toString($na_jaar));
ifThen(($na_totaal_extra + $max_compensatie) > $na_norm_tot,
$max_compensatie = $na_norm_tot - $na_totaal_extra;
ifThenElse($na_totaal_extra > 0,
$norm_uitleg = string\concatenate(", incl. kl. hom. en medisch gemaximaliseerd op de norm van ", number\format($na_norm_tot, 1));
,
$norm_uitleg = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_tot, 1));
);
strAdd($na_uitleg, $norm_uitleg);
strAdd($na_uitleg_a, $norm_uitleg);
);
strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%");
strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%");
$prev_surplus = $prev_surplus - $max_compensatie;
$na_surplus = $na_surplus + $max_compensatie + $na_totaal_extra;
$h_verr = hash\set($h_verr, $na_id_prev, $na_verr_a);
);
ifThen($na_surplus < 0,
// Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar.
$na_verr_a = hash\get($h_verr, $na_id_next);
ifThen($next_saldo > 0,
ifThenElse(($next_saldo + $na_surplus) >= 0,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%");
$next_saldo = $next_saldo + $na_surplus;
$na_surplus = 0;
,
strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($next_saldo, 1), "]%%");
strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($next_saldo, 1), "]%%");
$na_surplus = $na_surplus + $next_saldo;
$next_saldo = 0;
);
);
$h_verr = hash\set($h_verr, $na_id_next, $na_verr_a);
);
// Nu de saldi opslaan en surplus opslaan
ifThen($na_row_prev, $h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus));
ifThen($na_row_next, $h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo));
$h_surplus = Hash\Set($h_surplus, $na_id, $na_surplus);
$h_verr = Hash\Set($h_verr, $na_id, $na_verr);
// En de volgende rij
$na_i = $na_i + 1;
);
// Het resterend saldo moet je voor alle jaren berekenen.
$na_i = 0;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_jaar = hash\get($na_row, 'jaar');
// Normen bepalen
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm_tot = hash\get($na_row, 'dagenFormeleNorm');
$na_examenjaar = hash\get($na_row, 'examenjaar');
// Surplus bepalen
$na_surplus_hom = hash\get($h_surplus_hom, $na_id);
$na_surplus_med = hash\get($h_surplus_med, $na_id);
$na_surplus = hash\get($h_surplus, $na_id);
ifThenElse($na_jaar > $na_methode_1_max_jaar,
$na_end_med = $na_surplus_med;
$na_end_hom = $na_surplus_hom;
,
$na_end_med = 0;
$na_end_hom = 0;
);
// Resultaten uitvoeren
$na_verr = hash\get($h_verr_hom, $na_id);
ifThen($na_jaar > $na_methode_1_max_jaar,
// Homeopathie
ifThen($na_norm_hom > 0,
ifThen($na_surplus_hom < 0,
ifThenElse($na_jaar == $na_jaar_max,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%");
,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%");
);
);
strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus_hom, 1), "]%%");
ifThenElse($na_surplus_hom < 0,
$na_verr = string\concatenate("[OKlassieke Homeopathie onvoldoendeO]%%", $na_verr);
,
$na_verr = string\concatenate("[VKlassieke Homeopathie voldoendeV]%%", $na_verr);
);
$h_verr_hom = Hash\Set($h_verr_hom, $na_id, $na_verr);
);
// Medisch
ifThen($na_norm_med > 0,
$na_verr = hash\get($h_verr_med, $na_id);
ifThen($na_surplus_med < 0,
ifThenElse($na_jaar == $na_jaar_max,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%");
,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%");
);
);
strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus_med, 1), "]%%");
ifThenElse($na_surplus_med < 0,
$na_verr = string\concatenate("[OMedisch onvoldoendeO]%%", $na_verr);
,
$na_verr = string\concatenate("[VMedisch voldoendeV]%%", $na_verr);
);
$h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr);
);
);
// Totalen
$na_verr = hash\get($h_verr, $na_id);
ifThen($na_surplus < 0,
ifThenElse($na_jaar == $na_jaar_max,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%");
,
strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%");
);
);
strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus, 1), "]%%");
ifThenElse($na_surplus < 0 || $na_end_med < 0 || $na_end_hom < 0,
$na_verr = string\concatenate("[OTotaal onvoldoendeO]%%", $na_verr);
ifThen($na_surplus >= 0.0,
ifThen($na_end_hom < 0 ,
strAdd($na_verr, "[WAantal dagen resterend tekort Klassieke Homeopathie:W][N", number\format(-1 * $na_end_hom, 1), "]%%");
);
ifThen($na_end_med < 0,
strAdd($na_verr, "[WAantal dagen resterend tekort Medisch:W][N", number\format(-1 * $na_end_med, 1), "]%%");
);
);
,
$na_verr = string\concatenate("[VTotaal voldoendeV]%%", $na_verr);
);
$h_verr = Hash\Set($h_verr, $na_id, $na_verr);
// En de volgende rij
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// En nu slaan we de boel gewoon op in de nascholingstotalen. Nou, was dat nou moeilijk?
// En bepaal en passent ook even de bijbehorende rapportage voor
// - Dashboard
// - Tekst
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_i = 0;
$na_jaar_voorlopig = $na_jaar_max - 2;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_jaar = hash\get($na_row, 'jaar');
// Normen bepalen
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm_tot = hash\get($na_row, 'dagenFormeleNorm');
$na_examenjaar = hash\get($na_row, 'examenjaar');
// Ophalen surplus waardes voor nascholingstotaal
$na_surplus = hash\get($h_surplus, $na_id);
$na_surplus_med = hash\get($h_surplus_med, $na_id);
$na_surplus_hom = hash\get($h_surplus_hom, $na_id);
// Ophalen totalen
$na_dg_hom = hash\get($na_row, 'dagenHomeopathie');
$na_dg_med = hash\get($na_row, 'dagenMedisch');
$na_dg_ovg = hash\get($na_row, 'dagen');
$na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep');
$na_dg_vrij = hash\get($na_row, 'dagenVrijstelling');
$na_saldo = hash\get($na_row, 'dagenSaldo');
$na_hand = hash\get($na_row, 'handmatig');
// Berekenen dashboard waarde op basis van de surplus waardes
$na_dashboard = "";
$na_onvoldoende = false;
$na_script = string\concatenate(
'$na_surpl_k = toInt($na_surpl * 1000);',
'$na_surpl_i = toInt($na_surpl) * 1000;',
'ifThenElse($na_surpl_k == $na_surpl_i, $na_surpl_pos = 0, $na_surpl_pos = 1);',
'ifThenElse($na_surpl_i == 1000, $na_dg = "dag", $na_dg = "dagen");',
'ifThenElse($na_surpl >= 0, $na_surpl_f = number\format($na_surpl, $na_surpl_pos), $na_surpl_f = number\format(-1 * $na_surpl, $na_surpl_pos));',
'ifThenElse($na_surpl >= 0, ',
' ifThenElse($na_onvoldoende, ',
' $na_dashb = string\concatenate($na_surpl_lbl, " onvoldoende");',
' $na_class = "tekort";',
' ,',
' ifThenElse($na_surpl_i == 0, ',
' $na_dashb = string\concatenate($na_surpl_lbl, " voldoende");',
' ,',
' $na_dashb = string\concatenate($na_surpl_lbl, " surplus: ", $na_surpl_f, " ", $na_dg);',
' );',
' $na_class = "goed";',
' );',
',',
' $na_dashb = string\concatenate($na_surpl_lbl, " tekort: ", $na_surpl_f, " ", $na_dg);',
' $na_class = "tekort";',
');',
);
//log('warning', 'na_jaar_voorlopig = ', $na_jaar_voorlopig, ', na_jaar = ', $na_jaar);
ifThenElse($na_jaar > $na_jaar_voorlopig,
$na_bepaald = string\concatenate('<span ', $na_style_onbepaald, '>Voorlopig resultaat</span>');
$na_bep_rep = string\concatenate('<span ', $na_style_onbepaald_report, '>Voorlopig resultaat</span>');
,
$na_bepaald = string\concatenate('<span ', $na_style_bepaald, '>Definitief resultaat</span>');
$na_bep_rep = string\concatenate('<span ', $na_style_bepaald_report, '>Definitief resultaat</span>');
);
$na_surpl = $na_surplus_hom;
$na_surpl_lbl = "Kl. Homeopathie";
Exec($na_script);
ifThenElse($na_jaar <= $na_methode_1_max_jaar,
$na_dashb_hom = string\concatenate('<span ', $na_style_nstd_nvt, '>', $na_dashb, '</span>');
,
ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort);
$na_dashb_hom = string\concatenate('<span ', $na_style, '>', $na_dashb, '</span>');
);
$na_dashboard = string\concatenate($na_dashboard, $na_dashb_hom);
$na_surpl = $na_surplus_med;
$na_surpl_lbl = "Medisch";
Exec($na_script);
ifThenElse($na_jaar <= $na_methode_1_max_jaar,
$na_dashb_med = string\concatenate('<span ', $na_style_nstd_nvt, '>', $na_dashb, '</span>');
,
ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort);
$na_dashb_med = string\concatenate('<span ', $na_style, '>', $na_dashb, '</span>');
);
$na_dashboard = string\concatenate($na_dashboard, $na_dashb_med);
ifThenElse($na_jaar > $na_methode_1_max_jaar,
$na_end_med = $na_surplus_med;
$na_end_hom = $na_surplus_hom;
,
$na_end_med = 0;
$na_end_hom = 0;
);
ifThen($na_end_med < 0 || $na_end_hom < 0,
$na_onvoldoende = true;
);
$na_surpl = $na_surplus;
$na_surpl_lbl = "Totaal";
Exec($na_script);
ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort);
$na_dashb = string\concatenate('<span ', $na_style, '>', $na_dashb, '</span>');
$na_dashboard = string\concatenate($na_dashboard, $na_dashb);
$na_dashboard = string\concatenate($na_bepaald, $na_dashboard);
$na_hand_check = ' ';
ifThen($na_hand, $na_hand_check='<span class="fa fa-check"></span>');
$na_dashboard_id = string\concatenate('dashboard_', $na_id);
$na_dashboard = string\concatenate($na_dashboard,
'<script>',
'function toggle_', $na_dashboard_id, '() {',
' var els = document.querySelectorAll(', "'", 'div[data-type="nt-dashboard"]', "'", ');',
' var el = els[0];',
' var toggle = (el.style.display == "none") ? "block" : "none";',
' els.forEach(function(el) { el.style.display = toggle; });',
' els = document.querySelectorAll(', "'", 'span[button-type="nt-dashboard"]', "'", ');',
' els.forEach(function(el) { ',
' if (toggle == "none") { el.classList.remove("fa-angle-up"); el.classList.add("fa-angle-down"); }',
' else { el.classList.remove("fa-angle-down"); el.classList.add("fa-angle-up"); }',
' });'
'}',
'</script>'
);
$na_dashboard = string\concatenate($na_dashboard,
'<span class="input-group-btn" button-type="nt-dashboard">',
'<button class="btn btn-default btn-icon" type="button" style="border-radius:5px;padding: 3px; margin-bottom:2px;height:unset;">',
'<span button-type="nt-dashboard" class="fas fa-angle-down" onclick="toggle_', $na_dashboard_id, '();"></span></button></span>');
$na_dashboard = string\concatenate($na_dashboard,
'<div class="dashboard-data" data-type="nt-dashboard" id="', $na_dashboard_id, '" style="display:none;">',
'<table>',
'<tr>',
'<th>Homeopathie</th>',
'<th>Medisch</th>',
'<th>Overig</th>',
'<th>Werkgroep</th>',
'<th>Vrijsttelling</th>',
'<th>Norm totaal</th>',
'<th>Dagen saldo</th>',
'<th>Surplus</th>',
'<th><i class="fa fa-pen"></i></th>',
'</tr><tr>',
'<td>', $na_dg_hom, '</td>',
'<td>', $na_dg_med, '</td>',
'<td>', $na_dg_ovg, '</td>',
'<td>', $na_dg_werkgroep,'</td>',
'<td>', $na_dg_vrij,'</td>',
'<td>', $na_norm_tot, '</td>',
'<td>', $na_saldo,'</td>',
'<td>', $na_surplus, '</td>',
'<td>', $na_hand_check, '</td>',
'</tr>',
'</table>',
'</div>');
// Maak nu een rapport over de getallen. Kijk hoe het is bepaald.
//dagen, dagenMedisch, dagenHomeopathie
// Maak rapport op
$na_report = configGet('nascholingstotaal-rapport-jaar');
$na_report = string\replace($na_report, '%jaar%', toString($na_jaar));
$na_report = string\replace($na_report, '%bepaald%', $na_bep_rep);
$na_verr_hom = hash\get($h_verr_hom, $na_id);
$na_verr_med = hash\get($h_verr_med, $na_id);
$na_verr_tot = hash\get($h_verr, $na_id);
$na_report = string\replace($na_report, '%hom%', $na_verr_hom);
$na_report = string\replace($na_report, '%med%', $na_verr_med);
$na_report = string\replace($na_report, '%tot%', $na_verr_tot);
$na_report = string\replace($na_report, '[T', string\concatenate('<td ', $na_style_rubric, '>'));
$na_report = string\replace($na_report, '[S', '<td colspan="2">');
$na_report = string\replace($na_report, '[NI', string\concatenate('<td ', $na_style_dagen_inspr, '>'));
$na_report = string\replace($na_report, '[N', string\concatenate('<td ', $na_style_dagen, '>'));
$na_report = string\replace($na_report, '[V', string\concatenate('<td colspan="2" ', $na_style_kop, '><span ', $na_style_nstd_goed_report, '>'));
$na_report = string\replace($na_report, '[O', string\concatenate('<td colspan="2" ', $na_style_kop, '><span ', $na_style_nstd_tekort_report, '>'));
$na_report = string\replace($na_report, '[E', string\concatenate('<td colspan="2" ', $na_style_rubric, '><span ', $na_style_probleem, '>'));
$na_report = string\replace($na_report, '[W', string\concatenate('<td ', $na_style_rubric, '><span ', $na_style_waarschuwing, '>'));
$na_report = string\replace($na_report, '[I', string\concatenate('<td ', $na_style_rubric, '><span ', $na_style_sub_rubric, '>'));
$na_report = string\replace($na_report, '[R', string\concatenate('<td colspan="2" ', $na_style_rubric, '><span ', $na_style_sub_rubric, '>'));
$na_report = string\replace($na_report, "O]", "</span></td>");
$na_report = string\replace($na_report, "V]", "</span></td>");
$na_report = string\replace($na_report, "E]", "</span></td>");
$na_report = string\replace($na_report, "W]", "</span></td>");
$na_report = string\replace($na_report, "I]", "</span></td>");
$na_report = string\replace($na_report, "R]", "</span></td>");
$na_report = string\replace($na_report, "]", "</td>");
$na_report = string\replace($na_report, '%%', '</tr><tr>\n');
log('warning', 'Updating record voor jaar:', $na_jaar);
// Updaten van record
record\update('Nascholingstotaal', $na_id,
'surplus', $na_surplus,
'surplusMedisch', $na_surplus_med,
'surplusHomeopathie', $na_surplus_hom,
'dashboard', $na_dashboard,
'berekeningsuitleg', $na_report
);
log('warning', 'record updated, increasing na_i:', $na_i, ' with 1');
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Klaar.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
global\unset($na_in_calc_key, true);
@@ -0,0 +1,32 @@
//exec last execution: Mon Jul 13 2020 17:57:38 GMT+0200 (Midden-Europese zomertijd)
$sln_rows = record\fetchManyHash('Nascholingsnorm', 'id, jaar, dagen, dagenMedisch, dagenHomeopathie, regiocode', 'createdAt', 'asc');
$sln_i = 0;
$sln_n = array\length($sln_rows);
$sln_hash = hash\new();
$sln_hash_id = hash\new();
while($sln_i < $sln_n,
$sln_row = array\at($sln_rows, $sln_i);
$jaar = hash\get($sln_row, 'jaar');
$id = hash\get($sln_row, 'id');
$regiocode = hash\get($sln_row, 'regiocode');
$jaar = $jaar + 0;
$key = $jaar;
ifThen($regiocode != '-',
$key = string\concatenate($jaar, '-', $regiocode);
);
$sln_hash = hash\set($sln_hash, $key, $sln_row);
$sln_hash_id = hash\set($sln_hash_id, $id, $sln_row);
$sln_i = $sln_i + 1;
);
global\set('nascholingsnorm-hash', $sln_hash);
global\set('nascholingsnorm-hash-by-id', $sln_hash_id);
logAdd(log, '#nascholingsnormen gelezen: ', $sln_n);