//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('Voorlopig resultaat'); $na_bep_rep = string\concatenate('Voorlopig resultaat'); , $na_bepaald = string\concatenate('Definitief resultaat'); $na_bep_rep = string\concatenate('Definitief resultaat'); ); $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('', $na_dashb, ''); , ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort); $na_dashb_hom = string\concatenate('', $na_dashb, ''); ); $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('', $na_dashb, ''); , ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort); $na_dashb_med = string\concatenate('', $na_dashb, ''); ); $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('', $na_dashb, ''); $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=''); $na_dashboard_id = string\concatenate('dashboard_', $na_id); $na_dashboard = string\concatenate($na_dashboard, '' ); $na_dashboard = string\concatenate($na_dashboard, '', ''); $na_dashboard = string\concatenate($na_dashboard, '
'); // 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('