Technische info

Belangrijk!!!

Voor je activiteiten – ouders – kinderen aanmaakt, vul eerst alle uitpasinfo aan!

Dit is de allereerste stap van je applicatie

Analyses bekijken

Duik in de achtergrond van dit project.
Alle analyses zijn gebundeld op de analyse pagina.
Van marktonderzoek tot uses cases, van api-integratie tot de probleemstelling waaruit dit project geboren werd.

Activiteit aanmaken

Hoe maak ik een activiteit aan?

Een activiteit aanmaken kan enkel wanneer je ingelogd bent als admin.
Wanneer je in het menu klikt op ‘activiteiten’, kom je terecht op de overzichtspagina waar alle activiteiten opgelijst staan.
Bovenaan deze pagina staat een knop ‘activiteit’ aanmaken.
Door te klikken op deze knop, kom je terecht op het formulier waar je alle gegevens van de activiteit kan invullen.

Welke gegevens moet ik invullen bij het aanmaken van een activiteit?
  • Naam: de naam van de omschrijving. Hou deze kort en duidelijk. Vb. ‘maandag 13 juli’.
  • Omschrijving: hier kan je meer omschrijving meegeven over de activiteit. Vb. de dagindeling, afspraken, extra informatie.
  • Prijs: Geef de prijs op van de activiteit zelf. Kommagetallen geef je in met een punt als komma, vb. 3.5 . Ingegeven prijzen worden weergegeven als euro. Let op: op basis van deze prijs wordt het uitpaskansentarief berekend (zie ook: ‘Wat met de UiTPAS koppeling?’)
  • Capaciteit: Het maximaal aantal kinderen die mag inschrijven voor deze activiteit.
  • Starttijd: de startdatum + uur van de activiteit zelf
  • Eindtijd: de einddatum + uur van de activiteit zelf
  • Inschrijven vanaf: de datum + uur vanaf wanneer ouders kunnen inschrijven voor deze activiteit. Voor dit moment is inschrijven niet mogelijk als ouder.
  • Inschrijven tot: de datum + uur tot wanneer ouders kunnen inschrijven voor deze activiteit. Vanaf dit moment is inschrijven niet meer mogelijk.
  • Annuleren tot: tot dit moment kunnen ouders zelf hun inschrijving annuleren. Wens je niet dat ouders hun inschrijving zelf kunnen annuleren, dan plaats je deze datum voor de inschrijfdatum.
  • Leerjaar vanaf: het leerjaar vanaf wanneer kinderen mogen inschrijven voor deze activiteit.
  • Leerjaar tot (en met): het leerjaar tot wanneer kinderen mogen inschrijven voor deze activiteit.
  • Locatie: de locatie waar de activiteit doorgaat.
  • Vakantie: de vakantieperiode waarin de activiteit doorgaat.
  • Opties: de opties die ouders optioneel kunnen toevoegen aan hun inschrijven. Vb. Middagmaal, zwemmen, ochtendopvang, … Belangrijk: op deze opties kan geen kansenstatuut gegeven worden!
Wat met de UiTPAS koppeling?

Bij het aanmaken van een activiteit, wordt deze automatisch geregistreerd in de uitpasdatabank. Op elke activiteit wordt dus een kansentarief berekend voor kinderen die hier recht op hebben.

Belangrijk!

  • Een activiteit maken zonder kansentarief:
    Het is niet mogelijk om een activiteit aan te maken zonder uitpaskoppeling.
    Om een activiteit te maken zonder kansentarief, maak je een gratis activiteit aan, waarbij je betalende opties toevoegt.
  • Een optie toevoegen met kansentarief:
    Dit is niet mogelijk. Je kan dit oplossen door van de optie een aparte activiteit te maken (vb. maaltijd, zwemmen). Toets af bij jullie regionale uitpasverantwoordelijke welke opties in aanmerking komen voor het kansentarief.
  • Een activiteit waarbij wordt deelgenomen aan een activiteit met kansentarief van een andere organisator, voorbeeld gaan zwemmen in een andere gemeente:
    Het is belangrijk om de inkomprijs van het zwembad niet als activiteitprijs te registreren. De verrekening van het kansentarief dient namelijk te gebeuren met de gemeente waar het zwembad gelegen is. We raden aan om een gratis activiteit te maken, waarbij je twee opties voorziet: eenmaal zwemmen met standaard tarief, eenmaal zwemmen met uitpas kansentarief aan het verminderd bedrag.
    Bij de zwembeurt zelf dien je de uitpassen van de kinderen met kansentarief te registreren in het zwembad, zodat jullie als organisatie enkel het verminderd tarief betalen voor deze kinderen en de uitpasverrekening kan gebeuren door het zwembad zelf.
