Scripts voor de rittenadministratie van Mobiliteits-Coöperatie FlexDeel U.A.: ruwe ritdata → prijsberekening → tabbladen per rijder → PDF's, per incasso-ronde.
⚠️ Privacy: deze repo bevat alleen code, geen data. Ruwe ritten, ODS/PDF- overzichten, incasso-XML en ledenbestanden staan bewust niet in de repo (zie.gitignore). Het factuurscript is er wél, maar de groeperings-/klantcode-mapping met ledengegevens zit ingrouping_config.json— dat bestand staat in.gitignore; gebruikgrouping_config.example.jsonals sjabloon.
| Script | Doel |
|---|---|
ritten_analyse_ods.py |
Classificeert ritten (Service/Regulier), berekent prijzen per etmaal, rondt af per incasso-ronde (incl. maand-/ronde-overschrijdend gebruik via look-back) en schrijft een ODS. |
maak_tabbladen.py |
Maakt per rijder een tabblad in het ODS (reguliere + service ritten, totalen). |
maak_pdfs.py |
Exporteert elk tabblad naar een PDF per rijder. |
maand_overzicht.py |
Maandoverzicht/rapportage. |
update_users_startdate.py |
Onderhoud van gebruikers-startdata. |
facturen_eboekhouden.py |
Genereert facturen per rijder in e-Boekhouden.nl en een SEPA-incassobestand. Vereist EBOEKHOUDEN_TOKEN (env) en grouping_config.json (uit grouping_config.example.json). |
ritten_analyse_ods.325 |
Ontwikkelversie met dezelfde logica maar de toekomstige tarieven (€0,35 / €3,25 / €32,50). |
- €0,29 per km · €2,95 per uur · max €29,50 per etmaal (kalender-dag).
- Service ritten (
flexdeel@pm.me, 0 km, of < 6 min) kosten €0. - Incasso-rondes: ronde 1 = 1–15, ronde 2 = 16–einde maand.
- Maand-/ronde-overschrijdend: een rit wordt afgerekend t/m het einde van de ronde;
het restant valt in de volgende ronde (km volledig in de start-ronde). Zie
WORKFLOW_HANDLEIDING.md.
Om dit end-to-end te draaien heb je meer nodig dan de scripts alleen:
- Ritdata-bron — een export (
.xlsx) uit de rittenregistratie van The Mobility Factory (TMF), met o.a.effectiveStartTime,effectiveEndTime,traveledDistance,personEmail,isCancelled. - Boekhouding — een e-Boekhouden.nl-account met API-toegang; het token als
EBOEKHOUDEN_TOKEN(environment-variabele). Klant-/relatiecodes koppelen leden aan de facturatie. - SEPA-incasso — een incassocontract met je bank en een eigen incassant-ID (Creditor Identifier), plus een geldige machtiging (mandaat) per lid. Het proces levert een SEPA-incassobestand (pain.008 XML) op dat je bij de bank aanlevert.
- Ledenadministratie — relaties/gebruikers met e-mail en startdatum, voor koppeling en facturatie.
- Technisch — Python 3 +
pandas/odfpyen LibreOffice (zie Vereisten).
python3 ritten_analyse_ods.py 2026-06-02.xlsx 2026-06-02.ods
python3 maak_tabbladen.py 2026-06-02.ods
python3 maak_pdfs.py 2026-06-02.odsZie WORKFLOW_HANDLEIDING.md voor de volledige workflow, mappenstructuur en
troubleshooting.
- Python 3 met
pandasenodfpy(pip install pandas odfpy) - LibreOffice (voor
maak_tabbladen.py/maak_pdfs.py, via UNO) facturen_eboekhouden.pyvereist eenEBOEKHOUDEN_TOKENenvironment-variabele én eengrouping_config.json(kopieer vangrouping_config.example.json).
MIT — vrij te gebruiken, aan te passen en te verspreiden. Zie LICENSE.