{% extends 'base.html' %} {% block title %}Instellingen{% endblock %} {% macro field(key, label, type='text', placeholder='', full=false) %}
{% endmacro %} {% block content %}
Beheer

Instellingen

Bedrijfsgegevens

Deze gegevens staan op de offertes.

{{ field('company_name', 'Bedrijfsnaam', full=true) }} {{ field('company_address', 'Adres') }} {{ field('company_postcode_city', 'Postcode en plaats') }} {{ field('company_phone', 'Telefoon') }} {{ field('company_email', 'E-mail', 'email') }} {{ field('company_website', 'Website') }} {{ field('company_kvk', 'KvK-nummer') }} {{ field('company_btw', 'Btw-nummer') }} {{ field('company_iban', 'IBAN') }}

Offertes

{{ field('quote_prefix', 'Voorvoegsel nummer', placeholder='OFF') }} {{ field('quote_valid_days', 'Standaard geldig (dagen)', 'number') }}

E-mail koppelen

Gebruik voor Gmail of Microsoft 365 een app-wachtwoord. Wachtwoorden staan in de database: houd de map data/ privé.

Ontvangen (IMAP)

{{ field('imap_host', 'Server', placeholder='imap.gmail.com') }} {{ field('imap_port', 'Poort', 'number', '993') }} {{ field('imap_user', 'Gebruikersnaam', placeholder='info@vanemous.nl') }}
{{ field('imap_folder', 'Map', placeholder='INBOX') }} {{ field('imap_days', 'Aantal dagen terug ophalen', 'number', '30') }}

Versturen (SMTP)

{{ field('smtp_host', 'Server', placeholder='smtp.gmail.com') }} {{ field('smtp_port', 'Poort', 'number', '587') }} {{ field('smtp_user', 'Gebruikersnaam', placeholder='leeg = zelfde als IMAP') }}
{{ field('smtp_from', 'Afzender', placeholder='Van Emous ', full=true) }}

Formulieren en API

{{ field('allowed_origins', 'Toegestane websites (komma-gescheiden)', placeholder='https://www.vanemous.nl', full=true) }}

Relatietypes

Komma-gescheiden. Bestaande relaties houden hun type als je er een weghaalt.

API-koppeling

Endpoint
POST {{ api_url }}
API-sleutel
{{ s.api_key }}
Klantportaal
{{ portal_url }}

Stuur de sleutel mee als header X-API-Key of als ?key= in de URL. Herkende velden (ook in het Nederlands): naam, voornaam, achternaam, email, telefoon, bedrijf, adres, postcode, plaats, bericht, bron, waarde. Andere velden worden bewaard als extra gegevens. Bestanden (bijv. foto's) gaan mee als multipart/form-data. Een ontwerp uit de configurator (een object met "type": "house-design") wordt als bestand bij de lead opgeslagen. Leads met een bekend e-mailadres worden bij het bestaande contact gezet.

Gewoon HTML-formulier

{% filter forceescape %}
{% endfilter %}

JavaScript (fetch)

{% filter forceescape %}const res = await fetch('{{ api_url }}', {
  method: 'POST',
  headers: { 'X-API-Key': '{{ s.api_key }}' },
  body: new FormData(document.querySelector('form'))
});
const { ok, id } = await res.json();{% endfilter %}

Vanaf een server (aanbevolen: de sleutel blijft geheim)

{% filter forceescape %}curl -X POST {{ api_url }} \
  -H 'X-API-Key: {{ s.api_key }}' -H 'Content-Type: application/json' \
  -d '{"naam": "Jan Jansen", "email": "jan@example.nl", "bericht": "Graag info", "model": "Amstel"}'{% endfilter %}

Producten bijwerken (prijsmutaties)

Werkt producten bij op SKU, bijvoorbeeld vanuit een prijsscript van een leverancier. Veldnamen zoals bij de import. ?deactivate_missing=1 zet producten die niet in de lijst staan op inactief.

{% filter forceescape %}curl -X POST '{{ url_for('api_products', _external=True) }}?source=Leverancier%20X' \
  -H 'X-API-Key: {{ s.api_key }}' -H 'Content-Type: application/json' \
  -d '[{"sku": "plaat.osbM2", "naam": "OSB", "prijs": "12,50", "eenheid": "m²", "leverancier": "Houthandel Y"}]'{% endfilter %}
{% endblock %}