Best practices
  • Ik wil niet dat ouders zelf kunnen annuleren:
    Door de annuleren tot datum voor de inschrijfdatum te plaatsen, zorg je dat ouders hun inschrijving nooit kunnen annuleren. Als admin kan je een inschrijving altijd annuleren.
  • Mijn activiteit heeft geen maximum capaciteit:
    Vul in dat geval een ruim getal in, zoals 1000.
  • Ik wil een activiteit aanpassen. Kan dit?
    Uiteraard! Hou er wel rekening mee dat elke aanpassing, ook geüpdatete wordt in de uitpasdatabank. Heb je reeds inschrijvingen en wens je de prijs aan te passen, dan raden we aan om eerst alle inschrijvingen te annuleren, en deze daarna terug toe te voegen.
    Reeds gemaakte inschrijvingen worden niet automatisch geüpdatete wanneer je de activiteit aanpast.
  • Mijn activiteit is een kamp die doorgaat over meerdere dagen. Hoe maak ik dit aan?
    We raden aan om bij ‘starttijd’ de eerste dag van het kamp in te vullen, en als ‘eindtijd’ de laatste dag. Vermeld zowel in de ‘naam’, als in de ‘omschrijving’ duidelijk dat het gaat om een kamp over meerdere dagen, met of zonder overnachting. We raden aan om ook de dagindeling toe te voegen.
    Bijvoorbeeld:
    Naam: Ponykamp 1-5 juli – zonder overnachting.
    Omschrijving: Dagelijks van 9u tot 17u. Ben jij een stoere cowboy of elegante ruiter? Kom deze week meehelpen op de manege. In de voormiddag verzorgen we de pony’s, in de namiddag gaan we op pad of oefenen we op de pistes. Over de middag eten we samen onze boterhammetjes op. Dit kamp is zonder overnachting, om 17u gaan de kinderen naar huis. Wens je gebruik te maken van de opvang tot 17u30, voeg dit dan zeker toe als optie aan je inschrijving. Tot dan!

Kinderen en ouderaccounts

Hoe kan een ouder een account aanmaken?

Wanneer gesurft wordt naar de startpagina van de applicatie, kan men bovenaan rechts inloggen of registreren. Via ‘registreren’ kan een ouder een nieuw account aanmaken. Na het registreren kan de ouder zijn profiel aanvullen, zodat alle gegevens gekend zijn in het systeem.

Hoe kan een ouder een kind toevoegen?

Eenmaal de ouder is ingelogd en zijn profiel is aangevuld, kan hij bovenaan in de menubalk klikken op ‘Kinderen’. Hier krijgt de ouder een overzicht te zien van zijn kinderen, alsook een nieuw kind toevoegen.

Wie kan een nieuwe ouder of kind toevoegen?
  • Ouder:
    Een ouder kan zelf een account aanmaken. Hij kan in zijn account kinderen toevoegen.
  • Admin:
    Een admin kan zowel een nieuwe ouder aanmaken, als kinderen toevoegen bij bestaande ouders via de backoffice.
  • Animator:
    Een animator kan geen ouders of kinderen aanmaken.
    Zou het voorvallen dat dit nodig is, dan raden we aan dat de animator samen met de ouder surft naar de startpagina, waarbij de animator de ouder kan begeleiden bij het aanmaken van een nieuw account.
Wie kan de gegevens bewerken van ouder / kind?
  • Ouder:
    Een ouder kan zijn gegevens, alsook de gegevens van zijn kind(eren) bewerken.
  • Admin:
    Een admin kan de gegevens bewerken van zowel ouder als kind.
  • Animator:
    Een animator kan geen gegevens bewerken van een ouder of kind. Een animator kan wel het veld ‘info admin/animator’ bekijken en updaten die behoort tot een kind. Dit kan enkel voor de kinderen die ingeschreven zijn op een activiteit van vandaag.
Welke gegevens worden gevraagd in het ouderprofiel?

Alle gegevens die noodzakelijk zijn om enerzijds contact op te nemen met de ouder indien nodig: naam,telefoonnummer, mailadres.
Anderzijds de gegevens die nodig zijn om attesten op te maken: rijksregisternummer en adres.

