/////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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 = ''; $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 != '', 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!')); );