Flask + SQLite, in de Van Emous-huisstijl (tokens uit het design system, GSAP-effecten volgens de motion-regels, uit bij prefers-reduced-motion). - Leads en contactpersonen: status, toewijzen, verwachte waarde, omzetten naar klant, tijdlijn, bestanden, taken/opvolging - Relaties (zoals accounts in EspoCRM): klantbundels (huishouden/familie) en partners met type (leverancier, aannemer, ...); leveranciers van producten worden automatisch partners - API voor formulieren (POST /api/leads) met dubbele-leaddetectie, bestanden en configurator-ontwerpen (house-design JSON) - Import van CSV/JSON (leads, relaties, producten) met kolomkoppeling; configurator-formaat - Producten met SKU als vaste sleutel, mutatiehistorie, POST /api/products, CSV-export; offerteregels houden hun eigen prijs - Offertes met btw per tarief en afdrukversie (PDF via de browser) - Inbox via IMAP/SMTP, gekoppeld aan contacten - Gebruikers (beheerder/medewerker) en klantportaal (offertes accepteren, bestanden, berichten) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.6 KiB
HTML
40 lines
1.6 KiB
HTML
{% extends 'base.html' %}
|
|
{% block title %}{{ e.subject }}{% endblock %}
|
|
{% block content %}
|
|
<div class="head">
|
|
<div>
|
|
<a class="label" href="{{ url_for('inbox') }}">← Inbox</a>
|
|
<h1>{{ e.subject }}</h1>
|
|
<div class="muted">
|
|
{% if e.direction == 'in' %}Van {{ e.from_name }} <{{ e.from_addr }}>{% else %}Aan {{ e.to_addr }}{% endif %}
|
|
· {{ e.date|dt }}
|
|
</div>
|
|
</div>
|
|
<div class="actions">
|
|
{% if contact %}
|
|
<a class="btn ghost" href="{{ url_for('contact_view', cid=contact.id) }}">Naar {{ contact.name }}</a>
|
|
{% elif e.direction == 'in' %}
|
|
<form method="post" action="{{ url_for('inbox_contact', eid=e.id) }}" class="inline"><button class="btn ghost">Maak contact aan</button></form>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card"><div class="mailbody">{{ e.body }}</div></div>
|
|
|
|
{% if e.direction == 'in' %}
|
|
<div class="card">
|
|
<h2>Beantwoorden</h2>
|
|
<form method="post" action="{{ url_for('mail_send') }}">
|
|
<input type="hidden" name="reply_to" value="{{ e.id }}">
|
|
{% if contact %}<input type="hidden" name="contact_id" value="{{ contact.id }}">{% endif %}
|
|
<div class="fields">
|
|
<div><label>Aan</label><input type="email" name="to" value="{{ e.from_addr }}" required></div>
|
|
<div><label>Onderwerp</label><input name="subject" value="{{ e.subject if e.subject.lower().startswith('re:') else 'Re: ' ~ e.subject }}" required></div>
|
|
<div class="full"><label>Bericht</label><textarea name="body" rows="8" required></textarea></div>
|
|
</div>
|
|
<div class="actions"><button class="btn">Versturen</button></div>
|
|
</form>
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %}
|