Welke gegevens worden gevraagd in het kindprofiel?
  • Algemene gegevens: voornaam, familienaam, rijksregisternummer en leerjaar.
  • Medische informatie: allergie, beperking en medicatie
  • Contact en afhalen: extra contactpersoon en een invulveld om aan te vullen welke personen het kind mogen afhalen. Ook een aanvinkveld om aan te duiden of een kind alleen naar huis mag gaan.
Wat met de UiTPAS koppeling?

Er wordt geen uitpasnummer gevraagd van de ouder, we vragen wel het uitpasnummer van het kind op bij uitpas zelf – dit op basis van het opgegeven rijksregisternummer.
Na het registreren van het uitpasnummer, gaan we bij uitpas het kansentarief opvragen en opslaan in het kindaccount. Deze informatie wordt ook weergegeven aan de ouder, en dagelijks geüpdate (wanneer de ouder de website bezoekt en inlogt).

Wat met gescheiden ouders?

Gescheiden ouders dienen elk hun ouderprofiel aan te maken, en beide hun kind(eren) toe te voegen. De kinderen worden dus 1 x aangemaakt onder ouder 1, en 1 x onder ouder 2.
Op deze manier krijgt elke ouder een attest voor de activiteiten waarvoor hij/zij ingeschreven en betaald heeft. (Zie ‘attesten en lijsten maken’)
Er zit om deze reden geen beperking op het aantal keren een rijksregisternummer kan geregistreerd worden.

Inschrijvingen

Wie kan inschrijven?
  • Ouders:
    Ouders die een account hebben aangemaakt, hun profiel hebben aangevuld en hun kinderen hebben toegevoegd kunnen hun kind inschrijven.
    Voorwaarden:
    1. Kind voldoet aan de leeftijdsvoorwaarden van de activiteit
    2. De huidige datum valt tussen de ‘inschrijven vanaf’ en ‘inschrijven tot’ datum.
  • Admin:
    Als admin kan je elk kind toevoegen aan een activiteit, ook wanneer deze buiten de leeftijdscategorie valt.
    De instellingen van de activiteitsdata zijn niet van toepassing als admin.
  • Animator:
    Als animator kan je kinderen toevoegen aan de activiteiten die je te zien krijgt.
    Voorwaarden:
    1. Kind voldoet aan de leeftijdsvoorwaarden van de activiteit
    2. De huidige datum valt tussen de ‘inschrijven vanaf’ en ‘inschrijven tot’
    3. De activiteit gaat vandaag door
Wie kan annuleren?
  • Ouders:
    Ouders kunnen een inschrijving van hun eigen kind(eren) annuleren.
    Voorwaarden:
    1. De ‘annuleren tot’ datum van de activiteit ligt in de toekomst.
  • Admin:
    Als admin kan je elke inschrijving annuleren.
    De instellingen van de activiteitsdata zijn niet van toepassing als admin.
  • Animator:
    Als animator kan je geen inschrijvingen annuleren.
Aanwezigheden

Als admin en als animator kan je kinderen inchecken wanneer ze toekomen op de activiteit, en terug uitchecken bij het naar huis gaan.
Dit is belangrijk om steeds een actueel beeld te hebben op het aantal aanwezigen, maar ook om correcte attesten te kunnen opmaken. (Zie ‘Attesten en lijsten’)

Wat met de UiTPAS koppeling?

Elke inschrijving die gebeurt met het kansentarief, wordt geregistreerd in de uitpasdatabank. Elke annulatie van een inschrijving met kansentarief, wordt ook in de uitpasdatabank geannuleerd.
Inschrijvingen zonder kansentarief worden niet doorgestuurd naar de uitpasdatabank.

Best practices

Betalingen

Wie kan betalingen registreren?

Zowel de admin als de animator kunnen betalingen registreren.
Enkel de admin kan een betaling terug annuleren. (vb. bij annulatie)

Welke betalingsopties kunnen we aanduiden?
  • cash
  • bancontact
  • factuur
Wat met de UiTPAS koppeling?

Kinderen die een kansentarief hebben krijgen automatisch de correcte prijs te zien. Zijn kunnen dus betalen aan het kansentarief, zonder dat ze eerst de volle pot moeten betalen.
De betaling is echter niet gelinkt aan de uitpasdatabank, wel de inschrijving op zich.
Het is dus belangrijk dat je de inschrijvingen zeker annuleert, zodat deze annulatie wordt doorgegeven aan de uitpasdatabank.

