Scripts, hooks en acties
Waar instellingen ophouden, beginnen scripts: kleine stukjes JavaScript die op de server draaien. Je gebruikt ze om velden te berekenen, gegevens te controleren bij het bewaren, e-mails te sturen of een knop te maken die iets doet.
Waar scripts staan
Section titled “Waar scripts staan”| Waar | Vorm | Voor |
|---|---|---|
| Een veld: Relevantie conditie, Default waarde berekening, Berekening | De laatste expressie is het resultaat | Slimme velden |
| Een entiteit › Hooks | De functies onCreate(), onUpdate() |
Controleren en aanvullen bij het bewaren |
| Een entiteit › Acties | Een script per record | Een knop in het menu van een record |
| Job types | De laatste expressie is het resultaat | Taken op de achtergrond of op een schema |
| Een e-mailsjabloon › Variabelen | De laatste expressie is de waarde | Variabelen in een e-mail |
| Vluchten › Aanrekening vlucht rekenwijze | Twee functies | Vluchten aanrekenen |
| Conformiteit › Conformiteitsregels | status(), info(), until() |
Recency |
| Lidmaatschap › Inschrijvingtypes | totalCost() |
De prijs van een inschrijving |
De editor
Section titled “De editor”Scripts schrijf je in een editor met kleurcodes, aanvulling en foutmeldingen: hij kent de velden van de entiteit en de functies die je kan gebruiken. Een rode golflijn betekent dat er iets niet klopt — Tabbr controleert het script niet nog eens bij het bewaren, dus let erop.
Het record in een script
Section titled “Het record in een script”Het record heet naar zijn entiteit: flight, person, airplane, membership, signup, … Je leest en schrijft
velden met hun naam (hoofdletters maken niet uit) of de ingebouwde eigenschap:
flight.startField // ingebouwd veldflight.toestel // eigen veld 'Toestel' (een verwijzing)flight.toestel.soort // een veld van het gerelateerde vliegtuigflight['Passagier/instructeur'] // namen met spaties of tekens: tussen [ ]signup.activity?.date // ?. als iets leeg kan zijnEen hook draait wanneer een record bewaard wordt, vóór het opgeslagen wordt (na de berekende velden). Wat je aan het record wijzigt, wordt mee bewaard.


| Functie | Wanneer |
|---|---|
onCreate() |
Bij een nieuw record. |
onUpdate() |
Bij een wijziging. original is het record zoals het was. |
Hooks draaien in de volgorde van de lijst (sleep om te ordenen) en alleen als ze enabled zijn.
// landingsveld = startveld als het leeg is; '+1' als passagier bij een initiatievluchtfunction onUpdate() { if (flight.landing && !flight.landingField) { flight.landingField = flight.startField } if (flight.initiatievlucht && !flight['passagier/instructeur']) { flight['passagier/instructeur'] = '+1' }}// meldingen bij de vlucht als er iets ontbreektfunction onUpdate() { if (flight.Toestel == null) { addErrorMessage(flight, 'Toestel ontbreekt') return } if (flight.Startwijze == 'L' && flight.Lierbedienaar == null) { addErrorMessage(flight, 'Lierbedienaar ontbreekt') } if (flight.Aanrekenen != 'NIET_AANREKENEN' && flight.Rekening == null) { addErrorMessage(flight, 'Rekening ontbreekt') }}// een bevestiging bij een aanmelding — ook voor een gast zonder accountfunction onCreate() { if (signup.ownerFreeText) { sendEmailByTemplateToExternalUser('Reservering initiatievlucht', signup.ownerFreeText, signup['Gast e-mail'], signup) } else { sendEmailByTemplate('Aanmelding activiteit', signup.owner, signup) }}// een mail zodra een aanvraag toegestaan wordtfunction onUpdate() { if (original.Status != current.Status && current.Status == 'TOEGESTAAN') { sendEmailByTemplate('Aanvraag toegestaan', current.aanvrager, current) }}Testen
Section titled “Testen”Met Testen open je Hook testen: kies de methode (onCreate, onUpdate) en een bestaand record, en bekijk
wat de hook zou doen en wat hij logt — zonder iets te bewaren. Met trace zie je in het logboek ook elk veld
dat gelezen of geschreven wordt.
Acties
Section titled “Acties”Een actie is een knop in het menu ⋮ van een record (en in bulk, voor een Selectie in een lijst).
| Instelling | Betekenis |
|---|---|
| Naam, Omschrijving | Wat de gebruiker ziet. |
| Rollen die deze acties kunnen uitvoeren | Leeg = iedereen die het record ziet. |
| Voor welke records | Een filter: bv. alleen personen zonder login. |
| Script | Wat de actie doet. |
sendEmailByTemplate('welkomstmail', person)Gebruik acties voor wat er gebeurt — e-mails, een job starten, een record dupliceren. Wijzigingen aan velden van het record in een actie worden niet bewaard: daarvoor zijn berekeningen en hooks.
duplicateEntity(officialDocument, { 'Geldig tot': '2028-08-20' })Logboek
Section titled “Logboek”console.info(…), console.warn(…), console.error(…) schrijven naar het logboek. Je ziet het in de testvensters
(Debug logs) en, als beheerder, in de log viewer in de header.
Alles wat je kan gebruiken
Section titled “Alles wat je kan gebruiken”De volledige lijst van functies — meldingen, e-mail, datums, queries, jobs, rollen — staat in de script-referentie.