# Custom Checkout Fields: documentatie

> Overzicht DataFirefly Custom Checkout Fields voegt extra velden toe aan het afrekenproces en het registratieformulier van PrestaShop 8 en 9: inkoopordernummer, gewenste leverdatum, SIRET, sector, bijlage of elk ander veld…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfcheckoutfields/>
- Taal: nl
- Bijgewerkt op: 2026-09-30
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfcheckoutfields/index.md), [en](https://www.datafirefly.com/en/documentation/dfcheckoutfields/index.md), [es](https://www.datafirefly.com/es/documentation/dfcheckoutfields/index.md), [de](https://www.datafirefly.com/de/documentation/dfcheckoutfields/index.md), [it](https://www.datafirefly.com/it/documentation/dfcheckoutfields/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfcheckoutfields/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfcheckoutfields/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

DataFirefly Custom Checkout Fields voegt extra velden toe aan het afrekenproces en het registratieformulier van PrestaShop 8 en 9: inkoopordernummer, gewenste leverdatum, SIRET, sector, bijlage of elk ander veld dat u aanmaakt. De waarden worden gecontroleerd voordat de bestelling wordt geplaatst en daarna overgenomen op de bestelpagina, de pdf-factuur, de pakbon, in e-mails, de lijsten van de back-office, CSV-exports en de webservice.

## Installatie

1. Open in de back-office Modules > Modulebeheer en klik op Een module uploaden.
2. Selecteer het bestand dfcheckoutfields.zip.
3. De installatie maakt drie tabellen aan, de beveiligde map upload/dfcheckoutfields, de menu's Bestellingen > Aangepaste velden en Bestellingen > Velden exporteren, en vijf kant-en-klare velden.
4. Klik op Configureren om de algemene opties in te stellen.

Voor een update uploadt u de nieuwe ZIP over de oude heen: de updatescripts voegen nieuwe kolommen toe zonder uw velden of opgeslagen waarden te wijzigen.

## Velden die bij installatie worden aangemaakt

- **Inkoopordernummer** (po_number): tekst van maximaal 50 tekens, opgeslagen bij de bestelling, zichtbaar op de factuur, de pakbon en als kolom van de bestellijst.
- **Gewenste leverdatum** (desired_date): op zijn vroegst vandaag + 2 dagen, alleen werkdagen.
- **SIRET-nummer** (siret): gecontroleerd met de Luhn-sleutel, opgeslagen in het klantaccount, gevraagd bij registratie en afrekenen, beperkt tot klanten uit Frankrijk.
- **Sector** (sector): lijst van acht sectoren, opgeslagen in het klantaccount, gevraagd bij registratie.
- **Bijlage** (attachment): pdf, afbeeldingen en Office-documenten, max. 8 MB.

Geen van deze velden is standaard verplicht. Pas ze aan, schakel ze uit of verwijder ze naar behoefte.

## Algemene instellingen

Modules > Modulebeheer > Aangepaste velden voor bestelling en registratie > Configureren.

- **Positie van het blok in het afrekenproces**: betaalstap, boven de betaalmethoden (standaard), of verzendstap, onder de vervoerders. Winkelwagens met alleen virtuele producten gebruiken altijd de betaalstap.
- **Titel van het blok**: getoond bij het afrekenen, op de bestelpagina's, in pdf's en e-mails, per taal.
- **Positie op de pdf-factuur**: koptekst onder het factuurnummer, of onderaan de factuur. Zie Factuur en pakbon.
- **Privénotitie als een verplicht veld ontbreekt**: voegt de ontbrekende velden toe aan de privénotitie van de bestelling als een betaalmodule de controle omzeilt.
- **SIRET-velden kopiëren naar de standaard SIRET van de klant**: houdt het SIRET-veld van de klantfiche, gebruikt door de B2B-modus van PrestaShop, bijgewerkt.

## Een veld aanmaken of bewerken

Bestellingen > Aangepaste velden, dan Veld toevoegen of het potlood van een regel. Het formulier toont alleen de opties die bij het gekozen type en de opslag horen.

### Veld

- **Label**, **plaatshouder** en **helptekst**: per taal. Een lege taal neemt het label van de standaardtaal over.
- **Code**: technische identificatie met kleine letters, cijfers en underscores. Dient ook als e-mailvariabele {dfcf_CODE} en in de webservice.
- **Type**: tekst, tekst met meerdere regels, getal, e-mail, datum, keuzelijst, selectievakje, SIRET of bestand.
- **Opgeslagen bij**: Bestelling (één waarde per bestelling) of Klantaccount (waarde in de klantfiche, vooraf ingevuld bij het afrekenen en naar elke bestelling gekopieerd).
- **Lijstopties**: één optie per regel als sleutel|Label, bijvoorbeeld `industry|Industrie`. Gebruik in elke taal dezelfde sleutels.

### Waar en wanneer

- **Tonen bij registratie** en **verplicht bij registratie**: alleen velden van het klantaccount, zonder bestandstype. Ze verschijnen ook in het formulier Persoonsgegevens van het account.
- **Tonen bij afrekenen** en **verplicht bij afrekenen**.
- **Alleen tonen als**: zie Voorwaardelijke weergave.
- **Landen**: land van het factuuradres bij het afrekenen, van de bezoeker bij registratie. Leeg voor alle landen.
- **Klantengroepen**: alles uitgevinkt voor alle groepen.

### Validatie

- **Maximale lengte**: 0 voor de standaard (255 tekens, 2000 voor meerdere regels).
- **Validatiepatroon**: reguliere expressie zonder scheidingstekens, bijvoorbeeld `^[A-Z]{2}[0-9]{6}$`.
- **Minimale doorlooptijd** en **maximale termijn** in dagen voor een datum die bij de bestelling wordt opgeslagen.
- **Alleen werkdagen**: weigert zaterdag en zondag.
- **Sluitingsdagen**: één per regel, `2026-12-24` voor een dag, `2026-08-01:2026-08-21` voor een periode, `12-25` voor elk jaar.
- **Toegestane extensies** en **maximale bestandsgrootte** voor een bestand. Scripts en uitvoerbare bestanden worden altijd geweigerd.

### Documenten en exports

Tonen aan de klant (bevestiging, klantaccount, e-mails aan de klant), op de pdf-factuur, op de pakbon, als filterbare kolom van de back-officelijsten, in CSV-exports.

### Lijst met velden

De pictogrammen in de lijst zetten een instelling met één klik aan of uit. Sleep regels om de volgorde te wijzigen. De actie Dupliceren maakt een uitgeschakelde kopie met de code `code_copy`. Een veld met waarden op bestellingen kan niet worden verwijderd: schakel het uit om de historie te bewaren.

## Voorwaardelijke weergave

Voorbeeld: de SIRET alleen aan bedrijven tonen.

1. Maak een selectievakje aan dat in het klantaccount wordt opgeslagen, code `is_company`, label Ik ben een bedrijf.
2. Bewerk het veld SIRET, sectie Waar en wanneer, en kies Alleen tonen als: Ik ben een bedrijf. Laat „een van deze waarden heeft” leeg: bij een selectievakje betekent dat aangevinkt.

Geef voor een keuzelijst de verwachte sleutels op, gescheiden door komma's, bijvoorbeeld `health,public`. Voorwaarden kunnen worden gekoppeld: een veld waarvan het bovenliggende veld verborgen is, is ook verborgen. Een verborgen veld is nooit verplicht en de waarde wordt niet bewaard. Het bovenliggende veld moet op dezelfde plek worden getoond (registratie of afrekenen) of al ingevuld zijn in het klantaccount.

## Aan de kant van de klant

### Bij het afrekenen

Het blok verschijnt bij de gekozen stap. Elke waarde wordt tijdens het typen opgeslagen. Zolang een verplicht veld leeg of ongeldig is, is de klik op Bestellen (of Doorgaan bij de verzendstap) geblokkeerd, verschijnt de melding onder het veld en scrolt de pagina ernaartoe. De bijlage wordt verstuurd via slepen of een klik, met een voortgangsbalk. De klant kan hem verwijderen en een andere sturen.

### Bij registratie en in Persoonsgegevens

Velden van het klantaccount met Tonen bij registratie worden toegevoegd aan het standaard registratieformulier, het gastformulier bij het afrekenen en het formulier Persoonsgegevens. Fouten worden getoond zoals bij de velden van PrestaShop.

### Na de bestelling

Waarden met Tonen aan de klant verschijnen op de bevestigingspagina en in de bestelgegevens van het klantaccount. De klant van de bestelling kan daar de bijlage downloaden.

## Factuur en pakbon

**Onderaan de factuur**: de module gebruikt de hook displayPDFInvoice en drukt een tabel af na de totalen. Er wordt geen bestand gewijzigd.

**Koptekst, onder het factuurnummer**: PrestaShop heeft daar geen hook. Bij het opslaan van deze instelling voegt de module een blok toe, afgebakend door `{* dfcf:start *}` en `{* dfcf:end *}`, aan het einde van `themes/UW_THEMA/pdf/invoice.summary-tab.tpl`. Bestaat het bestand niet, dan wordt het aangemaakt vanuit dat van PrestaShop. Bestaat het al, dan vult de module het aan en bewaart een kopie `.dfcf-backup`. Terug naar Onderaan de factuur of de-installeren verwijdert het blok. Is het bestand niet schrijfbaar, dan toont een melding het pad.

Gebruik met DataFirefly Invoice Editor, dat de weergave van de factuur vervangt, de instelling Onderaan de factuur: de editor neemt de inhoud van modules over op de plek die u kiest.

De pakbon gebruikt de hook displayPDFDeliverySlip, veld per veld.

## E-mails

In e-mails met het bestel-ID, waaronder order_conf en new_order, zijn twee soorten variabelen beschikbaar:

- `{dfcf_fields}`: alle waarden in een tabel. In order_conf alleen de velden met Tonen aan de klant, in new_order, bestemd voor de verkoper, alle velden.
- `{dfcf_CODE}`: één waarde, bijvoorbeeld `{dfcf_po_number}` of `{dfcf_desired_date}`.

Voeg ze toe via Design > E-mailthema of in de mailbestanden van uw thema.

## Back-office

- **Bestelpagina**: kaart Aangepaste velden met alle waarden. Met de knop Bewerken corrigeert u een waarde of vervangt u de bijlage.
- **Klantpagina**: kaart met de velden van het klantaccount, op dezelfde manier bewerkbaar.
- **Lijsten**: elk veld dat als filterbare kolom is gemarkeerd, verschijnt in de bestellijst met een tekstfilter. Velden van het klantaccount verschijnen ook in de klantenlijst.

## CSV-export

Bestellingen > Velden exporteren. Kies Bestellingen of Klanten, de periode, de bestelstatussen (alles uitgevinkt voor alle), het scheidingsteken en of alleen regels met minstens één waarde worden geëxporteerd. Het bestand is UTF-8 met BOM en opent direct in Excel. Bestellingen worden geëxporteerd met referentie, datum, status, klant, totalen excl. en incl. btw en valuta, gevolgd door de velden met Opnemen in CSV-exports.

## Webservice

1. Geavanceerde instellingen > Webservice: activeer de webservice en maak of bewerk een sleutel.
2. Vink GET aan voor de resource dfcf_values.
3. Roep `/api/dfcf_values?filter[id_order]=[123]&display=full` aan.

Elke waarde komt terug met id_dfcf_field, id_order, id_customer, id_cart, value, value_display, field_code, field_label en has_file. Waarden van het klantprofiel hebben id_order en id_cart gelijk aan 0.

## Bijlagen en beveiliging

Elk bestand wordt gecontroleerd op extensie (lijst van het veld) en op werkelijke inhoud: een script dat hernoemd is naar .pdf wordt geweigerd. Het wordt opgeslagen in upload/dfcheckoutfields met een willekeurige naam zonder extensie, in een map waarvan de directe toegang wordt geblokkeerd door een .htaccess-bestand. Voeg onder Nginx de regel `location ^~ /upload/dfcheckoutfields/ { deny all; }` toe. Downloads verlopen altijd via de module, die controleert of de bezoeker de klant van de bestelling of een medewerker is.

## AVG

Waarden die in een klantaccount zijn opgeslagen, worden samen met de klant verwijderd. De module beantwoordt export- en verwijderverzoeken van de officiële AVG-module van PrestaShop. Waarden die naar bestellingen zijn gekopieerd, blijven bij de bestelling bewaard.

## Problemen oplossen

### Het blok verschijnt niet bij het afrekenen

Controleer of het veld actief is en Tonen bij afrekenen heeft, en of groep en land van de klant overeenkomen met de beperkingen. Hebt u de verzendstap gekozen, controleer dan of uw thema de hook displayAfterCarrier aanroept.

### De knop Bestellen wordt niet geblokkeerd

De module herkent de knop van de thema's Classic en Hummingbird. Een thema dat deze knop door een ander element vervangt, of een expressbetaling vanaf de productpagina, valt er niet onder: activeer de privénotitie om gewaarschuwd te worden bij onvolledige bestellingen.

### De velden verschijnen niet in de factuurkop

Controleer of het themabestand pdf/invoice.summary-tab.tpl schrijfbaar is, sla de instellingen opnieuw op en leeg de cache via Geavanceerde instellingen > Prestaties.

### Een e-mailvariabele verschijnt letterlijk

Ze wordt alleen ingevuld in e-mails met het bestel-ID. Controleer ook of de code exact overeenkomt met die van het veld.
