scripts added

This commit is contained in:
2026-08-28 12:28:39 +02:00
parent 45e62fda5f
commit c30efbc8d9
237 changed files with 7310 additions and 1 deletions
@@ -0,0 +1,35 @@
Berekent een nascholingstotaal voor een contact $contact_id en voor jaar $year.
Indien global\get('nascholingstotalen-niet-herberekenen') gezet is, zal een opgeslagen Nascholingstotaal niet tot herberekening leiden. NB. Dit gebeurt als formule bij 'Nascholingstotaal' (afterSave).
Indien $no_db_update == true, dan worden de resultaten niet opgeslagen bij het betreffende Nascholingstotaal en kunnen alleen de uitgangsvariabelen worden gebruikt. Het script dient dan gestart te worden met $na_totaal_dagen, $na_totaal_medisch, $na_vrijstelling en $na_handmatig.
Voor het gegeven Lid:
- $na_reg_jr - jaar van registratie van het gegven contact.
- $na_dispensatie - of er dispensatie is in algemene zin voor het lid (niet jaar gebonden).
De totalen en saldi:
- $na_totaal_dagen - het totaal aantal overige dagen,
- $na_totaal_medisch - het totaal aantal gevolgde medische dagen,
- $na_totaal_homeopathie - het totaal aantal gevolgde dagen klassieke homeopathie,
- $na_totaal_werkgroep - het totaal aantal dagen voor werkgroepverslagen (max 2),
- $na_saldo - het saldo na aftrek van $na_dagen_norm,
- $na_medisch_saldo - het saldo na aftrek van $na_medisch_norm,
- $na_homeopathie_saldo - het saldo na aftrek van $na_homeopathie_norm,
- $na_vrijstelling - het aantal geregistreerde vrijstellingsdagen voor de het gegeven jaar of, als dispensatie of als $year = jaar van registratie: = $na_dagen_norm_formeel.
De normen:
- $na_dagen_norm - $na_dagen_norm_formeel - $na_vrijstelling
- $na_dagen_norm_formeel - het formele totaal aantal dagen te volgen nascholing voor het gegeven jaar $year
- $na_medisch_norm - het formeel aantal te volgen medische dagen voor het gegeven jaar $year
- $na_homeopathie_norm - het formeel aantal te volgen dagen klassieke homeopathie voor het gegeven jaar $year
zijn daarna beschikbaar.
Berekent het totaal aantal dagen homeopathie, dagen medisch, norm dagen, formele norm dagen en saldo dagen aan de hand van de geregistreerde nascholingen, tenzij het betrokken nascholingstotaal record op handmatig staat.
@@ -0,0 +1 @@
5fca5189ec16d65c8
@@ -0,0 +1,275 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialiseren
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_reg_dt = record\attribute('Contact', $contact_id, 'datumRegistratie');
$na_dispensatie = record\attribute('Contact', $contact_id, 'dispensatie');
$na_reg_jr = datetime\year($na_reg_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, handmatig, dagenVrijstelling, nascholingsnormId',
'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');
// 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');
,
// Totalen op 0
$na_totaal_dagen = 0;
$na_totaal_medisch = 0;
$na_totaal_homeopathie = 0;
$na_totaal_werkgroep = 0;
// Eerst de geaccrediteerde nascholingen voor zover van toepassing
// kan nog steeds met methode 1.
$na_rows = record\fetchRelatedMany(
'Contact', $contact_id, 'nascholingen',
'jaar, aantalDagen, aantalDagenMedisch, dagenHomeopathie',
'jaar', 'asc',
'jaar=', $year
);
$na_i = 0;
$na_n = array\length($na_rows);
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$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);
$na_i = $na_i + 1;
);
// Dan de goedgekeurde handmatige nascholingen
// kan nog steeds met methode 1.
$na_rows = record\fetchRelatedMany(
'Contact', $contact_id, 'handmatigeNascholingen',
'jaar, dagen, dagenMedisch, dagenHomeopathie, status',
'jaar', 'asc',
'jaar=', $year
);
$na_i = 0;
$na_n = array\length($na_rows);
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$status = array\at($na_row, 4);
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 vermeerderd: ', $na_totaal_dagen, ', en ', $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_verlagen = 0;
$na_i = 0;
$na_n = array\length($na_werkgroepen_ids_1);
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, ' datumVanaf:', $na_datumVanaf, ' year begin:', $na_year_begin);
$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', 'count=', $na_count);
$na_i = $na_i + 1;
);
// Oke en nu voor de jaren waarin er een einddatum is gezet.
$na_i = 0;
$na_n = array\length($na_werkgroepen_ids_2);
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, ' datumVanaf:', $na_datumVanaf, ' year begin:', $na_year_begin);
log('warning', 'datum t/m: ', $na_end, ' datumT/M:', $na_datumTotEnMet, ' year end:', $na_year_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', 'count=', $na_count);
$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_totaal_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
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_dagen_norm_formeel = hash\get(hash\get($na_norm, $year), 'dagen');
$na_medisch_norm = hash\get(hash\get($na_norm, $year), 'dagenMedisch');
$na_homeopathie_norm = hash\get(hash\get($na_norm, $year), 'dagenHomeopathie');
log('warning', 'nascholingsnorm: jaar: ', $year, ', dagen: ', $na_dagen_norm_formeel,
', medisch: ', $na_medisch_norm,
', homeopathie: ', $na_homeopathie_norm
);
// $na_vrijstelling is op zich al bekend, maar misschien is er nog dispensatie of registratie jaar
$na_registration = ($year <= $na_reg_jr);
ifThenElse($na_dispensatie,
$na_vrijstelling = $na_dagen_norm_formeel;
,
ifThen($na_registration,
$na_vrijstelling = $na_dagen_norm_formeel;
);
);
$na_dagen_norm = $na_dagen_norm_formeel - $na_vrijstelling;
log('warning', 'dispensatie=', $na_dispensatie, ', regjr=', $na_registration, ', norm=', $na_dagen_norm);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bereken het saldo aan dagen
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie;
$na_saldo = $na_totaal_alle_dagen - $na_dagen_norm;
$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);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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
);
ifThen(!$oke, log('error', 'Update ging niet goed!'));
);
@@ -0,0 +1 @@
2020-12-04 - script-bereken-nascholingstotaal-voor-jaar
@@ -0,0 +1,40 @@
Berekent een nascholingstotaal voor een contact **$contact_id** en voor jaar **$year**.
Indien global\get('nascholingstotalen-niet-herberekenen') gezet is, zal een opgeslagen Nascholingstotaal niet tot herberekening leiden. NB. Dit gebeurt als formule bij 'Nascholingstotaal' (afterSave).
Indien $no_db_update == true, dan worden de resultaten niet opgeslagen bij het betreffende Nascholingstotaal en kunnen alleen de uitgangsvariabelen worden gebruikt. Het script dient dan gestart te worden met $na_totaal_dagen, $na_totaal_medisch, $na_vrijstelling, $na_start_surplus, $na_totaal_werkgroep en $na_handmatig.
Voor het gegeven Lid:
- $na_diploma_jr - jaar van diploma van het gegeven contact. In het jaar van afstuderen geldt geen normering.
- $na_dispensatie - of er dispensatie is in algemene zin voor het lid (niet jaar gebonden).
- $na_id - het id van het nascholingstotaal record (<none>, als die er niet is).
De totalen en saldi:
- $na_totaal_dagen - het totaal aantal overige dagen,
- $na_totaal_medisch - het totaal aantal gevolgde medische dagen,
- $na_totaal_homeopathie - het totaal aantal gevolgde dagen klassieke homeopathie,
- $na_totaal_werkgroep - het totaal aantal dagen voor werkgroepverslagen (max 2),
- $na_saldo - het saldo na aftrek van $na_dagen_norm,
- $na_medisch_saldo - het saldo na aftrek van $na_medisch_norm,
- $na_homeopathie_saldo - het saldo na aftrek van $na_homeopathie_norm,
- $na_vrijstelling - het aantal geregistreerde vrijstellingsdagen voor de het gegeven jaar of, als dispensatie of als $year = jaar van afstuderen: = $na_dagen_norm_formeel.
Examenjaar
- $na_examenjaar - true als het jaar voor het examenjaar ligt of gelijk is daaraan.
De normen:
- $na_dagen_norm - $na_dagen_norm_formeel - $na_vrijstelling
- $na_dagen_norm_formeel - het formele totaal aantal dagen te volgen nascholing voor het gegeven jaar $year
- $na_medisch_norm - het formeel aantal te volgen medische dagen voor het gegeven jaar $year
- $na_homeopathie_norm - het formeel aantal te volgen dagen klassieke homeopathie voor het gegeven jaar $year
- $na_meeneem_norm - het maximaal aantal mee te nemen dagen voor het gegeven jaar $year
zijn daarna beschikbaar.
Berekent het totaal aantal dagen homeopathie, dagen medisch, norm dagen, formele norm dagen en saldo dagen aan de hand van de geregistreerde nascholingen, tenzij het betrokken nascholingstotaal record op handmatig staat.
@@ -0,0 +1 @@
5efb0f592364cb273
@@ -0,0 +1,347 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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');
$na_current_norm_id = hash\get($na_rec, 'nascholingsnormId');
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');
$na_max_meenemen = hash\get(hash\get($na_norm, $norm_key), 'meeneemNorm');
$na_norm_id = hash\get(hash\get($na_norm, $norm_key), 'id');
$na_norm_name = hash\get(hash\get($na_norm, $norm_key), 'name');
log('warning', 'nascholingsnorm: jaar: ', $year, ', dagen: ', $na_dagen_norm_formeel,
', medisch: ', $na_medisch_norm,
', homeopathie: ', $na_homeopathie_norm,
', max meenemen: ', $na_max_meenemen,
', start surplus: ', $na_start_surplus,
', norm_id:', $na_norm_id,
', norm_name:', $na_norm_name
);
//
// $na_vrijstelling is op zich al bekend, maar misschien is er nog dispensatie of registratie jaar
// $na_vrijstelling = MIN($na_vrijstelling, $na_dagen_norm_formeel $na_homeopahie_norm $na_medisch_norm)
//
$na_registration = ($year <= $na_diploma_jr);
$na_examenjaar = false;
ifThenElse($year <= $na_methode_1_tot_en_met,
$na_max_vrijstelling = $na_dagen_norm_formeel;
,
$na_max_vrijstelling = $na_dagen_norm_formeel - $na_homeopathie_norm - $na_medisch_norm;
);
ifThen($na_vrijstelling > $na_max_vrijstelling, $na_vrijstelling = $na_max_vrijstelling);
ifThenElse($na_dispensatie,
$na_vrijstelling = $na_max_vrijstelling;
,
ifThen($na_registration,
$na_dagen_norm_formeel = 0;
$na_medisch_norm = 0;
$na_homeopathie_norm = 0;
$na_examenjaar = true;
);
);
$na_dagen_norm = $na_dagen_norm_formeel;
// 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, ', dagen vrijstelling=', $na_vrijstelling, ', max vrijstelling=', $na_max_vrijstelling);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bereken het saldo aan dagen
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie,
', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen);
log('warning', 'year=', $year, ', na_methode_1_tot_en_met=', $na_methode_1_tot_en_met);
/*
ifThenElse($year < $na_methode_1_tot_en_met,
$na_totaal_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling;
$na_totaal_alle_dagen = $na_totaal_homeopathie;
,
ifThenElse($year == $na_methode_1_tot_en_met,
$na_totaal_homeopathie = $na_totaal_homemopathie + $na_start_surplus + $na_vrijstelling;
$na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep;
,
$na_totaal_homeopathie = $na_totaal_homeopathie + $na_start_surplus;
$na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep + $na_vrijstelling;
);
);
*/
ifThenElse($year < $na_methode_1_tot_en_met,
$na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling;
$na_saldo = $na_saldo_homeopathie;
$na_totaal_alle_dagen = $na_saldo_homemopathie;
,
ifThenElse($year == $na_methode_1_tot_en_met,
$na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling;
$na_saldo = $na_saldo_homeopathie + $na_totaal_medisch;
$na_totaal_alle_dagen = $na_saldo;
,
$na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus;
$na_saldo = $na_saldo_homeopathie + $na_totaal_medisch + $na_totaal_dagen + $na_vrijstelling + $na_totaal_werkgroep;
$na_totaal_alle_dagen = $na_saldo;
);
);
$na_saldo_homeopathie = $na_saldo_homeopathie - $na_homeopathie_norm;
$na_saldo = $na_saldo - $na_dagen_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>',
// Updaten van het record leidt tot herberekening
// Het relateren van de nascholingsnorm gebeurt bij de record herberekening.
// Dus dat moeten we hier niet willen doen...
// Updaten van het record leidt tot herberekening, dus we moeten even oppassen.
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,
'maxMeenemen', $na_max_meenemen,
'examenjaar', $na_examenjaar
);
ifThen(!$oke, log('error', 'Update ging niet goed!'));
);
@@ -0,0 +1 @@
script-bereken-nascholingstotaal-voor-jaar
@@ -0,0 +1,7 @@
Verwachte parameters:
- $contact_id bevat het id van het contact
Herberekent de nascholingstotalen voor een gegeven contact en update de betrokken records, indien dat nodig is.
Preconditie is dat voor alle Nascholingstotaal records van het contact al de individuele berekening is gebeurd. Dus de saldi zijn al berekend.
@@ -0,0 +1 @@
5efa39d03a099006b
@@ -0,0 +1,948 @@
//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_dagen_inspr2 = configGet('nascholingstotaal-rapport-jaar-dagen-style-inspr2');
$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_style_sub2_rubric = configGet('nascholingstotaal-rapport-sub2-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, maxMeenemen, examenjaar, handmatig, surplus, surplusHomeopathie, surplusMedisch',
'jaar', 'asc',
'contactId=', $contact_id,
);
$na_n = array\length($na_rows);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialiseer om te beginnen alle surplussen op de saldo's van een jaar.
// Daarna gaan we de zaak verdelen.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_i = 0;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_jaar = hash\get($na_row, 'jaar');
$na_calc_tot = hash\get($na_row, 'dagenSaldo');
$na_calc_med = hash\get($na_row, 'medischSaldo');
$na_calc_hom = hash\get($na_row, 'homeopathieSaldo');
$na_row = hash\set($na_row, 'surplus', $na_calc_tot);
$na_row = hash\set($na_row, 'surplusMedisch', $na_calc_med);
$na_row = hash\set($na_row, 'surplusHomeopathie', $na_calc_hom);
$na_row = hash\set($na_row, 'meegenomen', 0);
$na_row = hash\set($na_row, 'meegenomen_hom', 0);
$na_row = hash\set($na_row, 'meegenomen_med', 0);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar', 0);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_hom', 0);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_med', 0);
$na_row = hash\set($na_row, 'tekort', $na_calc_tot);
$na_row = hash\set($na_row, 'tekort_hom', $na_calc_hom);
$na_row = hash\set($na_row, 'tekort_med', $na_calc_med);
$na_row = hash\set($na_row, 'tekort_aangevuld_vanuit', '');
$na_row = hash\set($na_row, 'tekort_aangevuld_naar', '');
$na_row = hash\set($na_row, 'correctie_aangevuld_vanuit', 0);
$na_row = hash\set($na_row, 'correctie_aangevuld_naar', 0);
$na_uitleg = '';
$na_uitleg_hom = '';
$na_uitleg_med = '';
$na_dagen_hom = hash\get($na_row, 'dagenHomeopathie');
$na_dagen_med = hash\get($na_row, 'dagenMedisch');
$na_dagen = hash\get($na_row, 'dagenTotaal');
$na_vrijstelling = hash\get($na_row, 'dagenVrijstelling');
$na_werkgroep = hash\get($na_row, 'dagenWerkgroep');
$na_overig = hash\get($na_row, 'dagen');
$na_start_surplus = hash\get($na_row, 'startSurplus');
strAdd($na_uitleg_hom, '[IDagen gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%');
ifThen($na_jaar == $na_methode_1_max_jaar,
strAdd($na_uitleg_med, '[IDagen gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%');
);
ifThenElse($na_jaar > $na_methode_1_max_jaar,
strAdd($na_uitleg_med, '[IDagen gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%');
ifThen($na_start_surplus > 0,
strAdd($na_uitleg, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%');
strAdd($na_uitleg_hom, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%');
);
strAdd($na_uitleg, '[IDagen Klassieke Homeopathie gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%');
strAdd($na_uitleg, '[IDagen Medisch gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%');
strAdd($na_uitleg, '[IDagen Overig gevolgd :I][NI', number\format($na_overig, 2), ']%%');
strAdd($na_uitleg, '[IDagen Werkgroep :I][NI', number\format($na_werkgroep, 2), ']%%');
ifThen($na_vrijstelling > 0,
strAdd($na_uitleg, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%');
);
strAdd($na_uitleg, '[TNascholingsdagen :I][N', number\format($na_dagen, 2), ']%%');
,
strAdd($na_uitleg, '[IDagen Klassieke Homeopathie gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%');
ifThen($na_start_surplus > 0,
strAdd($na_uitleg, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%');
strAdd($na_uitleg_hom, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%');
);
ifThen($na_jaar == $na_methode_1_max_jaar,
strAdd($na_uitleg, '[IDagen Medisch gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%');
);
ifThen($na_vrijstelling > 0,
strAdd($na_uitleg, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%');
strAdd($na_uitleg_hom, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%');
);
);
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm = hash\get($na_row, 'dagenFormeleNorm');
strAdd($na_uitleg_hom, '[INorm Homeopathie :I][NI', number\format($na_norm_hom, 2), ']%%');
ifThenElse($na_jaar > $na_methode_1_max_jaar,
strAdd($na_uitleg_med, '[INorm Medisch :I][NI', number\format($na_norm_med, 2), ']%%');
strAdd($na_uitleg, '[INorm Nascholingsdagen :I][NI', number\format($na_norm, 2), ']%%');
,
strAdd($na_uitleg, '[INorm Nascholingsdagen :I][NI', number\format($na_norm, 2), ']%%');
);
strAdd($na_uitleg_hom, '[TSaldo :I][N', number\format($na_calc_hom, 2), ']%%');
ifThenElse($na_jaar >= $na_methode_1_max_jaar,
strAdd($na_uitleg_med, '[TSaldo :I][N', number\format($na_calc_med, 2), ']%%');
strAdd($na_uitleg, '[TSaldo :I][N', number\format($na_calc_tot, 2), ']%%');
,
strAdd($na_uitleg, '[TSaldo :I][N', number\format($na_calc_tot, 2), ']%%');
);
$na_row = hash\set($na_row, 'uitleg', $na_uitleg);
$na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom);
$na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med);
$na_rows = array\set($na_rows, $na_i, $na_row);
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Pas de doorschuif berekening toe.
// Behalve dan dat we maximaal de norm aan dagen meenemen naar het volgende jaar.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_j_first_hom = 0;
$na_j_first_med = 0;
$na_j_first_tot = 0;
$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');
log('warning', 'na_i=', $na_i, ', id=', $na_id, ', jaar=', $na_jaar);
$na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm');
$na_norm_med = hash\get($na_row, 'medischFormeleNorm');
$na_norm = hash\get($na_row, 'dagenFormeleNorm');
$na_calc_tot = hash\get($na_row, 'surplus');
$na_calc_med = hash\get($na_row, 'surplusMedisch');
$na_calc_hom = hash\get($na_row, 'surplusHomeopathie');
$na_uitleg = hash\get($na_row, 'uitleg');
$na_uitleg_hom = hash\get($na_row, 'uitleg_hom');
$na_uitleg_med = hash\get($na_row, 'uitleg_med');
$na_tekort_aangevuld_naar = hash\get($na_row, 'tekort_aangevuld_naar');
$na_correctie_aangevuld_naar = hash\get($na_row, 'correctie_aangevuld_naar');
$na_tekort = hash\get($na_row, 'tekort');
$na_tekort_hom = hash\get($na_row, 'tekort_hom');
$na_tekort_med = hash\get($na_row, 'tekort_med');
$na_correctie_uit_opvolgend_jaar = hash\get($na_row, 'correctie_uit_opvolgend_jaar');
$na_correctie_uit_opvolgend_jaar_hom = hash\get($na_row, 'correctie_uit_opvolgend_jaar_hom');
$na_correctie_uit_opvolgend_jaar_med = hash\get($na_row, 'correctie_uit_opvolgend_jaar_med');
$na_jaar = hash\get($na_row, 'jaar');
$na_max_meenemen = hash\get($na_row, 'maxMeenemen');
log('warning', 'na_max_meenemen=', $na_max_meenemen);
$do_adding = true;
ifThenElse($na_i == 0,
log('warning', '1e jaar');
log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot);
$na_j_first_hom = 0;
$na_j_first_med = 0;
$na_j_first_tot = 0;
,
// Check of het saldo van dagen > 0 voor homeopathie, medisch en totaal.
// Zorg dat dat eerst verdeeld wordt naar de voorgaande saldi van jaren.
log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot);
$na_lowest_j = $na_i;
log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot);
// Medisch negatieve correcties
// Alleen als er voldoende surplus is om te compenseren.
// We kijken dan niet naar het totaal, want daar ontstaat dan
// vanzelf een verder tekort als dat aan de orde is.
ifThen(($na_calc_med + $na_norm_med) > 0,
$na_j = $na_j_first_med;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_med_j = hash\get($na_row_j, 'surplusMedisch');
$na_uitleg_med_j = hash\get($na_row_j, 'uitleg_med');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_med_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_med');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
while($na_j < $na_i && ($na_calc_med + $na_norm_med) > 0,
while($na_j < $na_i && $na_calc_med_j >= 0,
$na_j = $na_j + 1;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_med_j = hash\get($na_row_j, 'surplusMedisch');
$na_uitleg_med_j = hash\get($na_row_j, 'uitleg_med');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_med_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_med');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
);
$na_j_first_med = $na_j;
//logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j);
ifThen($na_j < $na_i,
ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j);
$na_correctie = -1 * $na_calc_med_j;
// Zorg dat niet meer dan het saldo kan worden verrekend
ifThen($na_correctie > ($na_calc_med + $na_norm_med), $na_correctie = ($na_calc_med + $na_norm_med));
strAdd($na_uitleg_med_j, "[IDagen tekort medisch aangevuld vanuit jaar ", $na_jaar, ":I][NI", number\format($na_correctie, 2), "]%%");
strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan dagen medisch vanuit jaar ", $na_jaar, ":I][NII", number\format($na_correctie, 2), "]%%");
strAdd($na_uitleg_med, "[IDagen tekort medisch aangevuld naar jaar ", $na_jaar_j, ":I][NI", number\format(-1 * $na_correctie, 2), "]%%");
strAdd($na_tekort_aangevuld_naar, "[IIWaarvan dagen medisch naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%");
$na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie;
$na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie;
$na_correctie_uit_opvolgend_jaar_med_j = $na_correctie_uit_opvolgend_jaar_med_j + 1;
$na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1;
$na_calc_med = $na_calc_med - $na_correctie;
$na_tekort_med = $na_tekort_med - $na_correctie;
$na_calc_tot = $na_calc_tot - $na_correctie;
$na_tekort = $na_tekort - $na_correctie;
$na_calc_j = hash\get($na_row_j, 'surplus');
$na_calc_j = $na_calc_j + $na_correctie;
$na_calc_med_j = $na_calc_med_j + $na_correctie;
$na_row_j = hash\set($na_row_j, 'surplusMedisch', $na_calc_med_j);
$na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j);
$na_row_j = hash\set($na_row_j, 'uitleg_med', $na_uitleg_med_j);
$na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j);
$na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar_med', $na_correctie_uit_opvolgend_jaar_med_j);
$na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j);
$na_rows = array\set($na_rows, $na_j, $na_row_j);
//logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j);
);
);
);
// Klassieke Homeopathie negatieve correcties
// Alleen als er voldoende surplus is om te compenseren.
// We kijken dan niet naar het totaal, want daar ontstaat dan
// vanzelf een verder tekort als dat aan de orde is.
ifThen(($na_calc_hom + $na_norm_hom) > 0,
$na_j = $na_j_first_hom;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_hom_j = hash\get($na_row_j, 'surplusHomeopathie');
$na_uitleg_hom_j = hash\get($na_row_j, 'uitleg_hom');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_hom_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_hom');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
while($na_j < $na_i && ($na_calc_hom + $na_norm_hom) > 0,
while($na_j < $na_i && $na_calc_hom_j >= 0,
$na_j = $na_j + 1;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_hom_j = hash\get($na_row_j, 'surplusHomeopathie');
$na_uitleg_hom_j = hash\get($na_row_j, 'uitleg_hom');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_hom_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_hom');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
);
$na_j_first_hom = $na_j;
ifThen($na_j < $na_i,
ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j);
$na_correctie = -1 * $na_calc_hom_j;
// Zorg dat niet meer dan het saldo kan worden verrekend
ifThen($na_correctie > ($na_calc_hom + $na_norm_hom), $na_correctie = ($na_calc_hom + $na_norm_hom));
strAdd($na_uitleg_hom_j, "[IDagen tekort homeopathie aangevuld vanuit jaar ", $na_jaar, ":I][NI", number\format($na_correctie, 2), "]%%");
strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan dagen homeopathie vanuit jaar ", $na_jaar, ":I][NII", number\format($na_correctie, 2), "]%%");
strAdd($na_uitleg_hom, "[IDagen tekort homeopathie aangevuld naar jaar ", $na_jaar_j, ":I][NI", number\format(-1 * $na_correctie, 2), "]%%");
strAdd($na_tekort_aangevuld_naar, "[IIWaarvan dagen homeopathie naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%");
$na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie;
$na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie;
$na_correctie_uit_opvolgend_jaar_hom_j = $na_correctie_uit_opvolgend_jaar_hom_j + 1;
$na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1;
$na_calc_hom = $na_calc_hom - $na_correctie;
$na_tekort_hom = $na_tekort_hom - $na_correctie;
$na_calc_tot = $na_calc_tot - $na_correctie;
$na_tekort = $na_tekort - $na_correctie;
$na_calc_j = hash\get($na_row_j, 'surplus');
$na_calc_j = $na_calc_j + $na_correctie;
$na_calc_hom_j = $na_calc_hom_j + $na_correctie;
$na_row_j = hash\set($na_row_j, 'surplusHomeopathie', $na_calc_hom_j);
$na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j);
$na_row_j = hash\set($na_row_j, 'uitleg_hom', $na_uitleg_hom_j);
$na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j);
$na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar_hom', $na_correctie_uit_opvolgend_jaar_hom_j);
$na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j);
$na_rows = array\set($na_rows, $na_j, $na_row_j);
//$ff = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
//logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j, ', ff:', $ff);
);
);
);
log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot);
// Totaal negatieve correcties
// Alleen als er voldoende surplus is om te compenseren.
ifThen(($na_calc_tot + $na_norm) > 0,
$na_j = $na_j_first_tot;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_j = hash\get($na_row_j, 'surplus');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
while($na_j < $na_i && ($na_calc_tot + $na_norm) > 0,
while($na_j < $na_i && $na_calc_j >= 0,
$na_j = $na_j + 1;
$na_row_j = array\at($na_rows, $na_j);
$na_calc_j = hash\get($na_row_j, 'surplus');
$na_uitleg_j = hash\get($na_row_j, 'uitleg');
$na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit');
$na_jaar_j = hash\get($na_row_j, 'jaar');
$na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar');
);
$na_j_first_tot = $na_j;
ifThen($na_j < $na_i,
ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j);
$na_correctie = -1 * $na_calc_j;
ifThen($na_correctie > ($na_calc_tot + $na_norm), $na_correctie = ($na_calc_tot + $na_norm));
strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan nascholingsdagen vanuit jaar ", $na_jaar,":I][NII", number\format($na_correctie, 2), "]%%");
strAdd($na_tekort_aangevuld_naar, "[IIWaarvan nascholingsdagen naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%");
$na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie;
$na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie;
$na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1;
$na_calc_tot = $na_calc_tot - $na_correctie;
$na_tekort = $na_tekort - $na_correctie;
$na_calc_j = $na_calc_j + $na_correctie;
$na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j);
$na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j);
$na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j);
$na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j);
$na_rows = array\set($na_rows, $na_j, $na_row_j);
//logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j);
);
);
);
log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot);
ifThen($na_lowest_j == $na_i,
// Kijk nu of er nog dagen meegenomen kunnen worden naar het volgende jaar
$na_row_prev = array\at($na_rows, $na_i - 1);
$na_calc_hom_prev = hash\get($na_row_prev, 'surplusHomeopathie');
$na_calc_med_prev = hash\get($na_row_prev, 'surplusMedisch');
$na_calc_tot_prev = hash\get($na_row_prev, 'surplus');
//logAdd(log, 'warning', 'jaar:', $na_jaar, ', MEENEMEN: prev: tot:', $na_calc_tot_prev, ', hom: ', $na_calc_hom_prev, ', med:', $na_calc_med_prev);
// Pak maximaal de maxMeenemen norm aan dagen over van het voorgaande jaar, als er voldoende dagen zijn.
ifThen($na_calc_tot_prev > 0,
// Oke, we kunnen überhaupt dagen meenemen.
$na_max_mee = $na_max_meenemen;
// Zorg dat we bij het teruggaan in de tijd niet meer meenemen dan in totaal max_meenemen.
// Dus we moeten wat al een keer is meegenomen vasthouden en van het maximum aftrekken.
$na_meegenomen = hash\get($na_row, 'meegenomen');
$na_meegenomen_hom = hash\get($na_row, 'meegenomen_hom');
$na_meegenomen_med = hash\get($na_row, 'meegenomen_med');
$na_max_mee = $na_max_mee - $na_meegenomen;
// Verdeel de dagen tussen medisch en homeopatisch, tenzij de
// voorgaande surplussen niet voldoende zijn, vul dan verder aantal
// met overig
while($na_calc_tot_prev > 0 && $na_max_mee > 0,
// Zo lang huidig medisch surplus < 0 en previous medisch surplus > 0, kies voor medisch
// Anders, zo lang huidig homeopathie surplus < 0 en previous homeopathie surplus > 0, kies voor homeopathie
// Anders, zo lang previous homeopathie surplus / medisch surplus > 0, kies voor med, hom alternerend.
// Anders, zo lang previous homeopathie surplus > 0, kies voor homeopathie
// Anders, zo lang previous medisch surplus > 0, kies voor medisch
// Anders, kies voor overig
ifThenElse($na_calc_med < 0 && $na_calc_med_prev > 0,
$na_hom_med_overig = 'med';
,
ifThenElse($na_calc_hom < 0 && $na_calc_hom_prev > 0,
$na_hom_med_overig = 'hom';
,
ifThenElse($na_calc_hom_prev > 0 && $na_calc_med_prev > 0,
ifThenElse($na_hom_med_overig == 'med',
$na_hom_med_overig = 'hom';
,
$na_hom_med_overig = 'med';
);
,
ifThenElse($na_calc_hom_prev > 0,
$na_hom_med_overig = 'hom';
,
ifThenElse($na_calc_med_prev > 0,
$na_hom_med_overig = 'med';
,
$na_hom_med_overig = 'overig';
);
);
);
);
);
log('warning', 'na_hom_med_overig=', $na_hom_med_overig, ', surplus_tot_prev=', $na_calc_tot_prev, ', na_max_mee=', $na_max_mee);
ifThen($na_hom_med_overig == 'med',
ifThen($na_calc_med_prev > 0,
$na_take = 1;
ifThen($na_calc_med_prev < $na_take, $na_take = $na_calc_med_prev);
ifThen($na_calc_tot_prev < $na_take, $na_take = $na_calc_tot_prev);
ifThen($na_max_mee < $na_take, $na_take = $na_max_mee);
$na_calc_med = $na_calc_med + $na_take;
$na_calc_med_prev = $na_calc_med_prev - $na_take;
$na_calc_tot = $na_calc_tot + $na_take;
$na_calc_tot_prev = $na_calc_tot_prev - $na_take;
$na_max_mee = $na_max_mee - $na_take;
$na_meegenomen = $na_meegenomen + $na_take;
$na_meegenomen_med = $na_meegenomen_med + $na_take;
);
);
ifThen($na_hom_med_overig == 'hom',
ifThen($na_calc_hom_prev > 0,
$na_take = 1;
ifThen($na_calc_hom_prev < $na_take, $na_take = $na_calc_hom_prev);
ifThen($na_calc_tot_prev < $na_take, $na_take = $na_calc_tot_prev);
ifThen($na_max_mee < $na_take, $na_take = $na_max_mee);
$na_calc_hom = $na_calc_hom + $na_take;
$na_calc_hom_prev = $na_calc_hom_prev - $na_take;
$na_calc_tot = $na_calc_tot + $na_take;
$na_calc_tot_prev = $na_calc_tot_prev - $na_take;
$na_max_mee = $na_max_mee - $na_take;
$na_meegenomen = $na_meegenomen + $na_take;
$na_meegenomen_hom = $na_meegenomen_hom + $na_take;
);
);
ifThen($na_hom_med_overig == 'overig',
// We weten nu al dat na_calc_tot_prev > 0
$na_take = 1;
ifThen($na_calc_tot_prev < $na_take, $na_take = $na_calc_tot_prev);
ifThen($na_max_mee < $na_take, $na_take = $na_max_mee);
$na_calc_tot = $na_calc_tot + $na_take;
$na_calc_tot_prev = $na_calc_tot_prev - $na_take;
$na_max_mee = $na_max_mee - $na_take;
$na_meegenomen = $na_meegenomen + $na_take;
);
);
//logAdd(log, 'warning', 'jaar:', $na_jaar, ', meegenomen: ', $na_meegenomen, ', hom:', $na_meegenomen_hom, ', med:', $na_meegenomen_med);
$na_row = hash\set($na_row, 'meegenomen', $na_meegenomen);
$na_row = hash\set($na_row, 'meegenomen_hom', $na_meegenomen_hom);
$na_row = hash\set($na_row, 'meegenomen_med', $na_meegenomen_med);
);
$na_meegenomen = hash\get($na_row, 'meegenomen');
$na_meegenomen_hom = hash\get($na_row, 'meegenomen_hom');
$na_meegenomen_med = hash\get($na_row, 'meegenomen_med');
//logAdd(log, 'jaar: ', $na_jaar, ', tekort:', $na_tekort, ', meegenomen uit vorig jaar:', $na_meegenomen);
$na_row_prev = hash\set($na_row_prev, 'surplusHomeopathie', $na_calc_hom_prev);
$na_row_prev = hash\set($na_row_prev, 'surplusMedisch', $na_calc_med_prev);
$na_row_prev = hash\set($na_row_prev, 'surplus', $na_calc_tot_prev);
$na_rows = array\set($na_rows, $na_i - 1, $na_row_prev);
);
$na_row = hash\set($na_row, 'surplusHomeopathie', $na_calc_hom);
$na_row = hash\set($na_row, 'surplusMedisch', $na_calc_med);
$na_row = hash\set($na_row, 'surplus', $na_calc_tot);
$na_row = hash\set($na_row, 'uitleg', $na_uitleg);
$na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom);
$na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med);
$na_row = hash\set($na_row, 'tekort_aangevuld_naar', $na_tekort_aangevuld_naar);
$na_row = hash\set($na_row, 'correctie_aangevuld_naar', $na_correctie_aangevuld_naar);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_hom', $na_correctie_uit_opvolgend_jaar_hom);
$na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_med', $na_correctie_uit_opvolgend_jaar_med);
$na_row = hash\set($na_row, 'tekort', $na_tekort);
$na_row = hash\set($na_row, 'tekort_hom', $na_tekort_hom);
$na_row = hash\set($na_row, 'tekort_med', $na_tekort_med);
$na_rows = array\set($na_rows, $na_i, $na_row);
ifThen($na_lowest_j != $na_i, $na_i = $na_lowest_j - 1);
);
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bepaal de uitslag
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_i = 0;
$na_jaar_end = 0;
ifThenElse($na_i < $na_n,
$na_row = array\at($na_rows, $na_n - 1);
$na_calc_tot_end = hash\get($na_row, 'surplus');
$na_calc_hom_end = hash\get($na_row, 'surplusHomeopathie');
$na_calc_med_end = hash\get($na_row, 'surplusMedisch');
$na_jaar_end = hash\get($na_row, 'jaar');
,
$na_calc_tot_end = 0;
$na_calc_hom_end = 0;
$na_calc_med_end = 0;
$na_jaar_end = 0;
);
log('warning', 'calc_tot_end = ', $na_calc_tot_end, ', calc_hom_end = ', $na_calc_hom_end, ', calc_med_end = ', $na_calc_med_end);
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_jaar = hash\get($na_row, 'jaar');
$na_uitleg_hom = hash\get($na_row, 'uitleg_hom');
$na_uitleg_med = hash\get($na_row, 'uitleg_med');
$na_uitleg_tot = hash\get($na_row, 'uitleg');
$na_tekort_aangevuld_naar = hash\get($na_row, 'tekort_aangevuld_naar');
$na_tekort_aangevuld_vanuit = hash\get($na_row, 'tekort_aangevuld_vanuit');
$na_correctie_aangevuld_naar = hash\get($na_row, 'correctie_aangevuld_naar');
$na_correctie_aangevuld_vanuit = hash\get($na_row, 'correctie_aangevuld_vanuit');
$na_calc_tot = hash\get($na_row, 'surplus');
$na_calc_hom = hash\get($na_row, 'surplusHomeopathie');
$na_calc_med = hash\get($na_row, 'surplusMedisch');
$na_mee_tot = hash\get($na_row, 'meegenomen');
$na_mee_hom = hash\get($na_row, 'meegenomen_hom');
$na_mee_med = hash\get($na_row, 'meegenomen_med');
$na_tekort = -1 * hash\get($na_row, 'tekort');
$na_tekort_hom = -1 * hash\get($na_row, 'tekort_hom');
$na_tekort_med = -1 * hash\get($na_row, 'tekort_med');
//logAdd(log, 'info', 'jaar:', $na_jaar, ', tekort_hom: ', $na_tekort_hom, ' tekort_med: ', $na_tekort_med, ', tekort_tot: ', $na_tekort);
// Corrigeer voor het dashboard de tekorten nog met meegenomen uit voorgaande jaren
$na_tekort = $na_tekort - $na_mee_tot;
$na_tekort_hom = $na_tekort_hom - $na_mee_hom;
$na_tekort_med = $na_tekort_med - $na_mee_med;
$na_dashboard = '';
$na_dashb_entry_hom = '';
$na_dashb_entry_med = '';
$na_dashb_entry_tot = '';
ifThenElse($na_i == ($na_n - 1),
$na_mee_tot_next = 0;
$na_mee_hom_next = 0;
$na_mee_med_next = 0;
,
$na_row_next = array\at($na_rows, $na_i + 1);
$na_mee_tot_next = hash\get($na_row_next, 'meegenomen');
$na_mee_hom_next = hash\get($na_row_next, 'meegenomen_hom');
$na_mee_med_next = hash\get($na_row_next, 'meegenomen_med');
);
$na_correctie_uit_opvolgend_jaar = hash\get($na_row, 'correctie_uit_opvolgend_jaar');
$na_correctie_uit_opvolgend_jaar_hom = hash\get($na_row, 'correctie_uit_opvolgend_jaar_hom');
$na_correctie_uit_opvolgend_jaar_med = hash\get($na_row, 'correctie_uit_opvolgend_jaar_med');
// Bepaal of er vóór het einde vanaf deze index nog ergens een surplus is, want
// dan is een negatief eindtotaal niet van toepassing.
//logAdd(log, 'warning', 'jaar = ', $na_jaar, ' - intermediate surplus?');
$na_j = $na_i;
$has_intermediate_hom_surplus = false;
$has_intermediate_med_surplus = false;
$has_intermediate_tot_surplus = false;
while($na_j < $na_n && !($has_intermediate_hom_surplus && $has_intermediate_med_surplus && $has_intermediate_tot_surplus),
$na_row_j = array\at($na_rows, $na_j);
$na_j_jaar = hash\get($na_row_j, 'jaar');
$na_j_calc_tot = hash\get($na_row_j, 'surplus');
$na_j_calc_hom = hash\get($na_row_j, 'surplusHomeopathie');
$na_j_calc_med = hash\get($na_row_j, 'surplusMedisch');
$na_j_tekort = hash\get($na_row_j, 'tekort');
$na_j_tekort_hom = hash\get($na_row_j, 'tekort_hom');
$na_j_tekort_med = hash\get($na_row_j, 'tekort_med');
$has_intermediate_tot_surplus = ($na_j_calc_tot > 0.0 || ($na_j_calc_tot == 0.0 && $na_j_tekort >= 0.0));
$has_intermediate_hom_surplus = ($na_j_calc_hom > 0.0 || ($na_j_calc_hom == 0.0 && $na_j_tekort_hom >= 0.0));
$has_intermediate_med_surplus = ($na_j_calc_med > 0.0 || ($na_j_calc_med == 0.0 && $na_j_tekort_med >= 0.0));
//logAdd(log, 'info', 'jaar = ', $na_j_jaar, ', calc_tot = ', $na_j_calc_tot, ', tekort = ', $na_j_tekort, ' result = ', $has_intermediate_tot_surplus);
$na_j = $na_j + 1;
);
//logAdd(log, 'info', 'intermediate surplus = ', $has_intermediate_tot_surplus);
// Begin met uitleggen
strAdd($na_uitleg_hom, "[IMeegenomen uit ", $na_jaar - 1, " :][NI", number\format($na_mee_hom, 2), "]%%");
ifThenElse($na_i == ($na_n - 1),
strAdd($na_uitleg_hom, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_hom, 2), "]%%");
,
strAdd($na_uitleg_hom, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_hom_next, 2), "]%%");
ifThen($na_calc_hom > 0 && $na_calc_tot <= 0,
strAdd($na_uitleg_hom, "[ESurplus van ", number\format($na_calc_hom, 2), " Homeopathie dagen kunnen niet worden doorgegeven, omdat het totaal ontoereikend isE]%%");
);
);
ifThenElse($na_tekort_hom <= 0,
ifThenElse($na_calc_hom == 0.0,
$na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoendeV]%%");
$na_status_hom = 'voldoet';
,
$na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoende (surplus: ", number\format($na_calc_hom, 2), ")V]%%");
$na_status_hom = 'voldoet';
);
,
ifThenElse($na_calc_hom >= 0,
$na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoende (gecompenseerd)V]%%");
,
$na_dashb_entry_hom = string\concatenate("[OTotaal Klassieke Homeopathie onvoldoende (tekort: ", number\format(-1 * $na_calc_hom, 2), ")O]%%");
$na_status_hom = 'voldoet-niet';
);
);
$na_uitleg_hom = string\concatenate($na_dashb_entry_hom, $na_uitleg_hom);
ifThenElse($na_jaar >= $na_methode_1_max_jaar,
strAdd($na_uitleg_med, "[IMeegenomen ", $na_jaar - 1, " :][NI", number\format($na_mee_med, 2), "]%%");
ifThenElse($na_i == ($na_n - 1),
strAdd($na_uitleg_med, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_med, 2), "]%%");
,
strAdd($na_uitleg_med, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_med_next, 2), "]%%");
ifThen($na_calc_med > 0 && $na_calc_tot <= 0,
strAdd($na_uitleg_med, "[ESurplus van ", number\format($na_calc_med, 2), " Medische dagen kunnen niet worden doorgegeven, omdat het totaal ontoereikend isE]%%");
);
);
ifThenElse($na_tekort_med <= 0,
ifThenElse($na_calc_med == 0.0,
$na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoendeV]%%");
$na_status_med = 'voldoet';
,
$na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoende (surplus: ", number\format($na_calc_med, 2), ")V]%%");
$na_status_med = 'voldoet';
);
,
ifThenElse($na_calc_med >= 0,
$na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoende (gecompenseerd)V]%%");
$na_status_med = 'voldoet';
,
$na_dashb_entry_med = string\concatenate("[OTotaal Medisch onvoldoende (tekort: ", number\format(-1 * $na_calc_med, 2), ")O]%%");
$na_status_hom = 'voldoet-niet';
);
);
$na_uitleg_med = string\concatenate($na_dashb_entry_med, $na_uitleg_med);
,
$na_dashb_entry_med = '[V - V]%%';
);
log('warning', 'jaar:', $na_jaar, ', tot:', $na_calc_tot, ', correctie:', $na_correctie_uit_opvolgend_jaar, ', na_mee_tot:', $na_mee_tot_next);
ifThen($na_correctie_aangevuld_naar > 0,
//strAdd($na_uitleg_tot, '[IDagen aangevuld naar jaar ', $na_jaar - 1, ":][NI", number\format(-1 * $na_correctie_aangevuld_naar, 2), ']%%');
strAdd($na_uitleg_tot, '[IDagen aangevuld naar:][NI', number\format(-1 * $na_correctie_aangevuld_naar, 2), ']%%');
strAdd($na_uitleg_tot, $na_tekort_aangevuld_naar);
);
ifThen($na_correctie_aangevuld_vanuit > 0,
//strAdd($na_uitleg_tot, '[IDagen aangevuld vanuit jaar ', $na_jaar + 1, ":][NI", number\format($na_correctie_aangevuld_vanuit, 2), ']%%');
strAdd($na_uitleg_tot, '[IDagen aangevuld vanuit:][NI', number\format($na_correctie_aangevuld_vanuit, 2), ']%%');
strAdd($na_uitleg_tot, $na_tekort_aangevuld_vanuit);
);
strAdd($na_uitleg_tot, "[IMeegenomen uit jaar ", $na_jaar - 1, " :][NI", number\format($na_mee_tot, 2), "]%%");
ifThen($na_mee_hom > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen homeopathie:][NII", number\format($na_mee_hom, 2), "]%%");
);
ifThen($na_mee_med > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen medisch:][NII", number\format($na_mee_med, 2), "]%%");
);
// Dit blijkt nodig te zijn (bug in ESPOCRM?), anders wordt na_mee_tot_hm gewoon niet berekend.
$na_mee_tot_hm = $na_mee_tot;
$na_mee_tot_hm = $na_mee_tot_hm - $na_mee_hom;
$na_mee_tot_hm = $na_mee_tot_hm - $na_mee_med;
ifThen($na_mee_tot_hm > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen nascholing:][NII", number\format($na_mee_tot_hm, 2), "]%%");
);
ifThenElse($na_i == ($na_n - 1),
strAdd($na_uitleg_tot, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_tot, 2), "]%%");
,
strAdd($na_uitleg_tot, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_tot_next, 2), "]%%");
ifThen($na_mee_hom_next > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen homeopathie:][NII", number\format($na_mee_hom_next, 2), "]%%");
);
ifThen($na_mee_med_next > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen medisch:][NII", number\format($na_mee_med_next, 2), "]%%");
);
// Dit blijkt nodig te zijn (bug in ESPOCRM?), anders wordt na_mee_tot_hm_next gewoon niet berekend.
$na_mee_tot_hm_next = $na_mee_tot_next;
$na_mee_tot_hm_next = $na_mee_tot_hm_next - $na_mee_hom_next;
$na_mee_tot_hm_next = $na_mee_tot_hm_next - $na_mee_med_next;
ifThen($na_mee_tot_hm_next > 0,
strAdd($na_uitleg_tot, "[IIWaarvan dagen nascholing:][NII", number\format($na_mee_tot_hm_next, 2), "]%%");
);
);
ifThenElse($na_tekort <= 0,
ifThenElse($na_calc_tot == 0.0,
$na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoendeV]%%");
$na_status = 'voldoet';
,
$na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoende (surplus: ", number\format($na_calc_tot, 2), ")V]%%");
$na_status = 'voldoet';
);
,
ifThenElse($na_calc_tot >= 0,
$na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoende (gecompenseerd)V]%%");
$na_status = 'voldoet';
,
$na_dashb_entry_tot = string\concatenate("[ONascholingsdagen onvoldoende (tekort: ", number\format(-1 * $na_calc_tot, 2), ")O]%%");
$na_status = 'voldoet-niet';
);
);
$na_uitleg_tot = string\concatenate($na_dashb_entry_tot, $na_uitleg_tot);
ifThenElse($na_jaar < $na_methode_1_max_jaar,
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('<span ', $na_style_nstd_nvt, '>'));
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('<span ', $na_style_nstd_nvt, '>'));
,
ifThenElse($na_jaar == $na_methode_1_max_jaar,
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('<span ', $na_style_nstd_goed, '>'));
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('<span ', $na_style_nstd_goed, '>'));
,
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('<span ', $na_style_nstd_goed, '>'));
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('<span ', $na_style_nstd_tekort, '>'));
)
);
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '[V', string\concatenate('<span ', $na_style_nstd_goed, '>'));
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '[O', string\concatenate('<span ', $na_style_nstd_tekort, '>'));
$na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '[V', string\concatenate('<span ', $na_style_nstd_goed, '>'));
$na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '[O', string\concatenate('<span ', $na_style_nstd_tekort, '>'));
$na_dashb_entry_tot = string\replace($na_dashb_entry_tot, 'V]%%', '</span>');
$na_dashb_entry_tot = string\replace($na_dashb_entry_tot, 'O]%%', '</span>');
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, 'V]%%', '</span>');
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, 'O]%%', '</span>');
$na_dashb_entry_med = string\replace($na_dashb_entry_med, 'V]%%', '</span>');
$na_dashb_entry_med = string\replace($na_dashb_entry_med, 'O]%%', '</span>');
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, "Totaal Klassieke Homeopathie", "Kl. Hom.");
$na_dashb_entry_med = string\replace($na_dashb_entry_med, "Totaal Medisch", "Medisch");
$na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '(surplus: 0,0)', '');
$na_dashb_entry_med = string\replace($na_dashb_entry_med, '(surplus: 0,0)', '');
$na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '(surplus: 0,0)', '');
$na_dashboard = string\concatenate($na_dashb_entry_hom, $na_dashb_entry_med, $na_dashb_entry_tot);
$na_row = hash\set($na_row, 'uitleg', $na_uitleg_tot);
$na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom);
$na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med);
$na_row = hash\set($na_row, 'dashboard', $na_dashboard);
$na_row = hash\set($na_row, 'status', $na_status);
$na_row = hash\set($na_row, 'status_hom', $na_status_hom);
$na_row = hash\set($na_row, 'status_med', $na_status_med);
$na_rows = array\set($na_rows, $na_i, $na_row);
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Bewerk alle uitleggen
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_i = 0;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
log('warning', 'na_i=', $na_i, ', got row');
$na_jaar = hash\get($na_row, 'jaar');
$na_bep_rep = 'bepaald';
log('warning', 'na_i=', $na_i, ', got jaar=', $na_jaar);
$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_uitleg_hom = hash\get($na_row, 'uitleg_hom');
$na_uitleg_med = hash\get($na_row, 'uitleg_med');
$na_uitleg_tot = hash\get($na_row, 'uitleg');
$na_report = string\replace($na_report, '%tot%', $na_uitleg_tot);
$na_report = string\replace($na_report, '%hom%', $na_uitleg_hom);
ifThenElse($na_jaar >= $na_methode_1_max_jaar,
$na_report = string\replace($na_report, '%med%', $na_uitleg_med);
,
$na_report = string\replace($na_report, '%med%', '');
);
$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, '[NII', string\concatenate('<td ', $na_style_dagen_inspr2, '>'));
$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, '[II', string\concatenate('<td ', $na_style_rubric, '><span ', $na_style_sub2_rubric, '>'));
$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');
$na_row = hash\set($na_row, 'na_report', $na_report);
$na_rows = array\set($na_rows, $na_i, $na_row);
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Zet al die totalen weer in de database
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_i = 0;
while($na_i < $na_n,
$na_row = array\at($na_rows, $na_i);
$na_id = hash\get($na_row, 'id');
$na_calc_tot = hash\get($na_row, 'surplus');
$na_calc_hom = hash\get($na_row, 'surplusHomeopathie');
$na_calc_med = hash\get($na_row, 'surplusMedisch');
$na_dashboard = hash\get($na_row, 'dashboard');
$na_report = hash\get($na_row, 'na_report');
$na_status = hash\get($na_row, 'status');
$na_status_hom = hash\get($na_row, 'status_hom');
$na_status_med = hash\get($na_row, 'status_med');
$na_status_all = $na_status;
ifThen($na_status_all == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet');
ifThen($na_status_hom == 'voldoet-niet' || $na_status_hom == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet');
ifThen($na_status_med == 'voldoet-niet' || $na_status_med == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet');
ifThen($na_status_all == 'voldoet-na-saldering', $na_status_all = 'voldoet');
record\update('Nascholingstotaal', $na_id,
'surplus', $na_calc_tot,
'surplusMedisch', $na_calc_med,
'surplusHomeopathie', $na_calc_hom,
'dashboard', $na_dashboard,
'berekeningsuitleg', $na_report,
'status', $na_status_all
);
$na_i = $na_i + 1;
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Klaar.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
global\unset($na_in_calc_key, true);
@@ -0,0 +1 @@
script-bereken-nascholingstotalen
@@ -0,0 +1,7 @@
Leest alle nascholingsnormen in een hash en zet ze in de globale variable 'nascholingsnorm-hash', waarbij ze kunnen worden gelezen als hash\get($hash, "$year") of hash\get($hash, "$year-$regiocode"). De key "$year-$regiocode" gaat boven die van de algemene "$year".
De velden die hierbij te lezen zijn zijn:
- dagen (het totaal aantal te volgen dagen per jaar, inclusief dagenMedisch en dagenHomeopathie)
- dagenMedisch (aantal te volgen medische dagen per jaar)
- dagenHomeopathie (aantal te volgen klassieke homeopathie dagen per jaar)
@@ -0,0 +1 @@
5f0c79b5aae44ef72
@@ -0,0 +1,32 @@
//exec last execution: Mon Jul 13 2020 17:57:38 GMT+0200 (Midden-Europese zomertijd)
$sln_rows = record\fetchManyHash('Nascholingsnorm', 'name, id, jaar, dagen, dagenMedisch, dagenHomeopathie, meeneemNorm, 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);
@@ -0,0 +1 @@
script-lees-nascholingsnorm-hash
@@ -0,0 +1 @@
Triggert een hercalculatie van de nascholingstotalen voor een Lid ($contact_id).
@@ -0,0 +1 @@
5efae9e4a72b632bb
@@ -0,0 +1,5 @@
$na_recalc_e = entity\get('Contact', $contact_id);
setAttr($na_recalc_e, 'nascholingstotalenHerberekenen', true);
entity\save($na_recalc_e);
@@ -0,0 +1 @@
script-nascholing-recalc-for-contact
@@ -0,0 +1 @@
Voor een gegeven $contact_id en $year maakt dit script indien nodig nieuwe nascholingstotalen jaren aan.
@@ -0,0 +1 @@
5ef66f724567d9188
@@ -0,0 +1,44 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialiseren
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_reg_dt = record\attribute('Contact', $contact_id, 'datumRegistratie');
$na_reg_jr = datetime\year($na_reg_dt);
ifThen(!global\isset('nascholingsnorm-hash'),
$na_script = configGet('script-lees-nascholingsnorm-hash');
Exec($na_script);
);
$na_norm = global\get('nascholingsnorm-hash');
$na_adm_my_user_id = env\userAttribute('id');
Log('error', 'contact: ', $contact_id, ', jaar: ', $year);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Maak indien nodig een nascholingsjaar aan
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
$na_adm_c = entity\Get('Contact', $contact_id);
$na_adm_reg_dt = attr($na_adm_c, 'datumRegistratie');
$na_adm_reg_dt_year = datetime\year($na_adm_reg_dt);
ifThen($year >= $na_adm_reg_dt_year,
$na_adm_e = record\exists('Nascholingstotaal', 'jaar=', $year, 'contactId=', $contact_id);
ifThen(!$na_adm_e,
ifThenElse(hash\isSet($na_norm, $year),
$na_norm_id = hash\get(hash\get($na_norm, $year), 'id');
,
log('error', 'Geen Norm getal voor jaar ', $year);
);
ifThen($na_norm_id,
Log('error', 'creëren nascholingstotaal record...');
record\create('Nascholingstotaal', 'jaar',
$year, 'contactId', $contact_id,
'assignedUserId', $na_adm_my_user_id,
'handmatig', false,
'nascholingsnormId', $na_norm_id
);
);
);
);
@@ -0,0 +1 @@
script-nascholings-totaal-jaar-admin
@@ -0,0 +1,10 @@
Koppelt de praktijken van het contact behorende bij een user id aan de portal user.
Input:
$user_id - het id van de portal gebruiker
$contact_id - het id van het bijbehorende contact
postconditie:
relaties met de accounts gelegd.
@@ -0,0 +1 @@
6036231fbdadf8ff6
@@ -0,0 +1,45 @@
$pk_related_accounts = Hash\New();
$pk_related_to_portal_user = record\fetchRelatedManyHash('User', $user_id, 'accounts', 'id', 'id', 'asc');
$pk_m = array\length($pk_related_to_portal_user);
$pk_j = 0;
while($pk_j < $pk_m,
$pk_row = array\at($pk_related_to_portal_user, $pk_j);
$pk_account_id = hash\get($pk_row, 'id');
$pk_related_accounts = Hash\Set($pk_related_accounts, $pk_account_id, 'del');
$pk_j = $pk_j + 1;
);
$pk_related_to_contact = record\fetchRelatedManyHash('Contact', $contact_id, 'accounts', 'id', 'id', 'asc');
$pk_m = array\length($pk_related_to_contact);
$pk_j = 0;
while($pk_j < $pk_m,
$pk_row = array\at($pk_related_to_contact, $pk_j);
$pk_account_id = hash\get($pk_row, 'id');
ifThenElse(Hash\IsSet($pk_related_accounts, $pk_account_id),
$pk_related_accounts = Hash\Set($pk_related_accounts, $pk_account_id, 'exist');
,
$pk_related_accounts = Hash\Set($pk_related_accounts, $pk_account_id, 'new');
);
$pk_j = $pk_j + 1;
);
$pk_keys = Hash\Keys($pk_related_accounts);
$pk_m = array\length($pk_keys);
$pk_j = 0;
while($pk_j < $pk_m,
$pk_key = array\at($pk_keys, $pk_j);
$pk_val = Hash\Get($pk_related_accounts, $pk_key);
logAdd(log, 'info', $i, ': ', $pk_key, '=', Hash\Get($pk_related_accounts, $pk_key));
ifThenElse($pk_val == 'del',
record\unrelate('User', $user_id, 'accounts', $pk_key);
logAdd(log, 'info', 'Unrelated ', $pk_key, ' from ', $username);
,
ifThen($pk_val == 'new',
record\relate('User', $user_id, 'accounts', $pk_key);
logAdd(log, 'info', 'related ', $pk_key, ' to ', $username);
);
);
$pk_j = $pk_j + 1;
);
@@ -0,0 +1 @@
script-praktijken-koppelen-aan-portal-user
@@ -0,0 +1,2 @@
in: $param_name ==> Initials (firstName) lastName or Initials () lastName or Initials lastName
out: $val_fn_ln ==> firstName lastName
@@ -0,0 +1 @@
61c22448a0d48492c
@@ -0,0 +1,13 @@
$sfnln_fn = string\match($param_name, '/[(][^)]*[)]/');
ifThenElse($fn == '()',
$val_fn_ln = string\replace($param_name, ' ()', '');
,
$sfnln_ln = string\match($param_name, '/[^)]*[)][ ]*/');
ifThenElse($sfnln_ln != '',
$sfnln_ln = string\substring($param_name, string\length($sfnln_ln));
$sfnln_fn = string\substring($sfnln_fn, 1, string\length($sfnln_fn) - 2);
$val_fn_ln = string\concatenate($sfnln_fn, ' ', $sfnln_ln);
,
$val_fn_ln = $param_name;
)
);
@@ -0,0 +1 @@
script-to-firstname-lastname
@@ -0,0 +1,5 @@
Stuurt als de juiste parameters zijn gegeven het visitatie formulier naar het gegeven lid.
* $date_par_visitatie_datum='2021-12-02';
* $par_praktijk_type='P1';
* $par_lid_id='';
@@ -0,0 +1 @@
61b677bf9657457f9
@@ -0,0 +1,167 @@
// last execution: Mon Jun 07 2021 11:33:11 GMT+0200 (Midden-Europese zomertijd)
$par_uitvoeren=true;
$par_test_run_geen_mail_versturen=false;
//$date_par_visitatie_datum='2021-12-02';
//$par_visitatienummer='';
//$par_praktijk_type=list('P1', 'P2', 'P3');
//$par_lid_id='';
//////////////////////////////////////////////////////////////////////////////////////
// init
//////////////////////////////////////////////////////////////////////////////////////
$visitatie_datum = $par_visitatie_datum;
$nvkh_afzender = configGet('nvkh-afzender');
$visitatie_certificaat_id = configGet('visitatie-certificaat');
$lid_id=$par_lid_id;
$lid = entity\get('Contact', $lid_id);
$emailadres = attr($lid, 'emailAddress');
$secretariaat_email = configGet('secretariaat-email-address');
$geldig_jaren = configGet('visitatie-geldigheid-in-jaren');
$praktijk_type = $par_praktijk_type;
$testrun = $par_test_run_geen_mail_versturen;
html = '';
log('warning', 'visitatie datum:', $visitatie_datum);
log('warning', 'emailadres:', $emailadres);
log('warning', 'nvkh afzender:', $nvkh_afzender);
log('warning', 'visitatie-certificaat-id:', $visitatie_certificaat_id);
log('warning', 'praktijk soort:', $praktijk_type);
html = '';
//////////////////////////////////////////////////////////////////////////////////////
// Visitatie formulier invullen en opsturen
//////////////////////////////////////////////////////////////////////////////////////
ifThenElse($par_uitvoeren,
$dt = datetime\now();
$dt = datetime\format($dt, 'Europe/Amsterdam', 'YYYY-MM-DD');
$formulier = 'visitatie-certificaat';
$formulier_id = $visitatie_certificaat_id;
log('warning', 'visitatie certificaat input document : ', $formulier, ' - id : ', $formulier_id);
$leden = list($lid);
$i = 0;
$n = array\length($leden);
log('warning', 'gerelateerde leden: ', $n);
while($i < $n,
$lid = array\at($leden, $i);
$lid_nr = attr($lid, 'lidnummer');
$lid_id = attr($lid, 'id');
$achternaam = attr($lid, 'lastName');
$voorzetsel = string\trim(attr($lid, 'middleName'));
ifThen($voorzetsel != "",
$achternaam = string\concatenate($voorzetsel, '-', $achternaam);
);
$achternaam = string\trim($achternaam);
$achternaam = string\replace($achternaam, ' ', '-');
$form_out = string\concatenate('visitatie-certificaat-', $achternaam, '.pdf');
log('warning', 'visitatie certificaat output: ', $form_out);
log('warning', 'lid id: ', $lid_id, ' naam: ', attr($lid, 'name'), ', lidnummer:', $lid_nr);
$scr_toFnLn = configGet('script-to-firstname-lastname');
$param_name = attr($lid, 'name');
exec($scr_toFnLn);
$lid_naam = $val_fn_ln;
$lid_naam = string\concatenate('van ', $lid_naam, ' op');
$email = attr($lid, 'emailAddress');
$primary_account_id = record\findRelatedOne('Contact', $lid_id, 'accounts', 'name', 'asc', 'type=', $praktijk_type);
log('warning', 'praktijk[', $praktijk_type, ']: ', $primary_account_id);
ifThenElse(!$primary_account_id,
$msg = string\concatenate(attr($lid, 'name'), ' (', $lid_nr, ') voert geen praktijk van soort ', $praktijk_type);
log('warning', $msg);
strAdd(html, '<p style="color:red">', $msg, '</p>');
,
$pr = entity\get('Account', $primary_account_id);
log('warning', 'praktijk: ', attr($pr, 'naam'));
$praktijknaam = attr($pr, 'naam');
$street = attr($pr, 'shippingAddressStreet');
$city = attr($pr, 'shippingAddressCity');
$praktijkadres = string\concatenate($street, ' te ', $city);
log('warning', 'lid_id:', $lid_id, ', praktijk:', $praktijknaam,
', visitatiedatum:', $visitatiedatum, ', van:', $lid_naam,
', adres:', $praktijkadres, ', geldig_tot:', $geldig_tot);
$visitatiedatum = '';
ifThen($visitatie_datum,
$visitatiedatum = datetime\format($visitatie_datum, 'Europe/Amsterdam', 'DD-MM-YYYY');
);
$geldig_tot = datetime\addYears($visitatie_datum, $geldig_jaren);
$gdt = datetime\format($geldig_tot, 'Europe/Amsterdam', 'D MMM YYYY');
$geldig_tot = string\concatenate('Dit certificaat is geldig tot ', $gdt);
$attach_id = ext\pdf\fillin('Contact', $lid_id,
$formulier_id, $form_out,
'praktijk', $praktijknaam,
'visitatiedatum', $visitatiedatum,
'van', $lid_naam,
'adres', $praktijkadres,
'geldig_tot', $geldig_tot
);
log('warning', 'attachment id :', $attach_id);
$body = configGet('visitatie-certificaat-email');;
$visitatie_dt = datetime\format($visitatie_datum, 'Europe/Amsterdam', 'DD/MM/YYYY');
$body = string\replace($body, '{{visitatie-datum}}', $visitatie_dt);
$body = string\replace($body, '{{nvkh-afzender}}', $nvkh_afzender);
$body = string\replace($body, '{{lid-naam}}', attr($lid, 'name'));
$body = ext\htmlize($body, 'Contact', attr($lid, 'id'));
$subject = 'Visitatie Certificaat voor visitatie d.d. {{datum}}';
$subject = string\replace($subject, '{{datum}}', $visitatie_dt);
$userId = env\userAttribute('id');
//$emailadres="sysadm@nvkh.nl";
ifThenElse($testrun,
log('warning', 'Dit is een testrun, er wordt geen email verstuurd');
,
$emailId = record\create('Email',
'subject', $subject,
'body', $body,
'to', $emailadres,
'attachmentsIds', list($attach_id),
'assignedUser', $userId,
'isUser', true,
'parentType', 'Contact',
'parentId', $lid_id
);
ext\email\send($emailId);
);
);
$i = $i + 1;
);
,
log('warning', 'Vink uitvoeren aan om dit script uit te voeren');
);
@@ -0,0 +1 @@
script-visitatie-stuur-certificaat
@@ -0,0 +1,8 @@
Stuurt als de juiste parameters zijn gegeven het visitatie formulier naar het gegeven lid.
* $date_par_visitatie_datum='2021-12-02 12:15:00';
* $par_visitatie_nummer='';
* $par_praktijk_type='P1';
* $par_lid_id='';
* $par_visiteur_id='';
@@ -0,0 +1 @@
61ae898da96139566
@@ -0,0 +1,220 @@
// last execution: Mon Jun 07 2021 11:33:11 GMT+0200 (Midden-Europese zomertijd)
$par_uitvoeren=true;
$par_test_run_geen_mail_versturen=false;
//$date_par_visitatie_datum='2021-12-02';
//$par_visitatienummer='';
//$par_praktijk_type=list('P1', 'P2', 'P3');
//$par_lid_id='';
//$par_visiteur_id='';
//////////////////////////////////////////////////////////////////////////////////////
// init
//////////////////////////////////////////////////////////////////////////////////////
$visitatienummer = $par_visitatie_nummer;
$visitatie_datum = $par_visitatie_datum;
$visiteur_id = $par_visiteur_id;
$nvkh_afzender = configGet('nvkh-afzender');
$visiteur = entity\get('Contact', $visiteur_id);
$visitatie_formulier_id = configGet('visitatie-formulier');
$lid_id=$par_lid_id;
$lid = entity\get('Contact', $lid_id);
$emailadres = attr($lid, 'emailAddress');
$secretariaat_email = configGet('secretariaat-email-address');
$retouradres = $secretariaat_email;
$visitatie_wacht_dagen = configGet('visitatie-dagen-voor-invullen-formulier');
$two_weeks_before_visitatiedatum = datetime\addDays($visitatie_datum, -1 * $visitatie_wacht_dagen);
$two_weeks_before_visitatiedatum = datetime\format(
$two_weeks_before_visitatiedatum,
'Europe/Amsterdam', 'DD/MM/YYYY');
$praktijk_type = $par_praktijk_type;
$testrun = $par_test_run_geen_mail_versturen;
html = '';
$visiteur = entity\get('Contact', $visiteur_id);
$visiteur_name = attr($visiteur, 'name');
log('warning', 'visiteur:', $visiteur_name);
log('warning', 'visitatie datum:', $visitatie_datum);
log('warning', 'two weeks notice:', $two_weeks_before_visitatiedatum);
log('warning', 'visitatienummer: ', $visitatienummer);
log('warning', 'retouradres:', $retouradres);
log('warning', 'emailadres:', $emailadres);
log('warning', 'nvkh afzender:', $nvkh_afzender);
log('warning', 'visitatie-formulier-id:', $visitatie_formulier_id);
log('warning', 'praktijk soort:', $praktijk_type);
html = '';
//////////////////////////////////////////////////////////////////////////////////////
// Visitatie formulier invullen en opsturen
//////////////////////////////////////////////////////////////////////////////////////
ifThenElse($par_uitvoeren,
$versie = $par_visitatie_formulier_versie;
$dt = datetime\now();
$dt = datetime\format($dt, 'Europe/Amsterdam', 'YYYY-MM-DD');
$formulier = 'visitatie-formulier';
$formulier_id = $visitatie_formulier_id;
log('warning', 'visitatie vragenformulier input document : ', $formulier, ' - id : ', $formulier_id);
$leden = list($lid);
$i = 0;
$n = array\length($leden);
log('warning', 'gerelateerde leden: ', $n);
while($i < $n,
$lid = array\at($leden, $i);
$lid_nr = attr($lid, 'lidnummer');
$lid_id = attr($lid, 'id');
$achternaam = attr($lid, 'lastName');
$voorzetsel = string\trim(attr($lid, 'middleName'));
ifThen($voorzetsel != "",
$achternaam = string\concatenate($voorzetsel, '-', $achternaam);
);
$achternaam = string\trim($achternaam);
$achternaam = string\replace($achternaam, ' ', '-');
$form_out = string\concatenate('visitatie-vragenlijst-', $achternaam, '.pdf');
log('warning', 'visitatie vragenformulier avar document : ', $form_out);
log('warning', 'lid id: ', $lid_id, ' naam: ', attr($lid, 'name'), ', lidnummer:', $lid_nr);
$email = attr($lid, 'emailAddress');
$primary_account_id = record\findRelatedOne('Contact', $lid_id, 'accounts', 'name', 'asc', 'type=', $praktijk_type);
log('warning', 'praktijk[', $praktijk_type, ']: ', $primary_account_id);
ifThenElse(!$primary_account_id,
$msg = string\concatenate(attr($lid, 'name'), ' (', $lid_nr, ') voert geen praktijk van soort ', $praktijk_type);
log('warning', $msg);
strAdd(html, '<p style="color:red">', $msg, '</p>');
,
$pr = entity\get('Account', $primary_account_id);
log('warning', 'praktijk: ', attr($pr, 'naam'));
$mbkdatum = attr($lid, 'mBKDatum');
ifThen($mbkdatum,
$mbkdatum = datetime\format($mbkdatum, 'Europe/Amsterdam', 'DD-MM-YYYY');
);
$vogdatum = attr($lid, 'datumVOG');
ifThen($vogdatum,
$vogdatum = datetime\format($vogdatum, 'Europe/Amsterdam', 'DD-MM-YYYY');
);
$diplomadatum = attr($lid, 'vakopleidingDatumDiploma');
ifThen($diplomadatum,
$diplomadatum = datetime\format($diplomadatum, 'Europe/Amsterdam', 'DD-MM-YYYY');
);
$visitatiedatum = '';
ifThen($visitatie_datum,
$visitatiedatum = datetime\format($visitatie_datum, 'Europe/Amsterdam', 'DD-MM-YYYY');
);
$visitatietijdstip = '';
ifThen($visitatie_datum,
$visitatietijdstip = datetime\format($visitatie_datum, 'Europe/Amsterdam', 'HH:mm');
);
$attach_id = ext\pdf\fillin('Contact', $lid_id, $formulier_id, $form_out,
'naam_homeopaat', attr($lid, 'name'),
'naam_gevisiteerde', attr($lid, 'name'),
'AVAR_Visitatienummer', $visitatie_nummer,
'ondertekening_naam_gevisiteerde', attr($lid, 'name'),
'email_homeopaat', $email,
'naam_praktijk', attr($pr, 'naam'),
'agb_praktijk', attr($pr, 'agbcode'),
'rbcz_nummer', attr($lid, 'rbcznummer'),
'nvkh_nummer', attr($lid, 'lidnummer'),
'adres_praktijk_straat', attr($pr, 'shippingAddressStreet'),
'adres_praktijk_postcode', attr($pr, 'shippingAddressPostalCode'),
'adres_praktijk_plaats', attr($pr, 'shippingAddressCity'),
'agb_persoonlijk', attr($lid, 'agbcode'),
'datum_mbk_of_big', $mbkdatum,
'datum_vog', $vogdatum,
'email_retouradres', $retouradres,
'tel_prive', attr($lid, 'phoneNumber'),
'tel_praktijk', attr($pr, 'phoneNumber'),
'websites', attr($pr, 'website'),
'datum_diploma_vakopleiding', $diplomadatum,
'bijscholingsdagen_laatste_jaren', $bijscholing,
'datum_nascholing_big', 'Nvt',
'datum_visitatie', $visitatiedatum,
'tijdstip_visitatie', $visitatietijdstip,
'AVAR_Visitatienummer', $visitatienummer
);
log('warning', 'attachment id :', $attach_id);
$body = configGet('visitatie-informatie-email');
$scr_fnln = configGet('script-to-firstname-lastname');
$param_name = attr($lid, 'name');
exec($scr_fnln);
$lid_name = $val_fn_ln;
$param_name = $visiteur_name;
exec($scr_fnln);
$visiteur_name = $val_fn_ln;
$visitatie_dt = datetime\format($visitatie_datum, 'Europe/Amsterdam', 'DD/MM/YYYY');
$body = string\replace($body, '{{visitatie-datum}}', $visitatie_dt);
$body = string\replace($body, '{{visitatie-tijdstip}}', $visitatietijdstip);
$body = string\replace($body, '{{visitatie-nummer}}', $visitatienummer);
$body = string\replace($body, '{{nvkh-afzender}}', $nvkh_afzender);
$body = string\replace($body, '{{visiteur}}', $visiteur_name);
$body = string\replace($body, '{{wacht-dagen}}', string\concatenate('', $visitatie_wacht_dagen));
$body = string\replace($body, '{{retourdatum}}', $two_weeks_before_visitatiedatum);
$body = string\replace($body, '{{secretariaat-adres}}', $secretariaat_email);
$body = string\replace($body, '{{lid-naam}}', $lid_name);
$body = ext\htmlize($body, 'Contact', attr($lid, 'id'));
$userId = env\userAttribute('id');
$subject = 'Visitatieformulier voor visitatie d.d. {{datum}}';
$subject = string\replace($subject, '{{datum}}', $visitatie_dt);
ifThenElse($testrun,
log('warning', 'Dit is een testrun, er wordt geen email verstuurd');
,
$emailId = record\create('Email',
'subject', $subject,
'body', $body,
'to', $emailadres,
'attachmentsIds', list($attach_id),
'assignedUser', $userId,
'isUser', true,
'parentType', 'Contact',
'parentId', $lid_id
);
ext\email\send($emailId);
);
);
$i = $i + 1;
);
,
log('warning', 'Vink uitvoeren aan om dit script uit te voeren');
);
@@ -0,0 +1 @@
script-visitatie-stuur-formulier
+1 -1
View File
@@ -68,7 +68,7 @@
(re #px"[/><]")
(mk-name (lambda (name ext) (build-path dir
(string-append
(regexp-replace* name re "_") "." ext))))
(regexp-replace* re name "_") "." ext))))
)
(displayln (format "making ~a / ~a" dir name))
@@ -0,0 +1 @@
Testscript voor EspoCRM Upgrades (voor systeembeheer)
+1
View File
@@ -0,0 +1 @@
66ed76ba5e58baf04
+464
View File
@@ -0,0 +1,464 @@
// last execution: Tue Oct 01 2024 15:18:51 GMT+0200 (Midden-Europese zomertijd)
$par_hooked_formula_test=true;
$par_test_pdf_and_mail=true;
$par_espocrm_version=list('8', '-', '6', '7');
$par_tabel_rijen_per_pagina=20;
$espocrm_ver = array\at($par_espocrm_version, 0);
$aantal_rijen_op_een_pagina = $par_tabel_rijen_per_pagina;
// Constanten
$h_col = "#b3ccff";
$hh_col = "#b3ffb3";
$t_col = "#ffff99";
$test_email = 'hans@dijkewijk.nl';
// Test script
log('warning', '00 Testscript Upgrade');
logAdd(log);
logAdd(log, $hh_col, '00 Testscript Upgrade');
ifThenElse($espocrm_ver == '-',
logAdd(log, 'info', 'Log cleared, run script with other version than "-"');
html = '';
logAdd(log, 'info', 'HTML Report cleared');
,
// Hooked formula tests
ifThen($par_hooked_formula_test,
logAdd(log, $hh_col, 'Testing Hooked Formulas');
// Record\FetchManyHash
logAdd(log, $h_col, 'Record\FetchManyHash');
$rows = record\FetchManyHash('Contact', 'id, lidnummer, name, regiocode, datumRegistratie', 'name', 'asc');
$n = array\length($rows);
logAdd(log, 'info', 'FetchManyHash: ', $n);
$rows = record\FetchManyHash('Contact', 'id, lidnummer, name', 'name', 'asc', 'lidnummer=', 1935);
$n = array\length($rows);
logAdd(log, 'info', 'FetchManyHash: ', $n);
$contact = array\at($rows, 0);
$contact_id = hash\get($contact, 'id');
logAdd(log, 'info', 'id = ', hash\get($contact, 'id'));
logAdd(log, 'info', 'contact name: ', hash\get($contact, 'name'), ' nummer: ', hash\get($contact, 'lidnummer'), ', id = ', $contact_id);
// Record\FindMany
logAdd(log, 'warning', 'Record\FindMany, While, Entity\Get, Attr');
$rows = record\FindMany('Contact', 'name', 'asc', 'lidnummer>=', 1930, 'lidnummer<=', 1940);
$n = array\length($rows);
logAdd(log, 'info', 'FetchManyHash: ', $n);
$i = 0;
while($i < $n,
$c = Entity\Get('Contact', array\at($rows, $i));
logAdd(log, 'info', '--contact: ', attr($c, 'name'), ', nummer: ', attr($c, 'lidnummer'));
$i = $i + 1;
);
// EntityGroup
logAdd(log, $h_col, 'EntityGroup');
// Entity Functions
logAdd(log, $t_col, 'Entity\GetMany, SetAttr');
$entities = Entity\GetMany('Contact', 10, 'lidnummer', 'asc', 'lidnummer=', 1935);
$c = array\at($entities, 0);
$id = attr($c, 'id');
logAdd(log, 'info', 'contact c: id = ', $id);
logAdd(log, $t_col, 'Entity\Get');
$c_orig = Entity\Get('Contact', $id);
logAdd(log, 'info', '$c_orig: ', attr($c_orig, 'lidnummer'));
logAdd(log, 'info', '--fetched entity:', attr($c, 'lidnummer'), ' opmerking: ', attr($c, 'description'));
$s = string\concatenate('opmerking nieuw: ', datetime\now());
setAttr($c, 'description', $s);
logAdd(log, $t_col, 'Entity\Save');
logAdd(log, 'info', '--updated entity:', attr($c, 'lidnummer'), ' opmerking: ', attr($c, 'description'));
entity\save($c);
logAdd(log, 'info', 'entity saved');
logAdd(log, $t_col, 'Entity\GetRelated');
$rel = Entity\GetRelated($c, 'dossierdocumenten', 1000, 'name', 'asc');
$i = 0;
while($i < array\length($rel),
$account = array\at($rel, $i);
logAdd(log, 'info', $i, ': ', attr($account, 'name'));
$i = $i + 1;
);
logAdd(log, $t_col, 'Entity\This');
$e = entity\this();
logAdd(log, 'info', '--Entity\This->name = ', attr($e, 'name'));
// Config
logAdd(log, $h_col, 'Config');
logAdd(log, 'Config functions - clearing cache');
ConfigClearCache();
logAdd(log, 'config_exists hoi: ', ConfigExists('hoi'));
logAdd(log, 'config_exists visitatie-geldigheid-in-jaren: ', ConfigExists('visitatie-geldigheid-in-jaren'));
ConfigInc('visitatie-geldigheid-in-jaren');
logAdd(log, 'config_get visitatie-geldigheid-in-jaren: ', ConfigGet('visitatie-geldigheid-in-jaren'));
ConfigSet('visitatie-geldigheid-in-jaren', 5);
logAdd(log, 'config_get visitatie-geldigheid-in-jaren: ', ConfigGet('visitatie-geldigheid-in-jaren'));
// StrAdd
logAdd(log, $h_col, 'StrAdd functions');
$str = "Hoi";
logAdd(log, $str);
strAdd($str, ' Hans');
logAdd(log, 'warning', $str);
// exec
logAdd(log, $h_col, 'Exec functions');
$script = '$i = $i +1;logAdd(log, "increasing value to ", $i)';
$i = 0;
Exec($script);
Exec($script);
// Conversion
logAdd(log, $h_col, 'Conversion');
$a = '20';
logAdd(log, '(int) $a = ', toInt($a));
logAdd(log, '(double) $a = ', toDouble($a));
$b = toDouble($a);
$b = $b + 0.1;
logAdd(log, '(string) $b = ', toString($b));
// To Json file
logAdd(log, $h_col, 'ToJsonFile');
logAdd(log, 'toJsonFile: ', toJsonFile('000_upgrade_test.json', $c));
// Diff
logAdd(log, 'warning', 'Diff');
logAdd(log, 'diff: ', Diff($c_orig, $c));
// ArrayGroup
logAdd(log, $h_col, 'ArrayGroup');
logAdd(log, $t_col, 'Array\Set');
$a = list(10, 20, 30);
logAdd(log, 'info', '$a[1] = ', array\at($a, 1));
$a1 = array\at($a, 1) * 2.3;
logAdd(log, 'info', '$a1 = ', $a1);
$a = array\set($a, 1, $a1);
logAdd(log, 'info', '$a[1] = ', array\at($a, 1));
// ExtGroup
logAdd(log, $h_col, 'ExtGroup');
logAdd(log, $t_col, 'Ext\Htmlize');
$body = '<html><head></head><body>Beste {{name}},<br><br>Dit is een test voor {{today}}.</body></html>';
logAdd(log, 'info', $body);
$body = ext\htmlize($body, 'Contact', attr($c, 'id'));
logAdd(log, 'info', $body);
logAdd(log, $t_col, 'Ext\Begin, Ext\Commit');
Ext\Begin();
Entity\Save($c);
Entity\Save($c);
Ext\Commit();
logAdd(log, $t_col, 'Ext\CopyFile');
$icons = Entity\GetMany('StandaardIcon', 1, 'name', 'asc');
$icon_doc = array\at($icons, 0);
$file_id = attr($icon_doc, 'iconId');
logAdd(log, 'info', 'Standaard Icon = ', attr($icon_doc, 'name '), ', File Id = ', $file_id);
$file_id_copy = Ext\CopyFile($file_id, Entity\This());
logAdd(log, 'info', 'Copied Attachement = ', $file_id_copy);
logAdd(log, 'info', 'Deleting created attachement');
//Record\Delete('Attachment', $file_id_copy); // Vanaf EspoCRM 7.4
ifThen($par_test_pdf_and_mail,
// ExtGroup\PdfGroup
logAdd(log, $h_col, 'Ext\PdfGroup');
logAdd(log, $t_col, 'Ext\Pdf\PdfFillIn');
log('warning', 'Ext\Pdf\PdfFillIn');
$visitatie_formulier_id = configGet('visitatie-formulier');
$formulier_id = $visitatie_formulier_id;
$lid = $c;
log('warning', 'Lid: ', attr($lid, 'lidnummer'));
$praktijken = Entity\GetRelated($c, 'accounts', 1, 'name', 'asc');
log('warning', 'praktijken: ', array\length($praktijken));
$pr = array\at($praktijken, 0);
$lid_id = attr($c, 'contact_id');
$lid_nr = attr($c, 'lidnummer');
$lid_name = attr($c, 'name');
logAdd(log, 'warning', '$lid_name = ', $lid_name);
log('warning', '$lid_name = ', $lid_name);
$form_out = string\concatenate('visitatie-vragenlijst-', $lid_nr, '.pdf');
$visitatiedatum = '27-08-2024';
$two_weeks_before_visitatiedatum = '01-08-2024';
$visitatietijdstip = '12:03';
$visitatienummer = '12345';
$visiteurname = 'Liesbeth Kruyswijk';
$nvkh_afzender = 'sysadm@nvkh.nl';
$visitatie_wacht_dagen = 10;
logAdd(log, 'info', 'visitatie vragenformulier avar document : ', $form_out);
$attach_id = ext\pdf\fillin('Contact', $lid_id, $formulier_id, $form_out,
'naam_homeopaat', attr($lid, 'name'),
'naam_gevisiteerde', attr($lid, 'name'),
'AVAR_Visitatienummer', $visitatie_nummer,
'ondertekening_naam_gevisiteerde', attr($lid, 'name'),
'email_homeopaat', $email,
'naam_praktijk', attr($pr, 'naam'),
'agb_praktijk', attr($pr, 'agbcode'),
'rbcz_nummer', attr($lid, 'rbcznummer'),
'nvkh_nummer', attr($lid, 'lidnummer'),
'adres_praktijk_straat', attr($pr, 'shippingAddressStreet'),
'adres_praktijk_postcode', attr($pr, 'shippingAddressPostalCode'),
'adres_praktijk_plaats', attr($pr, 'shippingAddressCity'),
'agb_persoonlijk', attr($lid, 'agbcode'),
'datum_mbk_of_big', $mbkdatum,
'datum_vog', $vogdatum,
'email_retouradres', $retouradres,
'tel_prive', attr($lid, 'phoneNumber'),
'tel_praktijk', attr($pr, 'phoneNumber'),
'websites', attr($pr, 'website'),
'datum_diploma_vakopleiding', $diplomadatum,
'bijscholingsdagen_laatste_jaren', $bijscholing,
'datum_nascholing_big', 'Nvt',
'datum_visitatie', $visitatiedatum,
'tijdstip_visitatie', $visitatietijdstip,
'AVAR_Visitatienummer', $visitatienummer
);
logAdd(log, 'info', 'attachment id :', $attach_id);
$body = configGet('visitatie-informatie-email');
$scr_fnln = configGet('script-to-firstname-lastname');
$param_name = $lid_name;
logAdd(log, 'info', 'lid: ', $param_name);
exec($scr_fnln);
$lid_name = $val_fn_ln;
logAdd(log, 'info', 'lid_name: ', $lid_name);
$param_name = $visiteur_name;
exec($scr_fnln);
$visiteur_name = $val_fn_ln;
$emailadres = $test_email;
$secretariaat_email = 'secretariaat@nvkh.nl';
$visitatie_dt = datetime\format(datetime\now(), 'Europe/Amsterdam', 'DD/MM/YYYY');
logAdd(log, 'repl1');log('warning', 'repl1');
$body = string\replace($body, '{{visitatie-datum}}', $visitatie_dt);
logAdd(log, 'repl2');log('warning', 'repl2');
$body = string\replace($body, '{{visitatie-tijdstip}}', $visitatietijdstip);
logAdd(log, 'repl3');log('warning', 'repl3');
$body = string\replace($body, '{{visitatie-nummer}}', $visitatienummer);
logAdd(log, 'repl4');log('warning', 'repl4');
$body = string\replace($body, '{{nvkh-afzender}}', $nvkh_afzender);
logAdd(log, 'repl5');log('warning', 'repl5');
$body = string\replace($body, '{{visiteur}}', $visiteur_name);
logAdd(log, 'repl6');log('warning', 'repl6');
$body = string\replace($body, '{{wacht-dagen}}', string\concatenate('', $visitatie_wacht_dagen));
logAdd(log, 'repl7');log('warning', 'repl7');
$body = string\replace($body, '{{retourdatum}}', $two_weeks_before_visitatiedatum);
logAdd(log, 'repl8');log('warning', 'repl8');
$body = string\replace($body, '{{secretariaat-adres}}', $secretariaat_email);
logAdd(log, 'repl9');log('warning', 'repl9');
$body = string\replace($body, '{{lid-naam}}', $lid_name);
logAdd(log, 'replA');log('warning', 'replA');
$body = ext\htmlize($body, 'Contact', attr($lid, 'id'));
$userId = env\userAttribute('id');
$subject = 'Upgrade Test PdfFillIn {{datum}}';
$subject = string\replace($subject, '{{datum}}', $visitatiedatum);
$emailId = record\create('Email',
'subject', $subject,
'body', $body,
'to', $emailadres,
'attachmentsIds', list($attach_id),
'assignedUser', $userId,
'isUser', true,
'parentType', 'Contact',
'parentId', $lid_id
);
ext\email\send($emailId);
);
// GlobalGroup
$key = 'upgrade-test-script-global-key';
logAdd(log, 'info', 'ConfigGet for key "', $key, '"');
$cg = ConfigGet($key);
ifThenElse($cg != 0,
Global\Set($key, $cg),
Global\UnSet($key)
);
logAdd(log, $h_col, 'GlobalGroup');
logAdd(log, $t_col, 'Global\IsSet');
$is = Global\IsSet($key);
ifThenElse($is, $is = 'yes', $is = 'no');
logAdd(log, 'info', $key, ' iset = ', $is);
ifThenElse($is == 'yes',
logAdd(log, $t_col, 'Global\Get');
$v = Global\Get($key);
$v = $v + 1;
logAdd(log, $t_col, 'Global\Set');
Global\Set($key, $v);
,
logAdd(log, 'info', 'initializing ', $key, ' to 1');
$v = 1;
logAdd(log, $t_col, 'Global\Set');
Global\Set($key, $v);
);
logAdd(log, 'info', 'Key value: ', $key, ' = ', Global\Get($key));
ifThen($v > 3,
logAdd(log, 'info', 'clearing ', $key);
logAdd(log, $t_col, 'Global\UnSet');
Global\UnSet($key);
);
ifThenElse(Global\IsSet($key),
logAdd(log, 'info', $key, ' is still set');
ConfigSet($key, $v);
logAdd(log, 'warning', 'Run this test another time!');
,
logAdd(log, 'info', $key, ' is not set anymore');
ConfigSet($key, 0);
logAdd(log, 'info', 'This test is now completed.');
);
// HashGroup
logAdd(log, $h_col, 'HashGroup');
logAdd(log, $t_col, 'Hash\New');
$hash_1 = Hash\New();
logAdd(log, $t_col, 'Hash\Set');
$hash_1 = Hash\Set($hash_1, 'key', 122213);
logAdd(log, $t_col, 'Hash\Get');
$v = Hash\Get($hash_1, 'key');
logAdd(log, 'info', 'Value for "key" = ', $v);
$hash_1 = Hash\Set($hash_1, 'key2', 'HIHI');
log('warning', 'getting keys');
$keys = Hash\Keys($hash_1);
logAdd(log, $t_col, 'Hash\Keys');
$i = 0;
$n = array\length($keys);
logAdd(log, 'info', 'Number of keys: ', $n);
log('warning', 'Number of Keys: ', $n);
while($i < array\length($keys),
$key_i = array\at($keys, $i);
logAdd(log, 'info', 'key ', $i, ' = \"', $key_i, '\", value = ', hash\get($hash_1, $key_i));
$i = $i + 1;
);
logAdd(log, $t_col, 'Hash\IsSet');
logAdd(log, 'info', 'hash\isset key2: ', Hash\IsSet($hash_1, 'key2'));
ifThen($espocrm_ver != '6',
logAdd(log, $t_col, 'Hash\Copy');
$hash_2 = Hash\Copy($hash_1);
);
logAdd(log, $t_col, 'Hash\UnSet');
$hash_1 = Hash\UnSet($hash_1, 'key2');
logAdd(log, 'info', 'hash\isset($hash_1, "key2"): ', Hash\IsSet($hash_1, 'key2'));
ifThen($espocrm_ver != '6',
logAdd(log, 'info', 'hash\isset($hash_2, "key2"): ', Hash\IsSet($hash_2, 'key2'));
);
// RecordGroup
logAdd(log, $h_col, 'RecordGroup');
logAdd(log, 'info', 'Using Contact Id ', $contact_id);
logAdd(log, $t_col, 'Record\CountRel');
$count = Record\CountRel('Contact', $contact_id, 'accounts');
logAdd(log, 'info', 'Record\CountRel = ', $count);
logAdd(log, $t_col, 'Record\FetchManyHash - ALREADY TESTED');
logAdd(log, $t_col, 'Record\FindMany - ALREADY TESTED');
logAdd(log, $t_col, 'Record\Create - ALREADY TESTED');
logAdd(log, $t_col, 'Record\FetchMany');
$rows = Record\FetchMany('Contact', 'id, lidnummer', 'lidnummer', 'desc', 'lidnummer>', 1934, 'lidnummer<', 1939);
logAdd(log, 'info', 'Fetched ', array\length($rows), ' rows');
$i = 0;
while($i < array\length($rows),
$row = array\at($rows, $i);
logAdd(log, 'info', $i, ' - id = ', array\at($row, 0), ', lidnummer = ', array\at($row, 1));
$i = $i + 1;
);
logAdd(log, $t_col, 'Record\FetchRelatedMany');
$rows = Record\FetchRelatedMany('Contact', $contact_id, 'nascholingstotalen', 'id, jaar', 'jaar', 'desc', 'jaar>=', 2022);
logAdd(log, 'info', 'Fetched ', array\length($rows), ' rows');
$i = 0;
while($i < array\length($rows),
$row = array\at($rows, $i);
logAdd(log, 'info', $i, ' - id = ', array\at($row, 0), ', jaar = ', array\at($row, 1));
$i = $i + 1;
);
logAdd(log, $t_col, 'Record\FetchRelatedManyHash');
$rows = Record\FetchRelatedManyHash('Contact', $contact_id, 'nascholingstotalen', 'id, jaar', 'jaar', 'desc', 'jaar>=', 2022);
logAdd(log, 'info', 'Fetched ', array\length($rows), ' rows');
$i = 0;
while($i < array\length($rows),
$row = array\at($rows, $i);
logAdd(log, 'info', $i, ' - id = ', hash\get($row, 'id'), ', jaar = ', hash\get($row, 'jaar'));
$i = $i + 1;
);
logAdd(log, $t_col, 'Record\Recalculate');
Record\Recalculate('Contact', 'id=', $contact_id);
logAdd(log, 'warning', 'Check the EspoCRM Logs for this one');
logAdd(log, $h_col, 'StringGroup');
logAdd(log, $t_col, 'String\Tobase64');
$b64 = String\Tobase64($contact_id);
logAdd(log, 'info', 'id = ', $contact_id, ', - b64: ', $b64);
logAdd(log, $h_col, 'TableGroup');
html = '';
$p_page_len = $aantal_rijen_op_een_pagina;
$h = '';
strAdd($h, '<div class="nvkhresult">');
$table = table\new('Naam', 75,
'Lidnummer', 5, 'right',
'registratiejaar', 20, 'center'
);
table\rowsPerPage($table, $p_page_len);
table\filename($table, 'upgrade_test_tabel');
$rows = record\FetchManyHash('Contact', 'id, lidnummer, name, datumRegistratie, lastName', 'lastName', 'desc', 'lidnummer>', 1934, 'lidnummer<', 1980);
$n = array\length($rows);
$i = 0;
while($i < $n,
$row = array\at($rows, $i);
$contact_id = hash\get($row, 'id');
$name = hash\get($row, 'name');
$reg_dat = hash\get($row, 'datumRegistratie');
$reg_jaar = datetime\year($reg_dat);
$lidnummer = hash\get($row, 'lidnummer');
logAdd(log, 'info', $i, ' - id = ', $contact_id, ', name = ', $name, ', reg_jaar = ', $reg_jaar, ', lidnummer = ', $lidnummer);
table\add($table,
table\link(string\concatenate('/#Contact/view/', $contact_id), $name),
string\concatenate(' ', $lidnummer),
toString($reg_jaar)
);
$i = $i + 1;
);
$table_html = table\toHtml($table);
strAdd($h, $table_html);
strAdd($h, '</div>');
html = string\concatenate('<h1>Upgrade Testscript Report</h1>', $h);
logAdd(log, $t_col, 'Table\New, Table\Add, Table\RowsPerPage, Table\Filename, Table\toHtml, Table\Link');
logAdd(log, 'info', 'Testresult: see Report');
logAdd(log, 'warning', 'Table\Style is not tested');
);
);
@@ -0,0 +1 @@
000 Upgrade Test
+1
View File
@@ -0,0 +1 @@
#<sql-null>
+1
View File
@@ -0,0 +1 @@
66ed7ad21b4740be1
+5
View File
@@ -0,0 +1,5 @@
// last execution: 2026-08-28 10:28:02
$cfg = ConfigGet('job-test');
log('warning', 'JobTest: Current value for config job-test:', $cfg);
$cfg = datetime\now();
ConfigSet('job-test', $cfg);
+1
View File
@@ -0,0 +1 @@
000 job test
@@ -0,0 +1 @@
Berekent alle nascholingstotalen opnieuw, voor alle jaren. Dat zijn er dan erg veel.
@@ -0,0 +1 @@
5fa55e9426ec82119
@@ -0,0 +1,76 @@
// last execution: 2026-08-28 03:30:01
$script_alle_totalen = configGet('script-bereken-nascholingstotalen');
$script_calc_totaal_voor_jaar = configGet('script-bereken-nascholingstotaal-voor-jaar');
log('warning', 'Fetching Maximum nascholingstotaal');
$rows= Record\FetchManyHash('Nascholingstotaal', 'jaar', 'jaar', 'desc', 'limit by', 1);
$n_rows = array\length($rows);
log('warning', 'n_rows=', $n_rows);
logAdd(log);
logAdd(log, 'info', 'n_rows = ', $n_rows);
ifThenElse($n_rows == 0,
logAdd(log, 'info', '0 nascholingstotalen');
,
logAdd(log, 'info', $n_rows, ' nascholingstotalen');
$row = array\at($rows, 0);
$max_jaar = hash\get($row, 'jaar');
logAdd(log, 'info', 'Maximum jaar met nascholingstotalen = ', $max_jaar);
logAdd(log, 'info', 'Herberekenen van alle nascholingstotalen.');
//global\set('nascholingstotalen-niet-herberekenen', true);
//record\recalculate('Nascholingstotaal');
//global\unset('nascholingstotalen-niet-herberekenen');
logAdd(log, 'info', 'Voor alle contacten met regiocode < 30, nascholingstotaal herberekenen en dan ook totaliseren');
$rows = Record\FetchManyHash('Contact', 'id, lidnummer, lastName, regiocode',
'lastName', 'asc');
$n_rows = array\length($rows);
$i = 0;
log('warning', 'i=', $i, ', n_rows=', $n_rows);
while($i < $n_rows,
$row = array\at($rows, $i);
$contact_id = hash\get($row, 'id');
$regiocode = 0 + hash\get($row, 'regiocode');
ifThen($regiocode < 30,
$lidnummer = hash\get($row, 'lidnummer');
$lastname = hash\get($row, 'lastName');
logAdd(log, 'info', 'regiocode: ', $regiocode, ', lid: ', $lidnummer, ' - ', $lastname, ' - herberekenen...');
log('warning', 'Herberekenen alle totalen voor lid ', $lidnummer, ', id = ', $contact_id);
$tot_rows = Record\FetchManyHash('Nascholingstotaal', 'id, jaar',
'jaar', 'asc', 'contactId=', $contact_id);
$n_tot_rows = array\length($tot_rows);
ifThenElse($n_tot_rows == 0,
logAdd(log, 'info', 'Geen nascholingstotalen voor dit lid');
,
$t_row = 0;
while($t_row < $n_tot_rows,
$tot_row = array\at($tot_rows, $t_row);
$jaar = hash\get($tot_row, 'jaar');
$t_id = hash\get($tot_row, 'id');
logAdd(log, 'info', 'Berekenen jaar voor lid ', $lidnummer, ', jaar:', $jaar);
$no_db_update == false;
$year = $jaar;
Exec($script_calc_totaal_voor_jaar);
$t_row = $t_row + 1;
);
// bereken de hele zaak
$year = $jaar;
Exec($script_alle_totalen);
);
);
$i = $i + 1;
);
);
@@ -0,0 +1 @@
Alle nascholingstotalen herberekenen
@@ -0,0 +1 @@
Berekent de nascholingstotalen voor één lid
@@ -0,0 +1 @@
620ae9091bdb2322c
@@ -0,0 +1,44 @@
// last execution: Fri Aug 28 2026 11:05:10 GMT+0200 (Midden-Europese zomertijd)
$me = Entity\This();
logAdd(log);
logAdd(log, 'info', 'Ophalen naberekeningsscript voor één jaar');
$jaar_calc_script = configGet('script-bereken-nascholingstotaal-voor-jaar');
logAdd(log, 'info', 'Ophalen naberekeningsscript voor de jaren');
$jaren_calc_script = configGet('script-bereken-nascholingstotalen');
logAdd(log, 'info', 'Leden ophalen bij dit script');
$contacts = Entity\GetRelated($me, 'contacts', 1000, 'lidnummer', 'asc');
$n = Array\Length($contacts);
logAdd(log, 'info', $n, ' Leden');
$i = 0;
while($i < $n,
$contact = array\at($contacts, $i);
$contact_id = Attr($contact, 'id');
logAdd(log, 'warning', 'Lid: ', Attr($contact, 'lidnummer'), ' - ', Attr($contact, 'name'));
logAdd(log, 'Ophalen nascholingstotalen');
$nascholingstotalen = Entity\GetRelated($contact, 'nascholingstotalen', 1000, 'jaar', 'asc');
logAdd(log, 'opgehaald');
$m = array\length($nascholingstotalen);
logAdd(log, 'info', ' #nascholingstotalen: ', $m);
$j = 0;
while($j < $m,
$nascholingstotaal = array\at($nascholingstotalen, $j);
$year = Attr($nascholingstotaal, 'jaar');
logAdd(log, 'info', ' Herberekenen jaar: ', $year);
Exec($jaar_calc_script);
$j = $j + 1;
);
logAdd(log, 'info', 'Totalen herberekenen');
Exec($jaren_calc_script);
$i = $i + 1;
);
@@ -0,0 +1 @@
Bereken totaal voor één lid
@@ -0,0 +1,3 @@
Voert de laatste stand van de gegevens uit voor CZ.
Alle leden met regiocode < 30 worden uitgevoerd.
+1
View File
@@ -0,0 +1 @@
5ed765f5bd8a8b9bc
+88
View File
@@ -0,0 +1,88 @@
// last execution: Fri Apr 25 2025 10:06:42 GMT+0200 (Midden-Europese zomertijd)
$par_Regels_per_pagina=18;
$par_Alleen_buitenlandse=false;
$par_Excel_Bestandsnaam_voorzien_van_datum=true;
$par_Excel_Bestandsnaam='CZ Kwartaallijst';
$p_filename = $par_Excel_Bestandsnaam;
ifThen($par_Excel_Bestandsnaam_voorzien_van_datum,
$now = datetime\today();
$fmt = datetime\format($now, 'Europe/Amsterdam', 'DD-MM-YYYY');
$p_filename = string\concatenate($p_filename, ' ', $fmt);
);
$p_page_len = $par_Regels_per_pagina;
ifThen($p_page_len < 1, $p_page_len = 10;);
$p_no_nl = $par_Alleen_buitenlandse;
html = '';
logAdd(log);
$rows = record\fetchManyHash('Contact',
'id, agbcode, initialsName, middleName, lastName, addressStreet, addressPostalCode, addressCity, addressCountry, regiocode',
'lastName', 'asc');
$n = array\length($rows);
logAdd(log, 'Contacts read: ', $n);
$h = '';
strAdd($h, '<div class="nvkhresult">');
$table = table\new('Persoonlijk AGB',
'VolledigeNaam',
'Adres',
'Postcode',
'Woonplaats', 'asc',
'Land'
);
table\rowsPerPage($table, $p_page_len);
table\filename($table, $p_filename);
logAdd(log, 'Rows Per Page: ', $p_page_len);
logAdd(log, 'Filename: ', $p_filename);
$i = 0;
while($i < $n,
$e = array\at($rows, $i);
$regiocode = hash\get($e, 'regiocode');
$agbcode = hash\get($e, 'agbcode');
ifThenElse($agbcode == null, $agbcode = '';, $agbcode = string\trim($agbcode););
$regiocode = $regiocode + 0;
$meenemen = $regiocode < 30 && $agbcode != '';
ifThen($meenemen,
$initials = hash\get($e, 'initialsName');
$voorvoegsel = hash\get($e, 'middleName');
$naam = hash\get($e, 'lastName');
$adres = hash\get($e, 'addressStreet');
$postcode = hash\get($e, 'addressPostalCode');
$plaats = hash\get($e, 'addressCity');
$country = hash\get($e, 'addressCountry');
ifThen($country == null || $country == '', $country = 'Nederland');
$report = true;
ifThen($country == 'Nederland' && $p_no_nl, $report = false;);
ifThen($voorvoegsel, $voorvoegsel = string\concatenate($voorvoegsel, ' '););
$fullname = string\concatenate($initials, ' ', $voorvoegsel, $naam);
$agbcode = string\replace($agbcode, '/', '');
ifThen($report,
table\add($table,
$agbcode, $fullname, $adres, $postcode, $plaats, $country
);
);
);
$i = $i + 1;
);
strAdd($h, table\toHtml($table));
strAdd($h, '</div>');
html=$h;
@@ -0,0 +1 @@
CZ Export Lijst
@@ -0,0 +1,3 @@
Checkt of leden met een regiocode < 30 een AGB voor hun praktijk hebben.
Checkt daarnaast of er een lege persoonlijke AGB code voor die leden.
En checkt of de AGB code aan het format voldoet: nn/nnnnnn.
@@ -0,0 +1 @@
5ed794a47a7f6b2b3
@@ -0,0 +1,123 @@
// last execution: Fri Dec 04 2020 19:25:55 GMT+0100 (Midden-Europese standaardtijd)
$par_Rapporteer_alleen_de_lege_Praktijk_AGBs=true;
$par_Maximum_aantal_rijen_per_pagina=12;
$par_Valide_AGB_Prefixen='84,90';
html = '';
logAdd(log);
$p_agb_report = $par_Rapporteer_alleen_de_lege_Praktijk_AGBs;
$p_page_len = $par_Maximum_aantal_rijen_per_pagina;
ifThen($p_page_len < 1,
$p_page_len = 10;
);
$agb_prefixes=string\replace($par_Valide_AGB_Prefixen, ',', '|');
$re_agb = string\concatenate('/^(', $agb_prefixes, ')[\/][0-9]{6,6}$/');
$rows = record\fetchManyHash('Contact',
'id, agbcode, firstName, middleName, lastName, emailAddress, regiocode',
'lastName', 'asc');
$n = array\length($rows);
logAdd(log, 'Contacts read: ', $n);
$h = '';
$table = table\new('AGB Persoonlijk', 10,
'AGB Praktijk', 10,
'Voornaam', 10, 'ellipsis',
'Achternaam', 20, 'asc', 'ellipsis',
'Praktijknaam', 25, 'ellipsis',
'Regiocode', 5, 'center',
'eMail', 20, 'ellipsis'
);
table\rowsPerPage($table, $p_page_len);
$i = 0;
while($i < $n,
$e = array\at($rows, $i);
$regiocode = hash\get($e, 'regiocode');
$r_code = $regiocode + 0;
$meenemen = $r_code < 30;
$naam = hash\get($e, 'lastName');
ifThen($meenemen,
$id = hash\get($e, 'id');
$praktijk_id = record\findRelatedOne('Contact', $id, 'accounts', 'type');
ifThenElse($praktijk_id,
$praktijk_rows = record\fetchManyHash('Account', 'naam, agbcode, type', 'type', 'asc', 'id=', $praktijk_id);
$praktijk_row = array\at($praktijk_rows, 0);
$praktijk_naam = hash\get($praktijk_row, 'naam');
$praktijk_agbcode = hash\get($praktijk_row, 'agbcode');
,
$praktijk_naam = '';
$praktijk_agbcode = '';
);
$style = '';
$report = true;
$problem = false;
ifThenElse($praktijk_agbcode != '' && $praktijk_agbcode != null,
$report = !$p_agb_report;
,
$problem = true;
ifThen(!$p_agb_report,
$style = 'background:#f78c81;';
);
);
$agbcode = hash\get($e, 'agbcode');
ifThen($agbcode == '' || $agbcode == null,
$problem = true;
$report = true;
ifThen(!$p_agb_report,
$style = 'background:#f78c81;';
);
);
ifThen(!$problem,
ifThen(string\match($agbcode, $re_agb) == null,
$style = 'background:#faa75f;';
$report = true;
);
ifThen(string\match($praktijk_agbcode, $re_agb) == null,
$style = 'background:#faa75f;';
$report = true;
);
);
ifThen($report,
$voornaam = hash\get($e, 'firstName');
$voorvoegsel = hash\get($e, 'middleName');
$email = hash\get($e, 'emailAddress');
ifThen($voorvoegsel,
$naam = string\concatenate($naam, ', ', $voorvoegsel);
);
table\add($table, $agbcode, $praktijk_agbcode,
$voornaam,
table\link(string\concatenate('/#Contact/view/', $id), $naam),
$praktijk_naam,
$regiocode, $email
);
table\style($table, $style);
);
);
$i = $i + 1;
);
strAdd($h, table\toHtml($table));
strAdd($h, '</div>');
html=$h;
@@ -0,0 +1 @@
Controle Praktijk-AGB
@@ -0,0 +1 @@
Updaten van alle nascholingstotaal records van <=2018, waarbij dagen medisch op 0 wordt gezet. Hierbij wordt niet per contact het totaal aan nascholingstotalen herberekend, maar worden alleen de individuele nascholingstotalen herberekend. Dit wordt gedaan door de globale variabele 'nascholingstotalen-niet-herberekenen' te zetten.
@@ -0,0 +1 @@
5f05d49d9948e27c7
@@ -0,0 +1,21 @@
// last execution: Tue Jul 14 2020 09:06:56 GMT+0200 (Midden-Europese zomertijd)
global\set('nascholingstotalen-niet-herberekenen', true);
logAdd(log);
$rows = record\fetchManyHash('Nascholingstotaal', 'id, jaar, dagenMedisch', 'name', 'asc', 'jaar<=', '2018');
logAdd(log, 'Aantal rijen:', array\length($rows));
$i = 0;
$n = array\length($rows);
while($i < $n,
$row = array\at($rows, $i);
$id = hash\get($row, 'id');
$jaar = hash\get($row, 'jaar');
record\update('Nascholingstotaal', $id, 'dagenMedisch', 0);
logAdd(log, 'Updating: ', $i, ' - ', $jaar);
$i = $i + 1;
);
global\unset('nascholingstotalen-niet-herberekenen');
@@ -0,0 +1 @@
Dagen Medisch <=2018 op 0
@@ -0,0 +1 @@
Triggert de herberekening van alle individuele nascholingsrecords.
@@ -0,0 +1 @@
5f0c8b06e797b2dc0
@@ -0,0 +1,5 @@
// last execution: Tue Jul 14 2020 08:58:56 GMT+0200 (Midden-Europese zomertijd)
global\set('nascholingstotalen-niet-herberekenen', true);
record\recalculate('Nascholingstotaal');
global\unset('nascholingstotalen-niet-herberekenen');
@@ -0,0 +1 @@
Herberekenen individuele nascholingstotaal-records
@@ -0,0 +1 @@
Triggert de contacten om de nascholingstotalen te herberekenen
@@ -0,0 +1 @@
5efa6f935ef17c59a
@@ -0,0 +1,32 @@
// last execution: Tue Jul 14 2020 13:08:34 GMT+0200 (Midden-Europese zomertijd)
logAdd(log);
$leden = Record\FetchManyHash('Contact', 'id, name, regiocode', 'name', 'asc');
$i = 0;
$n = array\length($leden);
logAdd(log, 'info', '#leden om te processen: ', $n);
while($i < $n,
$lid = array\at($leden, $i);
$regiocode = hash\get($lid, 'regiocode');
$r_code = string\substring($regiocode, 0, 2) + 0;
ifThenElse($r_code >= 30,
logAdd(log, 'info', $i, ': lid: ', hash\get($lid, 'name'), ' - regiocode >= 30');
,
logAdd(log, 'info', $i, ': lid: ', hash\get($lid, 'name'), ' - herberekenen nascholingstotalen');
$lid_id = hash\get($lid, 'id');
// Trigger recalculate van één van de nascholingen
$na_id = record\findRelatedOne('Contact', $lid_id, 'nascholingstotalen', 'createdAt', 'desc');
ifThen($na_id, record\recalculate('Nascholingstotaal', 'id=', $na_id); );
);
$i = $i + 1;
);
logAdd(log, 'info', 'Klaar.');
@@ -0,0 +1 @@
Herberekenen nascholingen
@@ -0,0 +1 @@
Maakt de doellijst met homeopaten resp. werkt deze bij
@@ -0,0 +1 @@
5f16fdf4c0b3bc6b8
@@ -0,0 +1,66 @@
// last execution: 2026-08-28 03:00:01
logAdd(log);
$entities = Entity\GetMany('TargetList', 1, 'name', 'asc', 'name=', 'Homeopaten');
$n = array\length($entities);
ifThenElse($n == 0,
logAdd(log, 'warning', 'Geen "Homeopaten" doellijst, maak deze eerst aan!');
,
logAdd(log, 'info', 'Homeopaten doellijst aanwezig, leden worden vervangen...');
$doellijst = array\at($entities, 0);
$id = attr($doellijst, 'id');
logAdd(log, 'info', 'Verwijderen leden met regiocode >=30');
$rows = record\fetchRelatedManyHash('TargetList', $id,
'contacts', 'id, lastName, regiocode',
'lastName', 'asc'
);
$n = array\length($rows);
logAdd(log, 'info', 'Aantal gerelateerde leden: ', $n);
$i = 0;
$rcnt = 0;
while($i < $n,
$row = array\at($rows, $i);
$code = hash\get($row, 'regiocode') + 0;
ifThen($code >= 30,
$lastname = hash\get($row, 'lastName');
$contact_id = hash\get($row, 'id');
logAdd(log, 'info', 'Verwijderen: ', $lastname, '; regiocode=', $code);
record\unrelate('TargetList', $id, 'contacts', $contact_id);
$rcnt = $rcnt + 1;
);
$i = $i + 1;
);
logAdd(log, 'info', 'Relateren leden met regiocode <30');
$rows = record\fetchManyHash('Contact', 'id, lastName, regiocode', 'lastName', 'asc');
$n = array\length($rows);
logAdd(log, 'info', 'Aantal leden om te beoordelen: ', $n);
$i = 0;
$cnt = 0;
$hom_cnt = 0;
while($i < $n,
$row = array\at($rows, $i);
$code = hash\get($row, 'regiocode') + 0;
ifThen($code < 30,
$hom_cnt = $hom_cnt + 1;
$contact_id = hash\get($row, 'id');
$r_id = record\findRelatedMany('TargetList', $id,
'contacts', 1, 'createdAt', 'desc',
'id=', $contact_id
);
ifThen(!$r_id,
$lastname = hash\get($row, 'lastName');
logAdd(log, 'info', 'Toevoegen lid: ', $lastname);
record\relate('TargetList', $id, 'contacts', $contact_id);
$cnt = $cnt + 1;
);
);
$i = $i + 1;
);
logAdd(log, 'info', $cnt, ' leden toegevoegd');
logAdd(log, 'info', $rcnt, ' leden verwijderd');
logAdd(log, 'info', $hom_cnt, ' leden in de lijst');
);
@@ -0,0 +1 @@
Homeopaten Doellijst Bijwerken
@@ -0,0 +1 @@
Koppelt de geïmporteerde nascholingstotalen aan de betreffende leden.
@@ -0,0 +1 @@
5ef9d2ba1e3e500f5
@@ -0,0 +1,44 @@
// last execution: Mon Jun 29 2020 15:53:33 GMT+0200 (Midden-Europese zomertijd)
$par_Nu_uitvoeren=1;
logAdd(log);
ifThenElse($par_Nu_uitvoeren == 0,
logAdd(log, 'info', "Zet 'Nu uitvoeren' op 1 om deze taak uit te voeren.");
,
$nascholingen = entity\getMany('Nascholingstotaal', 10000, 'jaar', '');
$i = 0;
$n = array\length($nascholingen);
logAdd(log, 'info', 'Aantal nascholingsrecords: ', $n);
while($i < $n,
$nascholing = array\at($nascholingen, $i);
$lidnr = attr($nascholing, 'lidnummer');
$jaar = attr($nascholing, 'jaar');
$contacts = entity\getMany('Contact', 1, 'name', '', 'lidnummer=', $lidnr);
log('error', $i, ': nascholingsjaar: ', $jaar, 'lidnummer: ', $lidnr);
ifThenElse(array\length($contacts) > 0,
$contact = array\at($contacts, 0);
$name = attr($contact, 'name');
setAttr($nascholing, 'contactId', attr($contact, 'id'));
entity\save($nascholing);
logAdd(log, 'info', $i, ': nascholingsjaar: ', $jaar, ', lidnummer: ', $lidnr, ' naam: ', $name);
,
logAdd(log, 'warning', $i, ': lidnummer: ', $lidnr, ' niet aanwezig in het systeem');
);
$i = $i + 1;
);
);
@@ -0,0 +1 @@
Import Nabewerking - Nascholingstotalen koppelen
@@ -0,0 +1 @@
Koppelt de geïmporteerde visitaties aan de betreffende leden
@@ -0,0 +1 @@
5ed18abfb4cefb71d
@@ -0,0 +1,36 @@
// last execution: Tue Jun 09 2020 13:51:55 GMT+0200 (Midden-Europese zomertijd)
$par_import=0;
logAdd(log);
ifThenElse($par_import == 1,
logAdd(log, 'Bezig de visitaties te koppelen aan de leden');
$records = record\fetchMany('Visitatie', 'id, lidnummer, name', 'lidnummer', 'asc');
$n = array\length($records);
logAdd(log, $n, ' visitaties ingelezen');
$i = 0;
while($i < $n,
$row = array\at($records, $i);
$lidnummer = array\at($row, 1);
$visitatie_id = array\at($row, 0);
$datum = array\at($row, 2);
$contact_id = record\findOne('Contact', 'createdAt', 'asc', 'lidnummer=', $lidnummer);
ifThenElse($contact_id,
$success = record\relate('Visitatie', $visitatie_id, 'lid', $contact_id);
ifThenElse($success,
logAdd(log, 'relateren contact_id = ', $contact_id, ' voor ', $lidnummer, ' gelukt, met datum ', $datum);
,
logAdd(log, 'error',
'relateren contact_id = ', $contact_id, ' voor ', $lidnummer, ' met datum ', $datum, 'niet gelukt'
);
);
,
logAdd(log, 'error', 'lidnummer "', $lidnummer, '" niet gevonden');
);
$i = $i + 1;
);
,
logAdd(log, 'Zet import op 1 om de visitatie nabewerking uit te voeren');
);
@@ -0,0 +1 @@
Import Nabewerking - Visitaties
@@ -0,0 +1 @@
Bewerkt de import na, als de parameter gelijk is aan 1
@@ -0,0 +1 @@
5ed0fa67cb3ab01e7
@@ -0,0 +1,72 @@
// last execution: Tue Jun 09 2020 13:51:49 GMT+0200 (Midden-Europese zomertijd)
$par_import=0;
logAdd(log);
IfThenElse($par_import,
$records = record\fetchMany('Account', 'id, name, lidnummers', 'name', 'asc', 'lidnummers!=', '');
$i = 0;
$n = array\length($records);
logAdd(log, 'Nabewerken: ', $n, ' praktijken');
while($i < $n,
$row = array\at($records, $i);
$account_id = array\at($row, 0);
$account_name = array\at($row, 1);
$lidnummers = array\at($row, 2);
logAdd(log, $account_id, ' - ', $lidnummers);
$i = $i + 1;
$lid_nummers = string\matchAll($lidnummers, '/[0-9]+/');
$j = 0;
$m = array\length($lid_nummers);
while($j < $m,
$lidnummer = array\at($lid_nummers, $j);
$contact_id = record\findOne('Contact', 'createdAt', 'asc', 'lidnummer=', $lidnummer);
ifThenElse($contact_id,
$success = record\relate('Account', $account_id, 'contacts', $contact_id);
ifThenElse($success,
logAdd(log, 'relateren contact_id = ', $contact_id, ' voor ', $lidnummer, ' gelukt');
,
logAdd(log, 'error', 'relateren contact_id = ', $contact_id, ' voor ', $lidnummer, ' niet gelukt');
);
,
logAdd(log, 'error', 'lidnummer "', $lidnummer, '" niet gevonden');
);
$j = $j + 1;
);
);
/*
$lid_nummers =
logAdd(log, 'lid_nummers = ', $lid_nummers);
logAdd(log, 'length = ', array\length($lid_nummers));
$i = 0;
$n = array\length($lid_nummers);
log('error', 'Praktijk:', 'n=', $n);
while(
$i < $n,
$lidnummer = array\at($lid_nummers, $i);
$lidnummer = $lidnummer + 0;
$contact_id = record\findOne('Contact', 'createdAt', 'asc', 'lidnummer=', $lidnummer);
ifThenElse($contact_id,
logAdd(log, 'Contact: linking contact_id = ', $contact_id);
record\relate('Account', $accountId, 'contacts', $contact_id),
logAdd(log, 'lidnummer ', $lidnummer, ' niet gevonden');
);
$i = $i + 1;
);
*/
,
logAdd(log, 'par_import = 0, de import nabewerking wordt niet uitgevoerd nu.');
);
@@ -0,0 +1 @@
Import Nabewerking - leden aan praktijken koppelen
@@ -0,0 +1 @@
Importeert CSV bestanden met lidnummer, #consulten (of leeg als er geen consulten waren; of niet ingevuld.)
@@ -0,0 +1 @@
60192aded6ee3632b
@@ -0,0 +1,116 @@
// last execution: Thu Feb 04 2021 11:28:51 GMT+0100 (Midden-Europese standaardtijd)
$csvfile_par_consultgegevens_als_csv='Lid Nummer,consulten 2019,\n1846,,\n1780,,\n1856,150,\n0045,,\n0878,200,\n1509,v,\n1697,,\n0325,,\n1316,v,\n1255,300,\n1871,,\n0600,362,\n1749,400,\n1938,,\n1055,,\n0949,,\n1885,v,\n1148,v,\n1258,65,\n1352,50,\n0982,100,\n1431,v,\n1924,v,\n0349,v,\n1849,,\n1761,155,\n1830,,\n1821,,\n0489,219,\n1940,,\n1682,v,\n1030,,\n1219,422,\n1675,93,\n1459,,\n0769,,\n0847,555,\n0871,v,\n0157,,\n1433,,\n1536,250,\n1158,,\n1621,,\n1820,112,\n1926,,\n0395,61,\n1436,,\n1880,,\n1896,18,\n1716,617,\n1799,,\n0220,584,\n1883,,\n1640,,\n1628,191,\n0723,,\n1242,,\n1914,168,\n0038,,\n1003,400,\n1762,,\n1256,,\n1718,304,\n1487,v,\n1259,,\n0049,212,\n1362,150,\n1706,352,\n1784,37,\n1274,v,\n1579,v,\n1547,,\n1565,,\n1001,200,\n1500,v, \n1790,33,\n1357,177,\n1727,,\n0751,520,\n1892,,\n0293,,\n1239,,\n0191,459,\n0257,v, \n1329,,\n1512,v,\n0853,,\n1842,62,\n1143,651,\n1935,40,\n1387,,\n1585,,\n0985,,\n1002,104,\n0265,760,\n0669,900,\n1872,24,\n1569,201,\n0743,,\n0577,185,\n1495,65,\n1643,90,\n1794,v,\n1750,208,\n1841,,\n1932,,\n0729,188,\n1658,,\n1571,,\n1796,,\n1713,252,\n1507,560,\n0205,900,\n0189,720,\n0956,90,\n0336,,\n1541,201,\n1933,,\n1278,262,\n0080,400,\n1690,,\n1824,25,\n1620,280,\n1584,815,\n0396,,\n0757,v,\n1736,178,\n0812,361,\n1533,,\n1063,71,\n1380,300,\n1358,380,\n1445,,\n1894,,\n1863,35,\n1681,194,\n1741,v,\n0963,,\n0778,1000,\n1205,350,\n1759,24,\n0726,,\n1293,250,\n1524,v,\n0421,,\n1203,3550,\n1878,,\n1865,,\n0111,550,\n1696,,\n1253,1000,\n1210,250,\n1288,,\n1666,v,\n1455,,\n1691,,\n0271,473,\n1787,,\n1859,728,\n0924,180,\n1811,,\n1079,90,\n1848,,\n1499,v,\n1260,445,\n0456,250,\n1826,18,\n1048,,\n1605,v,\n0961,1100,\n0451,,\n1457,,\n0685,500,\n0042,,\n1911,v,\n0957,180,\n1623,v,\n0084,,\n1828,50,\n1680,1000,\n1350,,\n1610,v,\n1684,,\n1720,190,\n0843,135,\n1869,v,\n1614,355,\n1418,190,\n1598,,\n1954,,\n1563,300,\n1919,77,\n0266,,\n1613,,\n1325,,\n1466,170,\n1747,4,\n0301,,\n0919,176,\n1729,,\n1589,v,\n1395,,\n1897,v,\n1669,,\n1171,v,\n1725,,\n1712,250,\n0286,557,\n0076,v,\n1920,,\n1693,v,\n0179,,\n1513,,\n0887,1100,\n1700,v,\n1622,v,\n0893,1219,\n0848,,\n0954,,\n1945,,\n1575,v,\n1936,,\n1917,200,\n1629,158,\n1321,310,\n0631,247,\n1895,,\n0180,,\n1860,,\n0230,,\n1853,,\n1532,253,\n1254,,\n0085,500,\n0606,500,\n1633,100,\n0398,300,\n1649,300,\n1709,160,\n1798,,\n1699,193,\n1816,35,\n1218,v,\n1868,27,\n1597,250,\n1804,,\n0799,84,\n1788,358,\n1934,40,\n0660,161,\n1810,,\n1854,,\n1428,173,\n1814,,\n1299,,\n0063,,\n0633,225,\n1939,,\n0807,450,\n0485,,\n1570,750,\n1634,280,\n1801,731,\n1889,,\n1578,,\n1554,v,\n1722,v,\n1627,230,\n1701,,\n1943,,\n0433,610,\n1652,,\n1730,285,\n1866,,\n1777,221,\n0190,496,\n1805,,\n0137,,\n1150,300,\n0525,107,\n1838,110,\n1803,96,\n1639,371,\n0140,227,\n1923,47,\n1827,,\n0866,213,\n1161,v,\n0355,39,\n1674,,\n0872,500,\n1737,180,\n1005,24,\n0155,220,\n0003,,\n1529,525,\n1040,,\n1359,250,\n0516,,\n0154,,\n1266,,\n0209,185,\n1858,,\n0185,v,\n1615,v,\n0004,125,\n1948,,\n1683,95,\n1086,v,\n0926,230,\n1899,,\n0756,60,\n1893,,\n1823,504,\n1141,,\n1808,,\n0287,,\n1464,150,\n1746,280,\n1916,,\n0967,340,\n0876,,\n1534,450,\n0861,1200,\n1949,,\n0363,204,\n0932,251,\n0953,500,\n1745,148,\n1929,,\n1653,v,\n1175,220,\n1740,54,\n1435,250,\n0226,124,\n0938,490,\n1432,400,\n1549,720,\n0047,299,\n1779,v,\n1035,431,\n1728,11,\n1797,,\n0788,v,\n1545,,\n0569,,\n0228,,\n0316,,\n1498,50,\n0461,,\n1711,108,\n0927,,\n0413,380,\n1600,,\n1887,,\n1733,v,\n1467,85,\n1641,,\n1813,,\n1425,,\n1724,900,\n1638,v,\n0869,,\n1096,710,\n0714,501,\n1781,v,\n0034,,\n1809,,\n0171,215,\n0935,360,\n0720,240,\n1510,222,\n1213,362,\n1648,833,\n1195,v,\n0203,143,\n1667,v,\n0533,v,\n1874,624,\n1556,206,\n1692,400,\n1857,,\n1465,400,\n1732,v,\n0721,,\n0899,,\n1873,,\n1891,,\n1942,15,\n1937,,\n0643,,\n0245,,\n0322,,\n1877,,\n1815,,\n0727,v,\n0292,,\n1062,,\n0112,,\n0113,502,\n0551,320,\n1562,670,\n1763,825,\n1383,,\n0984,,\n0114,,\n1468,,\n0648,1450,\n1179,,\n1703,v,\n0821,v,\n1785,,\n1886,,\n1791,290,\n0811,25,\n1572,,\n1698,108,\n1772,517,\n1471,203,\n1752,,\n0885,,\n1363,,\n1850,230,\n1178,325,\n1407,450,\n1812,,\n1773,738,\n1665,140,\n0388,217,\n1317,,\n0564,,\n0696,v,\n0875,v,\n0570,107,\n1625,,\n1941,,\n1283,,\n1084,173,\n1912,,\n1739,550,\n1612,61,\n1953,,\n1807,v,\n1422,540,\n1837,,\n0273,,\n1276,,\n1123,65,\n0580,,\n1778,110,\n1100,150,\n1843,,\n1267,,\n1930,,\n1867,,\n0022,,\n0664,,\n1659,,\n0628,,\n1663,436,\n1011,284,\n0820,482,\n0178,,\n0928,v,\n1888,,\n0342,,\n1156,,\n1308,270,\n0921,,\n';
$par_Testrun_geen_consultgegevens_maken=false;
$par_jaar=2019;
logAdd(log);
$csv = $csvfile_par_consultgegevens_als_csv;
$testrun = $par_Testrun_geen_consultgegevens_maken;
$jaar = $par_jaar;
ifThenElse($csv == '',
logAdd(log, 'error', 'Geen CSV bestand ingelezen, kies er één.');
,
logAdd(log, 'warning', 'CSV Bestand ingelezen, uitvoeren inlezen consultgegevens.');
$idx1 = string\pos($csv, ',');
$idx2 = string\pos($csv, ';');
$comma="@$@#@@";
ifThenElse($idx1,
ifThenElse($idx2,
ifThenElse($idx1 < $idx2, $comma=',', $comma=';');
,
$comma=',';
);
,
ifThen($idx2,
$comma=';';
);
);
$re_entries = string\concatenate('/["][^"]*["]|[^', $comma, ']+/');
$user_id = env\userAttribute('id');
logAdd(log, 'info', 'User id: ', $user_id);
logAdd(log, 'info', "Gevonden comma-separator: '", $comma, "' - positie ','=", $idx1, ", positie ';'=", $idx2 );
ifThenElse($testrun,
logAdd(log, 'warning', 'Testrun - er worden geen consultgegevens aangemaakt.');
,
logAdd(log, 'warning', 'Er worden consultgegevens aangemaakt');
);
// Split in lines
$rows=list();
$line='';
$csv = string\concatenate(string\trim($csv), '\n');
$idx = string\pos($csv, '\n');
$data = list();
$n_data = 2;
$heading = true;
while($idx,
$line = string\substring($csv, 0, $idx);
$csv = string\substring($csv, $idx + 1);
$entries = string\matchAll($line, $re_entries);
$k = array\length($entries);
ifThen($k < $n_data, $entries = array\push($entries, ''));
$k = array\length($entries);
ifThenElse($k < $n_data,
logAdd(log, 'error', 'Minder dan ', $n_data, ' cellen op deze rij, niet te herkennen');
logAdd(log, 'error', $line);
,
$row = list();
$j = 0;
while($j < $k,
$entry = array\at($entries, $j);
$row = array\push($row, $entry);
$j = $j + 1;
);
ifThenElse($heading,
$heading = false;
,
$rows = array\push($rows, $row);
);
);
$idx = string\pos($csv, '\n');
);
$n = array\length($rows);
logAdd(log, 'warning', $n, ' - rijen ingelezen');
$i = 0;
while($i < $n,
$row = array\at($rows, $i);
$lidnummer = toString(array\at($row, 0));
$consulten = string\trim(array\at($row, 1));
ifThen($consulten == 'v', $consulten = "");
ifThenElse($consulten != "",
$consulten_int = toInt($consulten);
$id = record\findOne('Contact', 'name', 'asc', 'lidnummer=', $lidnummer);
ifThenElse($id,
ifThenElse($testrun,
logAdd(log, 'info', 'Testrun, er worden geen consultgegevens opgevoerd');
,
$rec_id = record\create('ConsultGegevens', 'contactId', $id, 'jaar', $jaar, 'aantal', $consulten_int, 'assignedUserId', $used_id);
record\relate('Contact', $id, 'consultGegevens', $rec_id);
);
logAdd(log, 'info', 'lidnummer: ', $lidnummer, ' - ', $consulten_int, ' consulten opgegeven (', $consulten, '), voor id: ', $id);
,
logAdd(log, 'warning', 'lidnummer: ', $lidnummer, ' - geen id gevonden!');
);
,
logAdd(log, 'info', 'lidnummer: ', $lidnummer, ' - geen consulten opgegeven');
);
$i = $i + 1;
);
);
@@ -0,0 +1 @@
Inlezen consultgegevens
@@ -0,0 +1 @@
Rapporteer leden die in een bepaald nascholingsjaar nascholingen meer dan 1 keer geregistreerd hebben. Te checken voor leden die moeten nascholen, d.w.z. leden met regiocode < 30 en ongelijk 8 (verloskundige).
@@ -0,0 +1 @@
639e03f4e8f686f7a
@@ -0,0 +1,162 @@
// last execution: Sun Dec 18 2022 17:14:39 GMT+0100 (Midden-Europese standaardtijd)
$par_nascholingsjaar=2021;
$par_open_lid_in_nieuwe_tab=true;
$par_aantal_rijen_op_een_pagina=21;
$p_page_len = $par_aantal_rijen_op_een_pagina;
logAdd(log);
html = '';
$h = '';
logAdd(log, "Controle op dubbel geregistreerde nascholingsvereisten voor jaar ", $par_nascholingsjaar);
$leden = Record\FetchManyHash('Contact',
'id, firstName, middleName, lastName, name, regiocode, dispensatie, lidnummer, datumRegistratie',
'lastName', 'asc'
);
strAdd($h, '<div class="nvkhresult">');
$table = table\new('Voornaam', 10,
'Achternaam', 20, 'asc',
'Lidnummer', 10, 'center',
'Regiocode', 10, 'center',
'Nascholingen van lid', 20, 'center',
'Dubbel geregistreerd', 30
);
table\rowsPerPage($table, $p_page_len);
table\filename($table, string\concatenate($par_nascholingsjaar, ' - leden met te weinig nascholing'));
$i = 0;
$n = array\length($leden);
logAdd(log, 'leden:', $n);
$n_onvoldoende = 0;
$cnt_dubbelingen = 0;
while($i < $n,
$lid = array\at($leden, $i);
$r_code = string\substring(hash\get($lid, 'regiocode'), 0, 2) + 0;
ifThen($r_code < 30 && $r_code != 8,
$rapport = true;
$contact_id = hash\get($lid, 'id');
$dispensatie = hash\get($lid, 'dispensatie');
$lidnummer = hash\get($lid, 'lidnummer');
$naam = hash\get($lid, 'name');
$middlename = hash\get($lid, 'middleName');
$firstname = hash\get($lid, 'firstName');
$lastname = string\concatenate($middlename, ' ', hash\get($lid, 'lastName'));
$regdat = hash\get($lid, 'datumRegistratie');
$reg_jaar = datetime\year($regdat);
$contact = Entity\Get('Contact', $contact_id);
$nascholingstotalen = Entity\GetRelated($contact, 'nascholingstotalen', 10, 'jaar', 'asc', 'jaar=', $par_nascholingsjaar);
$m = array\length($nascholingstotalen);
ifThenElse($m == 0, $heeft_nt = 'nee', ifThenElse($m > 1, $heeft_nt = 'teveel', $heeft_nt = 'ja'));
ifThen($m > 0, $nascholingstotals = array\at($nascholingstotalen, 0);$nascholingstotalen_id = attr($nascholingstotals, 'id'));
ifThen($m == 0 && $par_nascholingsjaar < $reg_jaar, $rapport = false; $reden = 'gevraagde jaar ligt voor registratie jaar');
ifThen($m == 0, ifThen($rapport, $reden = 'voor het gevraagde jaar geen nascholingstotaal aanwezig!'));
ifThenElse($rapport, $opnemen = 'opnemen in rapport', $opnemen = 'niet opnemen');
// Nu checken of er überhaupt dubbele nascholingsrecords zijn.
ifThen($heeft_nt == 'ja',
$cnt_dubbel = 0;
$nascholingen = Entity\GetRelated($nascholingstotals, 'nascholingen1', 1000, 'name', 'asc');
$m = array\length($nascholingen);
//logAdd(log, 'info', $m, ' nascholingen gevonden');
$j = 0;
$ns_hash = Hash\New();
while($j < $m,
$ns = array\at($nascholingen, $j);
$j = $j + 1;
$ns_id = attr($ns, 'accNascholingId');
$ns_soort = attr($ns, 'soort');
$ns_name = attr($ns, 'name');
$ns_status = attr($ns, 'status');
//logAdd(log, 'info', 'ns_id = ', $ns_id, ' - name=', attr($ns, 'name'), ' - soort=', $ns_soort, ' - status=', $ns_status);
ifThenElse($ns_soort != 'Vooraf aangevraagd met formulier',
$check_dubbel = true;
ifThen($ns_status == 'afgekeurd', $check_dubbel = false)
,
$check_dubbel = false
);
ifThen($check_dubbel,
$dubbel = false;
//logAdd(log, 'info', 'isset ', $ns_id, ' = ', hash\isset($ns_hash, $ns_id));
ifThenElse(hash\isset($ns_hash, $ns_id),
$cnt = hash\get($ns_hash, $ns_id) + 1
,
$cnt = 1
);
//logAdd(log, 'info', 'cnt = ', $cnt);
$ns_hash = hash\set($ns_hash, $ns_id, $cnt);
ifThen($cnt == 2, $dubbel = true);
//logAdd(log, 'info', 'ns_id - cnt = ', $cnt);
ifThen($dubbel,
$ln_ns = table\link(string\concatenate('/#Nascholingstotaal/view/', $nascholingstotalen_id), 'Nascholingen');
table\add($table,
table\link(string\concatenate('/#Contact/view/', $contact_id), $firstname),
table\link(string\concatenate('/#Contact/view/', $contact_id), $lastname),
string\concatenate(' ', $lidnummer),
string\concatenate(' ', $regiocode),
$ln_ns,
table\link(string\concatenate('/#Nascholing/view/', $ns_id), $ns_name)
);
$cnt_dubbel = $cnt_dubbel + 1;
);
);
);
ifThenElse($cnt_dubbel > 0,
logAdd(log, 'warning', 'lid: ', $naam, ', lidnummer: ', $lidnummer, ', nascholingen: ', $m, ' - heeft dubbel opgevoerde nascholingsrecords');
$cnt_dubbelingen = $cnt_dubbelingen + 1;
,
logAdd(log, 'info', 'lid: ', $naam, ', lidnummer: ', $lidnummer, ', nascholingen: ', $m, ' - heeft geen dubbel opgevoerde nascholingsrecords');
);
);
ifThen($heeft_nt == 'nee',
logAdd(log, 'info', 'lid: ', $naam, ', lidnummer: ', $lidnummer, ' - heeft geen nascholingsjaar ', $par_nascholingsjaar);
);
ifThen($heeft_nt == 'teveel',
logAdd(log, 'warning', 'lid: ', $naam, ', lidnummer: ', $lidnummer, ' - heeft teveel nascholingsjaar ', $par_nascholingsjaar, ' records');
table\add($table,
table\link(string\concatenate('/#Contact/view/', $contact_id), $firstname),
table\link(string\concatenate('/#Contact/view/', $contact_id), $lastname),
string\concatenate(' ', $lidnummer),
string\concatenate(' ', $regiocode),
'meerdere nascholingstotalen voor zelfde jaar',
''
);
);
);
$i = $i + 1
);
$table_html = table\toHtml($table);
//$table_html = string\replace($table_html, 'title="%RED%', 'title="');
//$table_html = string\replace($table_html, '%END"', '"');
//$table_html = string\replace(string\replace($table_html, '%RED%', '<span style="color:red;">'), '%END%', '</span>');
strAdd($h, '<h1>', 'Leden met <b>dubbele</b> nascholingsboekingen voor jaar ', toString($par_nascholingsjaar), '</h1>');
$msg = string\concatenate('In totaal ', $cnt_dubbelingen, ' leden met dubbel opgevoerde nascholingen gevonden.');
strAdd($h, $msg);
ifThen($cnt_dubbelingen > 0, strAdd($h, $table_html));
strAdd($h, '</div>');
html=$h;
logAdd(log, 'warning', $msg);

Some files were not shown because too many files have changed in this diff Show More