| Retour ID | Debiteur | Klant | Artikelen | Status | Datum |
|---|
Klant selecteren
Artikelen
Opmerking
Magazijnverwerking
Optioneel — deze gegevens worden onderaan de PDF afgedrukt als invulblok voor het magazijn.
Klanten importeren via Excel of CSV
Kolommen: Debiteurennummer, Naam, Email, optioneel Telefoon. Eerste rij = koptekst.
Klik of sleep een bestand hiernaartoe
.csv · .xlsx · .xlsKlantenoverzicht
Supabase database instellen
Ga naar supabase.com → maak gratis account → New project (regio: Frankfurt).
Ga naar SQL Editor, kopieer de SQL hieronder en klik Run.
Ga naar Authentication → Settings en zet Enable email confirmations uit.
Ga naar Authentication → Users → Invite user om accounts aan te maken voor collega's.
Ga naar Project Settings → API. Kopieer de Project URL en anon public key en vul ze in de blauwe balk bovenaan in.
SQL — plak in Supabase SQL Editor
CREATE TABLE IF NOT EXISTS klanten ( id BIGSERIAL PRIMARY KEY, debiteur_nr TEXT UNIQUE, naam TEXT NOT NULL, vertegenwoordiger TEXT, email TEXT, telefoon TEXT, adres TEXT, postcode TEXT, plaats TEXT, aangemaakt TIMESTAMPTZ DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS retouren ( id BIGSERIAL PRIMARY KEY, retour_nr TEXT UNIQUE NOT NULL, klant_id BIGINT REFERENCES klanten(id), debiteur_nr TEXT, naam TEXT NOT NULL, email TEXT, status TEXT DEFAULT 'Ontvangen', opmerking TEXT, mail_sent BOOLEAN DEFAULT FALSE, aangemaakt TIMESTAMPTZ DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS artikelregels ( id BIGSERIAL PRIMARY KEY, retour_id BIGINT REFERENCES retouren(id) ON DELETE CASCADE, artikel_nr TEXT, omschrijving TEXT, reden TEXT ); ALTER TABLE klanten ENABLE ROW LEVEL SECURITY; ALTER TABLE retouren ENABLE ROW LEVEL SECURITY; ALTER TABLE artikelregels ENABLE ROW LEVEL SECURITY; CREATE POLICY "auth_k" ON klanten FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "auth_r" ON retouren FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "auth_a" ON artikelregels FOR ALL TO authenticated USING (true) WITH CHECK (true);
Resend instellen (gratis e-mail API)
Ga naar resend.com en maak een gratis account aan. Gratis plan: 3.000 e-mails/maand.
Voeg een domein toe via Domains → Add domain. Voeg de DNS-records toe die Resend aangeeft bij je domeinnaam-provider (bijv. voor spitswallcoverings.nl). Dit is nodig zodat mails niet in de spam belanden.
Ga naar API Keys → Create API Key. Geef hem een naam (bijv. "Retourenbeheer") en kopieer de key — je ziet hem maar één keer.
Sla de key op als Supabase Secret: ga naar je Supabase project → Project Settings → Edge Functions → Secrets en voeg toe: naam RESEND_API_KEY, waarde = jouw key.
Supabase Edge Function aanmaken
Installeer de Supabase CLI: npm install -g supabase (vereist Node.js). Of download via supabase.com/docs/guides/cli.
Maak een map supabase/functions/send-retour-mail/ aan en maak daarin het bestand index.ts met de code hieronder.
Deploy met: supabase functions deploy send-retour-mail --project-ref JOUW_PROJECT_ID. Je project-ID staat in Project Settings → General.
Klaar — de app roept deze functie automatisch aan na het opslaan van een retour.
supabase/functions/send-retour-mail/index.ts
import { serve } from "https://deno.land/[email protected]/http/server.ts";
const RESEND_KEY = Deno.env.get("RESEND_API_KEY")!;
const TO = "[email protected]";
serve(async (req) => {
if (req.method === "OPTIONS") {
return new Response("ok", {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type",
},
});
}
try {
const { retour_nr, naam, debiteur_nr, email, artikelen, opmerking, datum, pdf_base64 } =
await req.json();
const artikelRows = artikelen
.map(
(a: any) =>
`
${a.artikel_nr || "—"}
${a.omschrijving || "—"}
${a.reden || "—"}
`
)
.join("");
const html = `
App online zetten via Netlify
Wil je de Supabase URL en key vast inbakken zodat collega's ze niet zelf hoeven in te voeren? Zoek in dit HTML-bestand naar SB_URL_HERE en SB_KEY_HERE en vervang ze.
Ga naar app.netlify.com/drop en sleep het bestand index.html op de pagina. Je krijgt direct een link zoals https://naam-123.netlify.app.
Wil je een eigen URL? Ga in Netlify naar Site settings → Domain management → Add custom domain.
Bij updates: sleep een nieuw HTML-bestand naar Netlify → Deploys → drag and drop. De URL blijft hetzelfde.