Attesten en lijsten maken

Welke attesten kunnen aangemaakt worden?

Op dit moment kunnen enkel ziekenfondsattesten aangemaakt worden.
Fiscale attesten staan op de planning.

Kunnen attesten aangepast worden?

Dit staat op de planning.

Welke voorwaarden tellen voor het aanmaken van een attest?

Een attest wordt enkel aangemaakt voor kinderen die ingechecked zijn in de activiteit. Op deze manier worden geen attesten opgemaakt voor kinderen die ingeschreven waren, maar niet kwamen opdagen, afwezig waren, ziek waren,… waarvan de inschrijving eventueel niet verwijderd werd of wordt.

Een attest wordt ook pas in het account van de ouder weergegeven na dat de activiteit afgelopen is.

Ook wanneer de inschrijving nog niet betaald werd, wordt het attest aangemaakt. Op het attest zelf wordt dan wel vermeld dat de betaling nog niet ontvangen is.
De betalingsgegevens worden on-the-fly opgehaald uit het systeem. Dit wil zeggen dat wanneer de betaling wordt ingevoerd, dit meteen aangepast wordt wanneer het attest bekeken wordt.

Pagina’s bewerken

Hoe kan ik het dashboard pagina bewerken?

Wanneer je ingelogd bent als admin, dan verschijnt op de dashboard pagina een soort Word-venster waarin de huidige inhoud van de dashboard pagina wordt getoond. Je kan deze inhoud bewerken naar wens en opslaan.
Deze inhoudt wordt getoond aan ouders en animatoren op hun dashboard.

Kan ik ook andere pagina’s bewerken?

Op vandaag kan dit jammer genoeg nog niet. Dit wordt later nog uitgebreid.

Tope installeren

Hoe kan ik Tope installeren?

Tope is te vinden als project op Github onder MIT-licentie.
Dit wil zeggen dat je de code vrij mag gebruiken.

Het is echter wel nodig om deze code op een webruimte te laten draaien.
Daarnaast werd Tope gemaakt in Laravel. Meer info over projecten aanmaken in Laravel vind je hier.

Kan ik Tope gratis gebruiken?

Ja, zeker!

Kan ik hiervoor ondersteuning krijgen?

Neem gerust contact op voor verdere vragen.
Zowel hulp met installatie, als het aanpassen van bepaalde features of uitbreidingen zijn mogelijk op verzoek.

Toegang en controle

Welke toegangsrollen zijn er?
  • admin: volledige controle
  • animator: kan enkel activiteiten van vandaag zien en bepaalde bewerkingen uitvoeren (kind toevoegen aan activiteit, inchecken, uitchechen, info animator bewerken en betaling registreren)
  • ouder
Kan ik zelf mensen aanduiden als animator / admin?

Zeker. Je kan in de applicatie zelf mensen aanduiden als animator of admin, die hierdoor de rechten toegekend krijgen. Je kan als admin ook rechten terug afnemen van mensen.

Kan ik zowel admin als animator zijn?

Nee, dit is niet mogelijk. Dit omdat de ‘views’ als admin en als animator verschillend zijn, en dit zou botsen met elkaar. Daarnaast kan je als admin alles wat een animator kan, waardoor dit geen meerwaarde zou zijn.

Tabellen

User

users

  • $table->id();
  • $table->string(‘email’)->unique();
  • $table->timestamp(‘email_verified_at’)->nullable();
  • $table->string(‘password’);
  • $table->rememberToken();
  • $table->boolean(‘isAdmin’)->default(false);
  • $table->boolean(‘isAnimator’)->default(false);
  • $table->timestamps();
  • $table->softDeletes();
Kind

kinds

  • $table->id();
  • $table->foreignId(‘user_id’)->constrained()->cascadeOnDelete();
  • $table->string(‘voornaam’);
  • $table->string(‘familienaam’);
  • $table->string(‘contactpersoon’);
  • $table->string(‘allergie’)->nullable();
  • $table->string(‘beperking’)->nullable();
  • $table->string(‘medicatie’)->nullable();
  • $table->boolean(‘alleenNaarHuis’)->default(false);
  • $table->string(‘afhalenKind’)->nullable();
  • $table->boolean(‘fotoToestemming’);
  • $table->string(‘rijksregisternummer’);
  • $table->string(‘leerjaar’)->default(LeerjaarEnum::KL1->value);
  • $table->string(‘uitpasnummer’)->nullable();
  • $table->string(‘uitpasKansentarief’)->nullable();
  • $table->date(‘uitpasDatumCheck’)->nullable();
  • $table->string(‘uitpasTekst’)->nullable();
  • $table->string(‘infoAdminAnimator’)->nullable();
  • $table->string(‘infoAdmin’)->nullable();
  • $table->softDeletes();
  • $table->timestamps();
Activiteit

activiteits

  • $table->id();
  • $table->string(‘naam’);
  • $table->string(‘foto’)->nullable();
  • $table->string(‘omschrijving’);
  • $table->dateTime(‘starttijd’);
  • $table->dateTime(‘eindtijd’);
  • $table->float(‘prijs’);
  • $table->integer(‘capaciteit’);
  • $table->integer(‘aantalInschrijvingen’)->default(0);
  • $table->string(‘leerjaarVanaf’);
  • $table->string(‘leerjaarTot’);
  • $table->dateTime(‘inschrijvenVanaf’)->change();
  • $table->dateTime(‘inschrijvenTot’)->change();
  • $table->dateTime(‘annulerenTot’)->change();
  • $table->string(‘vakantie’);
  • $table->softDeletes();
  • $table->timestamps();
  • $table->foreignId(‘locatie_id’)->default(‘1’)->constrained()->cascadeOnDelete();
  • $table->string(‘uitdatabank_id’)->nullable();
  • $table->string(‘uitdatabank_url’)->nullable();
  • $table->string(‘uitdatabank_kansentarief’)->nullable();
Profiel

profiels

  • $table->id();
  • $table->foreignId(‘user_id’)->constrained()->cascadeOnDelete();
  • $table->string(‘voornaam’);
  • $table->string(‘familienaam’);
  • $table->string(‘straat’);
  • $table->string(‘huisnummer’);
  • $table->string(‘bus’)->nullable();
  • $table->string(‘postcode’);
  • $table->string(‘gemeente’);
  • $table->string(’telefoonnummer’);
  • $table->string(‘rijksregisternummer’);
  • $table->softDeletes();
  • $table->timestamps();
Locatie

locaties

  • $table->id();
  • $table->string(‘naam’);
  • $table->string(‘straat’);
  • $table->string(‘gemeente’);
  • $table->softDeletes();
  • $table->timestamps();
Optie

opties

  • $table->id();
  • $table->foreignId(‘activiteit_id’)->constrained()->cascadeOnDelete();
  • $table->float(‘prijs’);
  • $table->string(‘omschrijving’);
  • $table->softDeletes();
  • $table->timestamps();
Inschrijvingsdetail

inschrijvingsdetails

  • $table->id();
  • $table->foreignId(‘kind_id’)->constrained()->cascadeOnDelete();
  • $table->foreignId(‘activiteit_id’)->constrained()->cascadeOnDelete();
  • $table->date(‘inschrijvingsdatum’)->default(today());
  • $table->float(‘prijs’)->nullable();
  • //$table->foreignId(‘betaling_id’);
  • $table->boolean(‘ingechecked’)->default(false);
  • $table->boolean(‘uitgechecked’)->default(false);
  • $table->date(‘deelnemersattestVerzonden’)->nullable();
  • $table->date(‘ziekenfondsattestVerzonden’)->nullable();
  • $table->string(‘uitpasid’)->nullable();
  • $table->softDeletes();
  • $table->timestamps();
Inschrijvingsdetail_optie

inschrijvingsdetail_opties

  • $table->id();
  • $table->foreignId(‘inschrijvingsdetail_id’)->constrained()->cascadeOnDelete();
  • $table->foreignId(‘optie_id’)->constrained()->cascadeOnDelete();
  • $table->softDeletes();
  • $table->timestamps();
Betalingsdetails

betalingsdetails

  • $table->id();
  • $table->foreignId(‘activiteit_id’)->constrained()->cascadeOnDelete();
  • $table->foreignId(‘inschrijvingsdetail_id’)->constrained()->cascadeOnDelete();
  • $table->float(‘prijs’);
  • $table->string(‘omschrijving’);
  • $table->softDeletes();
  • $table->timestamps();
Uitpas

Uitpas

  • $table->id();
  • $table->string(‘clientId’);
  • $table->string(‘clientSecret’);
  • $table->string(‘api_url’);
  • $table->string(‘io_url’);
  • $table->string(‘account_url’);
  • $table->string(‘organizerId’);
  • $table->string(‘locationId’);