Tafelrokkenshop Logo

Gebruikersdocumentatie

Volledige documentatie voor het Operations Dashboard

Gebruikersdocumentatie

Welkom bij de gebruikersdocumentatie van het Tafelrokkenshop Operations Dashboard. Deze documentatie legt uit wat de frontend doet, hoe functies werken en hoe je het platform gebruikt.

Technische Documentatie

Voor technische documentatie (installatie, API referenties, configuratie), zie de technische documentatie pagina.

Platform Overzicht

Het Tafelrokkenshop Operations Dashboard is een centraal platform voor het beheren van:

  • Orders van meerdere kanalen (Shopify, Bol.com)
  • Voorraad met intelligente verdeling over product varianten
  • Retouren met automatische import en verwerking
  • Inkooporders met automatische voorraad bijboeking
  • Producten met prijsbeheer en synchronisatie
  • Kostenbeheer met kostenanalyse en impact weergave
  • Responsive Design en PWA functionaliteit voor mobiel gebruik

Dashboard

Het dashboard geeft een overzicht van de belangrijkste statistieken en trends.

Statistieken

  • Order Statistieken: Totaal aantal orders, totale omzet, gemiddelde orderwaarde
  • Product Statistieken: Totaal aantal producten, actieve producten
  • Voorraad Statistieken: Aantal producten met lage voorraad, totaal voorraad op hand

Grafieken

  • Maandelijkse Omzet: Overzicht van omzet per maand
  • Voorraad Historie: Voorraad ontwikkeling over tijd (dag/week/maand)
  • Totaal Verkochte Items: Aantal verkochte items in geselecteerde periode

Vernieuwen Knop

De "Vernieuwen" knop bovenaan het dashboard synchroniseert eerst data met externe platforms (Shopify, Bol.com) en herlaadt daarna de dashboard data uit de database.

Wat gebeurt er:

  1. Synchronisatie: Orders en producten worden opgehaald van Shopify en Bol.com
  2. Herladen: Dashboard statistieken worden bijgewerkt met de nieuwste data

Wat wordt herladen:

  • Order statistieken (totaal, omzet, gemiddelde)
  • Product statistieken
  • Voorraad statistieken
  • Maandelijkse omzet grafiek
  • Voorraad historie grafiek
  • Totaal verkochte items

Belangrijk

De "Vernieuwen" knop synchroniseert wel data met externe platforms (Shopify, Bol.com) voordat de dashboard data wordt herladen. Dit zorgt ervoor dat je altijd de meest actuele data ziet. Zie De "Vernieuwen" Knop sectie voor meer informatie.

Tip

Gebruik de "Vernieuwen" knop om de nieuwste data van externe platforms op te halen en de dashboard statistieken te verversen. Dit kan 30-60 seconden duren afhankelijk van hoeveel nieuwe data er is.

Orders Beheer

Orders Overzicht (`/orders`)

Op deze pagina zie je alle orders van alle kanalen (Shopify, Bol.com) in één overzicht.

Functies

  • Filteren: Op status, kanaal, of periode
  • Sorteren: Op datum, ordernummer, of totaalbedrag
  • Zoeken: Zoek op ordernummer, klantnaam, of product
  • Details bekijken: Klik op een order om details te zien
  • Bezza Media Factuurnummer Import: Nieuw! Bulk import van Bezza Media factuurnummers op basis van order ID (Shopify orderNo of Bol externalId). Zie Bezza Media Factuurnummer Import voor details.

Vernieuwen Knop

De "Vernieuwen" knop synchroniseert eerst orders met externe platforms (Shopify, Bol.com) en herlaadt daarna de orders uit de database.

Wat gebeurt er:

  1. Synchronisatie: Nieuwe orders worden opgehaald van Shopify en Bol.com
  2. Herladen: Orders overzicht wordt bijgewerkt met de nieuwste data

Wat wordt herladen:

  • Nieuwe orders
  • Order status updates
  • Klantgegevens (naam, email, adres)
  • Tracking nummers en verzenddata
  • Transaction fees (Shopify Payments)

Orders Beheer (`/orders/manage`)

Deze pagina toont alle orders met hun orderregels en gerelateerde retouren.

Functies

  • Orderregels bekijken: Zie alle producten per order
  • Retouren zien: Zie welke producten zijn geretourneerd
  • Order bewerken: Klik op een order om te bewerken
  • Interne Factuur Kolom: Nieuw! Zie en bewerk Bezza Media factuurnummers (Interne Factuur) voor alle orders. Beschikbaar in desktop en mobile view, met bulk edit ondersteuning.

Order Edit (`/orders/[id]/edit`)

Op deze pagina kun je een specifieke order bewerken.

Functies

  • Order informatie: Ordernummer, datum, status, kanaal
  • Klantgegevens: Naam, email, adres (kan worden opgehaald via "Klantgegevens ophalen" knop)
  • Orderregels: Producten, hoeveelheden, prijzen
  • Kosten: Verzendkosten, fees, BTW
  • Track & Trace: Tracking nummer en status
  • Admin: Volledige database velden bewerken
  • Bol Fee Clarity: Verbeterd! Voorgestelde Bol fee toont nu expliciet "(ex BTW)" voor duidelijkheid

Tracking Status Automatisch Ophalen

Het systeem kan automatisch de tracking status ophalen voor PostNL, DPD en Bpost pakketten:

  • PostNL Tracking: Automatische detectie van bezorgstatus en pickup point status
    • Detecteert automatisch wanneer een pakket klaar ligt bij een PostNL-punt
    • Toont ophaaldatum in plaats van bezorgdatum voor pickup point pakketten
    • Status message: "Pakket ligt klaar bij PostNL tot DD-MM-YYYY"
  • DPD Tracking: Automatische detectie voor DPD pakketten (14-cijferige tracking codes)
  • Bpost Tracking: Automatische detectie voor Bpost pakketten

Hoe te gebruiken:

  1. Ga naar de order edit pagina
  2. Klik op de "Update status" knop in het Track & Trace blok
  3. Het systeem haalt automatisch de tracking status op en vult de velden in
  4. Voor PostNL-punt pakketten wordt het label automatisch aangepast naar "Ophaaldatum"

PostNL Pickup Point Detectie

Sinds 2025-12-02 detecteert het systeem automatisch wanneer een pakket klaar ligt bij een PostNL-punt. Het label "Bezorgdatum" wordt automatisch aangepast naar "Ophaaldatum" op alle order pagina's (edit, admin, manage, overzicht) voor betere duidelijkheid.

Handmatige Invoer

Als automatische tracking faalt, worden de handmatige invoer velden visueel gemarkeerd met een gele border. Je kunt dan handmatig de status en datum invoeren. Het systeem focust automatisch op het status veld voor snellere invoer.

Bezza Media Factuurnummer Import

Nieuw! Je kunt nu Bezza Media factuurnummers bulk importeren voor verkooporders (Shopify en Bol.com).

Hoe te gebruiken

  1. Ga naar de /orders pagina
  2. Klik op de "Import Factuurnrs" knop in de header
  3. Plak je data in het tekstveld met het volgende formaat:
    • Eén regel per order
    • Formaat: Order ID | Bezza Media Factuurnr
    • Scheidingstekens: tab, komma, of pipe (|)
    • Voorbeelden:
      • Shopify: 2025.1025 2020.2055 of 2025.1025,2020.2055
      • Bol.com: A000CF8N78 2020.2053 of A000CF8N78|2020.2053
  4. Klik op "Import"
  5. Bekijk de resultaten: aantal succesvol, aantal gefaald, en details per order

Belangrijke Details

  • Order Matching: Orders worden gematcht op basis van:
    • Shopify: orderNo (bijv. "2025.1025" - "#" prefix wordt automatisch verwijderd)
    • Bol.com: externalId (bijv. "A000CF8N78")
  • Duplicate Detection: Hetzelfde order ID wordt maar één keer verwerkt (eerste voorkomen wordt gebruikt)
  • Input Validatie: Lege order IDs of factuurnummers worden overgeslagen
  • Resultaten: Je ziet per order of de update succesvol was of gefaald, inclusief eventuele foutmeldingen

Interne Factuur

De geïmporteerde factuurnummers worden opgeslagen als "Interne Factuur" (Bezza Media factuurnummer) en zijn zichtbaar op de /orders/manage pagina in de "Interne Factuur" kolom.

Voorraad Beheer

Voorraad Overzicht (`/inventory`)

Op deze pagina zie je de voorraad van alle producten.

Functies

  • Zoeken: Zoek op SKU, EAN, of productnaam
  • Filteren: Op product type, status, of voorraadniveau
  • Voorraad aanpassen: Handmatige voorraad correcties
  • Voorraad hertellen: Herbereken voorraad op basis van alle transacties
  • Variant linking: Zie welke varianten gekoppeld zijn aan master producten

Berekende Voorraad

Voor producten met meerdere "rokken" (bijv. 4 rokken per product):

  • Voorraad wordt opgeslagen op het master product in "rokken"
  • Voor child varianten wordt de voorraad berekend als: master_voorraad / aantal_rokken
  • Bijvoorbeeld: 8 rokken op master, 4 rokken per variant = 2 stuks beschikbaar per variant

Voorraad Knoppen

Boven het voorraadoverzicht staan verschillende knoppen voor voorraadbeheer:

  • Mutaties Log: Bekijk een overzicht van alle voorraadmutaties, inclusief inkooporders, verkooporders, retouren, handmatige aanpassingen en afboekingen. Je kunt filteren op type, datum en product, en de data exporteren naar CSV. Nieuw: Automatische creatie van ontbrekende mutaties voor fulfilled orders via de "Ontbrekende Aanmaken" knop.
  • Correcties: Bekijk een overzicht van alle handmatige voorraadcorrecties. Deze pagina toont alleen de correcties die zijn gemaakt via de "Inboeken" knop of de "Aanpassen" actie in de tabel. Je kunt filteren op datum, zoeken op SKU, productnaam, reden of notitie, en de data exporteren naar CSV.
  • Exporteren (CSV): Exporteer het huidige voorraadoverzicht (inclusief filters) naar een CSV-bestand. Handig voor rapportage, analyse of backup doeleinden. Het bestand bevat SKU, productnaam, locatie, voorraadniveaus, kostprijs en waarde.
  • Verifieer Voorraad: Vergelijk de voorraad in het systeem met externe bronnen (Shopify, Bol.com). Deze functie controleert of er verschillen zijn tussen de interne voorraad en de voorraad zoals die wordt getoond in de verkoopkanalen. Handig om synchronisatieproblemen op te sporen.
  • Voorraad Hertellen: Herbereken de voorraad op basis van alle historische transacties (inkooporders, verkooporders en retouren). Deze functie herstelt de voorraadniveaus door alle mutaties opnieuw door te rekenen. Gebruik dit als je vermoedt dat de voorraad niet klopt of na het oplossen van synchronisatieproblemen.
  • Inboeken: Boek voorraad handmatig in of uit via een popup. Selecteer een product op basis van SKU of productnaam (met zoekfunctie). De zoekfunctie toont alleen actieve producten (geen gearchiveerde of draft producten). Varianten worden automatisch geladen bij focus op het zoekveld. Voer een aanpassing in (positief of negatief), selecteer een reden en voeg optioneel een notitie toe. Deze functie is handig voor snelle voorraadcorrecties zonder eerst een product in de tabel te zoeken.
  • Sync naar Platforms: Nieuw! Handmatig de voorraad synchroniseren naar Shopify en Bol.com. Deze knop pusht de huidige voorraad van alle SKU's naar beide platforms. Handig na het ontvangen van een nieuwe zending of na handmatige voorraadaanpassingen. De sync wordt geregistreerd in de Sync Logs met details over welke varianten zijn bijgewerkt en de voor/na waarden.
  • Check & Fix Differences: Nieuw! Controleer automatisch op voorraadverschillen tussen de database en externe platforms (Shopify, Bol.com). Als er verschillen worden gevonden, worden deze automatisch gecorrigeerd door een sync te triggeren. Je krijgt een melding met het aantal bijgewerkte varianten.

Info Icoon

Klik op het info-icoon (ℹ️) naast de knoppen voor gedetailleerde uitleg over elke functie.

Automatische Mutaties

Het systeem creëert automatisch voorraadmutaties wanneer orders worden fulfilled. Als er mutaties ontbreken (bijvoorbeeld door directe database updates), kun je deze aanmaken via de "Ontbrekende Aanmaken" knop in het Mutaties Log.

Acties in de Tabel

Voor elk hoofdartikel in de tabel zijn er twee actieknoppen beschikbaar:

  • Aanpassen: Pas de voorraad handmatig aan met een positief of negatief getal. Bijvoorbeeld: +10 om 10 rokken toe te voegen, of -5 om 5 rokken af te halen. Geschikt voor correcties, stocktakes of kleine aanpassingen.
  • Afboeken: Schrijf voorraad permanent af (bijvoorbeeld door schade, diefstal of kwaliteitsproblemen). De afgeschreven voorraad kan niet meer worden gebruikt. Alle afboekingen worden geregistreerd in het Mutaties Log met de reden van afboeking.

Belangrijk

Alleen hoofdartikelen kunnen worden aangepast of afgeschreven. Voor gekoppelde varianten wordt de voorraad automatisch berekend op basis van het hoofdartikel.

Voorraad Verificatie

De applicatie kan de voorraad verifiëren tegen externe platforms (Shopify, Bol.com):

  • Vergelijkt database voorraad met externe platform voorraad
  • Toont verschillen en waarschuwingen
  • Belangrijk: De database is altijd leading - externe voorraad wordt alleen ter informatie getoond

Automatische Voorraad Synchronisatie

Het systeem synchroniseert automatisch de voorraad naar externe platforms (Shopify, Bol.com) wanneer:

  • Een order wordt geregistreerd en de voorraad wordt afgeboekt (SALE_ORDERED mutatie)
  • Een order wordt fulfilled en de voorraad wordt definitief afgeboekt (SALE_FULFILLED mutatie)
  • Een handmatige voorraadaanpassing wordt gemaakt (MANUAL_ADJUSTMENT mutatie)
  • De voorraad wordt herteld (RECOUNT mutatie)

Hoe het werkt:

  1. Na een voorraadmutatie wordt automatisch een sync naar platforms getriggerd
  2. Alle SKU's (inclusief master en child varianten) worden gesynchroniseerd
  3. De sync wordt geregistreerd in de Sync Logs met een koppeling naar de originele mutatie
  4. In de Sync Logs zie je per variant de voorraadwaarde voor en na de update

Sync Logs

Alle voorraadsyncs worden geregistreerd in de Sync Logs (beschikbaar via het menu). Hier zie je:
  • Wanneer de sync is uitgevoerd
  • Hoeveel varianten zijn bijgewerkt per platform (Shopify, Bol.com)
  • Voor/na voorraadwaarden per variant
  • Eventuele fouten tijdens de sync
  • Koppeling naar de originele voorraadmutatie (indien van toepassing)

Lokale Omgeving

Op de lokale ontwikkelomgeving is de voorraadsync naar platforms uitgeschakeld om te voorkomen dat lokale testdata de live platforms beïnvloedt. Data ophalen van platforms (orders, retouren, voorraad checks) is wel toegestaan.

Locatiebeheer en Voorraad Omboeken

Het systeem ondersteunt meerdere voorraad locaties voor intern beheer. Je kunt voorraad tussen locaties omboeken via de "Voorraad Omboeken" functie.

  • Locaties beheren: Beheer voorraad locaties via /settings > "Voorraad Locaties"
  • Hoofdmagazijn: Standaard locatie voor alle inkomende voorraad (inkooporders, retouren, correcties)
  • Voorraad Mitchel: Korte termijn voorraad locatie, prioriteit bij voorraadafboeking
  • Voorraad per Locatie: Bekijk voorraad breakdown per locatie in het voorraad overzicht
  • Locatie Filter: Filter het voorraad overzicht op specifieke locatie of bekijk totaal over alle locaties

Voorraad Omboeken:

  1. Ga naar /inventory en klik op "Meer acties" > "Voorraad Omboeken"
  2. Selecteer een variant (SKU of productnaam) via de zoekbalk. De zoekfunctie toont alleen actieve producten (geen gearchiveerde of draft producten). Varianten worden automatisch geladen bij focus op het zoekveld.
  3. Kies bron locatie (van waar) en doel locatie (naar waar)
  4. Voer de hoeveelheid in die je wilt omboeken
  5. Selecteer een reden (bijv. "Transfer tussen locaties") en voeg optioneel een notitie toe
  6. Klik op "Omboeken" om de transfer uit te voeren

Belangrijke regels:

  • Alle inkomende voorraad (inkooporders, retouren, correcties) wordt automatisch geboekt naar "Hoofdmagazijn"
  • Bij voorraadafboeking wordt eerst voorraad afgeboekt van "Voorraad Mitchel", daarna van andere locaties
  • Voorraad transfers worden geregistreerd als TRANSFER transacties in het Mutaties Log
  • Platform syncs (Shopify, Bol.com) gebruiken de totale voorraad over alle locaties

Hulp

Klik op "Hoe voorraad omboeken?" in het "Meer acties" menu voor gedetailleerde instructies en tips.

Sync Logs Beheer

Alle voorraadsyncs naar externe platforms worden geregistreerd in de Sync Logs. Je kunt deze bekijken en beheren via /sync/logs.

  • Sync Overzicht: Bekijk alle uitgevoerde syncs met datum, platform, aantal varianten, status en duur
  • Sync Details: Klik op een sync om details te zien: welke varianten zijn bijgewerkt, voor/na voorraadwaarden, eventuele fouten
  • Failed Syncs: Bekijk gefaalde syncs en probeer ze opnieuw via de "Retry" knop
  • Sync Performance Metrics: Dashboard met key performance indicators:
    • Totale syncs (24h, 7d, 30d)
    • Success rate per platform
    • Gemiddelde sync duur
    • Error rates en trends
    • Automatische alerts voor problemen (hoge error rates, langzame syncs, geen recente syncs)
  • Sync Log Retention: Configureer hoeveel dagen sync logs worden bewaard (standaard 30 dagen) via /settings > "Notificaties" > "Sync Logs Beheer"
  • Handmatige Cleanup: Verwijder oude sync logs handmatig via de "Logs Nu Opruimen" knop

Tip

Gebruik de Sync Performance Metrics om problemen met platform synchronisatie vroegtijdig te detecteren. Alerts worden automatisch gegenereerd bij afwijkende patronen.

Retouren Beheer

Retouren Overzicht (`/returns`)

Op deze pagina zie je alle retouren.

Functies

  • Filteren: Op status, kanaal, of periode
  • Sorteren: Op datum, retournummer, of bedrag (klik op kolom headers)
  • Zoeken: Zoek op retournummer of ordernummer
  • Exporteren: Export naar CSV

Vernieuwen Knop

De "Vernieuwen" knop synchroniseert eerst data met externe platforms (Shopify, Bol.com) en herlaadt daarna de retouren uit de database.

Wat gebeurt er:

  1. Synchronisatie: Orders worden gesynchroniseerd (retouren worden niet automatisch geïmporteerd)
  2. Herladen: Retouren overzicht wordt bijgewerkt met de nieuwste data

Wat wordt herladen:

  • Alle retouren met huidige filters toegepast
  • Retour details (status, producten, terugbetaling, tracking)

Belangrijk

Retouren worden niet automatisch gesynchroniseerd vanuit externe platforms. Retouren moeten handmatig worden geïmporteerd via de Bol.com Returns API of handmatig worden aangemaakt.

Retour Aanmaken (`/returns/create`)

Maak een nieuwe retour aan voor een bestaande order.

Stappen

  1. Zoek de order op ordernummer of factuurnummer
  2. Selecteer de producten die worden geretourneerd
  3. Geef de hoeveelheid op (negatief getal, bijv. -2)
  4. Vul retour informatie in (datum, reden, etc.)
  5. Sla op

Retour Edit (`/returns/[id]/edit`)

Bewerk een bestaande retour.

Functies

  • Retour Informatie: Datum, status, Bol.com retourstatus
  • Order Informatie: Origineel ordernummer, factuurnummer
  • Retourregels: Producten en hoeveelheden
  • Kosten: Terugbetaling, additionele kosten, verzendkosten
  • Track & Trace: Tracking nummer, status, link
  • Retour Inboeken: Boek retour in voorraad (alleen bij "Ingeboekt" status)
  • Admin: Volledige database velden bewerken

Retour Statussen

  • Pending: Retour is aangemaakt en wacht op behandeling
  • Goedgekeurd: Retour is goedgekeurd voor terugbetaling
  • Afgewezen: Retour is afgewezen
  • Ingeboekt: Retour is ingeboekt in voorraad (voorraad wordt bijgewerkt)
  • Retour geannuleerd: Retour is geannuleerd (geen terugbetaling)

Belangrijk

Alleen de status "Ingeboekt" triggert automatische voorraad bijboeking. Andere statussen hebben geen invloed op voorraad.

Bol.com Retouren

Voor Bol.com retouren worden extra velden getoond:

  • Bol.com Retourstatus: Afgehandeld of Pending (kan worden aangepast in instellingen)
  • Status: Bol.com return status (CANCELLED, ACCEPTED, etc.)
  • Handling Result: Gedetailleerd afhandelingsresultaat

Deze statussen kunnen worden aangepast in /settings > "Bol.com Status Mapping".

Inkooporders

Inkooporders Overzicht (`/purchasing`)

Op deze pagina zie je alle inkooporders.

Statistieken

  • Totaal Inkooporders: Totaal aantal inkooporders
  • Totaal ingeboekt: Totaal aantal ingeboekte orders
  • Openstaand: Aantal openstaande orders
  • Totaal bestelde producten: Totaal aantal bestelde producten

Bezza Media Factuurnummer

  • Bezza Media Factuurnr Kolom: Zie en bewerk Bezza Media factuurnummers voor inkooporders
  • Bulk Import: Nieuw! Import factuurnummers via "Import Factuurnrs" knop. Formaat: Bestelling ID | Bezza Media Factuurnr (tab, komma, of pipe gescheiden)
  • Duplicate Detection: Hetzelfde purchase ID wordt maar één keer verwerkt tijdens import

Inkooporder Aanmaken (`/purchasing/create`)

Maak een nieuwe inkooporder aan.

Functies

  • Leverancier selecteren: Kies een leverancier
  • Order Type: Kies order type (Regulier, Spoed, etc.)
  • Producten toevoegen: Voeg producten toe met hoeveelheden
  • Kosten: Transactiekosten, invoerrechten, additionele kosten
  • Dollar koers: Actuele USD/EUR koers wordt getoond
  • Automatische prijsberekening: Inkoopprijs wordt automatisch berekend op basis van product type

Inkooporder Edit (`/purchasing/[id]/edit`)

Bewerk een bestaande inkooporder.

Workflow

  1. Aanmaken: Nieuwe inkooporder aanmaken
  2. Ontvangen: Status wijzigen naar "Ontvangen" met ontvangstdatum
  3. Inboeken: Status wijzigen naar "Ingeboekt" - voorraad wordt automatisch bijgewerkt

Automatische Voorraad Bijboeking

Wanneer een inkooporder wordt ingeboekt, wordt de voorraad automatisch bijgewerkt voor alle producten in de order. Voorraad wordt geboekt op master varianten en automatisch doorgerekend naar child varianten.

Producten Beheer

Producten Overzicht (`/products/manage`)

Op deze pagina zie je alle producten met hun prijzen en voorraad.

Functies

  • Zoeken: Zoek op SKU, EAN, of productnaam
  • Filteren: Op product status (standaard: "Actief")
  • Sorteren: Op verschillende kolommen
  • Prijzen ophalen: Haal prijzen op van Shopify en Bol.com
  • Prijzen bewerken: Pas prijzen aan en synchroniseer terug naar platforms
  • Datum bewerken: Pas "Datum toegevoegd" aan

Default Filter

De producten pagina opent standaard met het "Actief" filter, zodat je alleen actieve producten ziet.

Prijzen

  • Shopify Prijs: Prijs op Shopify (kan worden opgehaald en gesynchroniseerd)
  • Bol.com Prijs: Prijs op Bol.com (kan worden opgehaald en gesynchroniseerd)
  • Inkoopprijs: Gemiddelde inkoopprijs op basis van inkooporders
  • Tiered Pricing: 2x, 4x, 8x prijzen (indien beschikbaar)

Voorraad

  • Huidige Voorraad: Voorraad uit de database
  • Berekende Voorraad: Voor child varianten wordt de voorraad berekend op basis van master variant

Vernieuwen Knop

De "Vernieuwen" knop synchroniseert eerst producten met externe platforms (Shopify, Bol.com) en herlaadt daarna de producten uit de database.

Wat gebeurt er:

  1. Synchronisatie: Product informatie wordt opgehaald van Shopify en Bol.com
  2. Herladen: Producten overzicht wordt bijgewerkt met de nieuwste data

Wat wordt herladen:

  • Alle producten met prijzen en voorraad
  • Product details (SKU, EAN, titel, prijzen)

Belangrijk

De "Vernieuwen" knop synchroniseert wel product informatie van externe platforms voordat de data wordt herladen. Dit zorgt ervoor dat je altijd de meest actuele product informatie ziet.

Voorraad

Voorraad wordt niet gesynchroniseerd. De database is de single source of truth voor voorraad.

EAN Codes Beheer (`/products/ean-manager`)

Op deze pagina beheer je EAN codes, SKU's en product varianten.

Functies

  • EAN Codes bewerken: Pas EAN codes aan per variant
  • Bol.com OfferID: Koppel OfferID aan producten voor prijs ophalen
  • Variant Linking: Koppel varianten aan master producten voor voorraadverdeling
  • Aantal Rokken: Geef aan hoeveel rokken per product

Product Sales Dashboard (`/products/[id]/sales`)

Het Product Sales Dashboard biedt uitgebreide verkoopanalyse per product met gedetailleerde inzichten in verkoopcijfers, trends, voorraad en retouren.

Toegang

Klik op het grafiek icoon naast een product op de /products/manage pagina om het sales dashboard te openen.

KPI Cards

  • Totaal Verkocht: Totaal aantal verkochte items (rokken) in de geselecteerde periode
  • Totale Omzet: Totale omzet in de geselecteerde periode
  • Marge: Totale marge (omzet minus inkoopkosten)
  • Voorraad: Huidige voorraad met breakdown per locatie

Period Filters

  • Vandaag: Data van vandaag
  • MTD (Month to Date): Data vanaf het begin van de huidige maand
  • YTD (Year to Date): Data vanaf 1 januari van het huidige jaar
  • Aangepast: Kies een eigen datum range

Inclusief Varianten

Schakel het "Inclusief varianten" vinkje in om verkoopdata van zowel het hoofdproduct als alle gekoppelde varianten samen te voegen. Dit is handig voor producten met meerdere varianten (bijv. verschillende maten of kleuren).

Verkoop Trend Analyse

Analyseer verkooptrends met:

  • Vergelijk met vorige periode: Vergelijk huidige periode met dezelfde periode in de vorige periode (bijv. deze maand vs. vorige maand)
  • Beste Verkoop Dag/Maand: Identificeer de beste verkoop dagen en maanden op basis van historische data
  • Seizoenspatronen: Detecteer terugkerende verkooppatronen over langere periodes
  • Trends: Omzet, verkochte items en marge trends met percentage verandering

Voorraad Voorspelling

Krijg inzicht in voorraadprojecties:

  • Gemiddelde dagelijkse verkoop: Berekend op basis van historische data
  • Voorspelling wanneer voorraad opraakt: Projectie op basis van huidige voorraad en verkooptrend
  • Projecties: Voorraadprojecties voor 7, 14 en 30 dagen
  • Waarschuwingen: Kritiek (< 14 dagen) en waarschuwing (< 30 dagen) bij verwachte stockout
  • Optimale voorraad niveau: Suggestie voor optimale voorraad op basis van verkooptrend

Inkoopsuggesties

Krijg intelligente inkoopsuggesties:

  • Herbestelpunt: Aanbevolen voorraad niveau om te bestellen
  • Aanbevolen order hoeveelheid: Aanbevolen aantal items om te bestellen
  • Low Stock Alerts Instellingen: Configureer minimum voorraad, waarschuwingsniveau, levertijd en veiligheidsvoorraad per product
  • Email Notificaties: Stel in om email notificaties te ontvangen bij low stock alerts

Retour Analyse

Analyseer retourdata met:

  • Totaal Geretourneerd: Totaal aantal geretourneerde items (rokken)
  • Retour Percentage: Percentage van verkochte items dat is geretourneerd
  • Meest Voorkomende Retour Redenen: Top retour redenen met aantallen
  • Recente Retouren Tabel: Overzicht van recente retouren met klikbare retournummers
  • Retour Trend Over Tijd: Maandelijkse retour trends met gemiddelde retour percentages

Orderregels Tabel

Gedetailleerd overzicht van alle orderregels:

  • Sorteren: Klik op kolom headers om te sorteren (order, datum, kanaal, aantal, rokken, prijs, totaal, status)
  • Filteren: Filter op order nummer, kanaal en status
  • Paginatie: 50 orderregels per pagina
  • CSV Export: Exporteer gefilterde en gesorteerde data naar CSV
  • Klikbare Orders: Klik op order nummer om naar order details te gaan

Voorraad Locaties

Het systeem ondersteunt meerdere voorraad locaties (magazijnen, distributiecentra):

  • Voorraad per Locatie: Bekijk voorraad breakdown per locatie in de KPI card
  • Voorraad Bewegingen per Locatie: Zie alle voorraad transacties per locatie met datum, type, hoeveelheid en reden
  • Transfer Suggesties: Krijg automatische suggesties om voorraad te balanceren tussen locaties
  • Locatie Beheer: Beheer locaties via /settings > "Voorraad Locaties"
  • Shopify Synchronisatie: Synchroniseer locaties met Shopify en behoud handmatig aangepaste namen

Voorraad Bewegingen per Locatie

Bekijk alle voorraad transacties per locatie:

  • Datum: Wanneer de transactie plaatsvond
  • Locatie: Op welke locatie de transactie plaatsvond
  • Type: Type transactie (PURCHASE, SALE, RETURN, MANUAL_ADJUSTMENT, etc.)
  • Hoeveelheid: Aantal rokken (groen voor toevoegingen, rood voor afnames)
  • Van/Naar: Voorraad voor en na de transactie
  • Reden: Reden voor de transactie (indien beschikbaar)

Transfer Suggesties tussen Locaties

Het systeem analyseert voorraadverdeling en suggereert transfers:

  • Automatische Analyse: Berekent optimale voorraadverdeling tussen locaties
  • Suggesties: Toont suggesties wanneer een locatie >150% van gemiddelde heeft en andere <50%
  • Aanbevolen Hoeveelheid: Berekent optimale transfer hoeveelheid (max 50% van overschot)
  • Reden: Legt uit waarom de transfer wordt voorgesteld

Low Stock Alerts Instellingen

Configureer low stock alerts per product:

  • Minimum Voorraad Niveau: Stel minimum voorraad in (laat leeg voor automatische berekening)
  • Waarschuwings Niveau: Stel waarschuwings niveau in (1.5x herbestelpunt als leeg)
  • Levertijd: Aantal dagen levertijd (standaard 14 dagen)
  • Veiligheidsvoorraad: Aantal dagen veiligheidsvoorraad (standaard 7 dagen)
  • Automatische Alerts: Schakel automatische alerts in/uit
  • Email Notificaties: Schakel email notificaties in en stel email adres in

Tip

Low Stock Alerts instellingen kunnen per product worden ingesteld. Als je geen specifieke instellingen configureert, worden globale standaardwaarden gebruikt.

Kostenbeheer & Kostenanalyse

Het kostenbeheer systeem helpt je om alle kosten bij te houden en te analyseren hoe deze de verkoopcijfers beïnvloeden. Het systeem gebruikt een kostenposten systeem (zoals in een boekhoudsysteem) voor betere categorisatie en analyse.

Kostenposten Systeem

Alle kosten worden gekoppeld aan een kostenpost (grootboekrekening) in plaats van directe categorieën. Dit maakt betere analyse en rapportage mogelijk.

  • Kostenposten beheren: Maak, bewerk en verwijder kostenposten via /settings > "Kosten" sectie
  • BTW-instellingen: Elke kostenpost heeft BTW-instellingen (tarief en inclusief/exclusief BTW)
  • Hiërarchie: Kostenposten kunnen worden gegroepeerd via parent accounts
  • Standaard kostenposten: Het systeem heeft standaard kostenposten voor elke categorie (bijv. 6001 voor Inkoopkosten, 7001 voor Shopify Fee)

Kosten Types

Het systeem ondersteunt verschillende soorten kosten:

  • Inkoopkosten: Kosten voor ingekochte producten
  • Platform Fees: Shopify en Bol.com fees, transaction costs
  • Verzendkosten: Kosten voor verzending van orders
  • Advertentiekosten: Kosten voor advertenties per platform (Shopify Ads, Bol.com Ads, Google Ads, Facebook Ads)
  • Algemene kosten: Verpakkingsmateriaal, hardware, telefoon, software, server kosten, etc.

Echte Kosten vs. Virtuele Kosten

Het systeem kent twee soorten kosten:

Echte Kosten (Real Costs)

  • Staan in de costs tabel in de database
  • Worden handmatig toegevoegd of geïmporteerd (bijv. via Bol.com CSV import)
  • Kunnen worden bewerkt en verwijderd
  • Zijn gekoppeld aan een kostenpost (costAccountId)
  • Hebben volledige details: factuurnummer, leverancier, tags, etc.

Virtuele Kosten (Virtual Costs)

Virtuele kosten worden automatisch gegenereerd uit orderdata en worden alleen getoond als er geen echte cost entry bestaat voor dezelfde order en costType.

  • Virtual Platform Fees: Automatisch gegenereerd uit order.totals.fees (bijv. Bol.com fee, Shopify fee)
  • Virtual Shipping Costs: Automatisch gegenereerd uit order.totals.shipping (verzendkosten)
  • Virtual Additional Costs: Automatisch gegenereerd uit order.additionalCosts (extra kosten)

Waarom Virtuele Kosten?

Veel orders hebben verzendkosten en platform fees die zijn opgeslagen in de orderdata (order.totals), maar niet altijd handmatig als cost entry zijn toegevoegd. Virtuele kosten zorgen ervoor dat je deze kosten automatisch ziet in de kostenoverzichten, zonder dat je ze handmatig hoeft toe te voegen.

Belangrijk: Als je later een echte cost entry toevoegt voor een order (bijv. een Bol.com fee), verdwijnt de virtuele cost automatisch om duplicaten te voorkomen.

Wanneer Virtuele Kosten Gebruiken?

  • Virtuele kosten zijn handig voor een volledig overzicht van alle kosten, ook als ze niet handmatig zijn toegevoegd
  • Als je kosten handmatig wilt beheren (bewerken, verwijderen, factuurnummers toevoegen), voeg dan een echte cost entry toe
  • Echte kosten hebben meer details en kunnen worden gekoppeld aan kostenposten met BTW-instellingen

Kosten Pagina (`/costs`)

Op deze pagina kun je alle kosten beheren en bekijken.

Functies

  • Kosten toevoegen: Handmatig kosten toevoegen per type en kostenpost (verplicht)
  • Kosten Mutaties Log: Link naar /costs/log voor gedetailleerd overzicht van alle kosten mutaties
  • Bol.com CSV Import: Importeer kosten specificaties van Bol.com via CSV
  • Shopify Kosten: Kosten toevoegen per order of op platform niveau
  • Advertentiekosten: Kosten toevoegen per platform met campagne tracking
  • Filteren: Op type, kostenpost, platform, datum, campagne
  • Zoeken: Op beschrijving, factuurnummer, campagne naam, kostenpost naam
  • Exporteren: Export naar CSV
  • Kosten Impact Analyse: Link naar analyse pagina

Kosten Mutaties Log (`/costs/log`)

Deze pagina toont een gedetailleerd overzicht van alle geboekte kosten, vergelijkbaar met de voorraad mutaties log.

Functies

  • Filters: Datum range, kostenpost, kosten type, order, platform, zoekbalk
  • Tabel weergave: Desktop tabel met alle kosten details (datum, kostenpost, type, beschrijving, bedrag, referentie)
  • Mobiele weergave: Card-based layout voor mobiele apparaten
  • Paginering: 50 kosten per pagina
  • CSV Export: Exporteer gefilterde kosten naar CSV
  • Klikbare links: Naar order details (als gekoppeld) en kostenpost details

Advertentiekosten

Advertentiekosten kunnen worden toegevoegd per platform:

  • Shopify Ads: Shopify Marketing kosten
  • Bol.com Ads: Bol.com Promoties kosten
  • Google Ads: Google AdWords kosten
  • Facebook Ads: Meta Ads kosten
  • Overige: Andere advertentieplatformen

Advertentiekosten Toevoegen

Bij het toevoegen van advertentiekosten kun je optioneel:

  • Campagne naam: Naam van de campagne voor tracking
  • Datum range: Start- en einddatum van de campagne
  • Metrics: Impressions, clicks, conversions, CPC, CPA
  • Koppeling aan orders: Via UTM parameters, datum matching of product matching

Kosten Impact Analyse (`/costs/impact`)

Op deze pagina zie je hoe kosten de verkoopcijfers beïnvloeden.

KPI's

  • Totale kosten: Totaal van alle kosten in de geselecteerde periode
  • Totale omzet: Totale omzet in de geselecteerde periode
  • Netto winst: Omzet minus kosten
  • Marge percentage: Netto winst als percentage van omzet
  • Kosten per order: Gemiddelde kosten per order
  • Kosten per product: Gemiddelde kosten per product
  • Advertentiekosten specifiek:
    • Totale advertentiekosten
    • ROI (Return on Investment)
    • ROAS (Return on Ad Spend)
    • CPO (Cost per Order)

Visualisaties

  • Kosten vs. Omzet grafiek: Line chart met dual axis
  • Kosten breakdown: Pie chart per categorie
  • Kosten trend: Line chart over tijd
  • Advertentiekosten visualisaties:
    • Advertentiekosten vs. gegenereerde omzet
    • ROI/ROAS trend over tijd
    • Advertentiekosten per platform (bar chart)
    • Campaign performance (als campagne data beschikbaar)

Tabellen

  • Kosten per Order: Order nummer, datum, omzet, kosten, netto winst, marge %
  • Kosten per Product: SKU, product naam, aantal verkocht, totale kosten, kosten per stuk, omzet, marge
  • Advertentiekosten Analyse:
    • Advertentiekosten per platform overzicht
    • Campaign performance tabel
    • ROI/ROAS metrics per platform
    • Best performing campaigns

Bol.com CSV Import

Je kunt kosten specificaties van Bol.com importeren via CSV:

  1. Download de kosten specificatie CSV van Bol.com
  2. Klik op "Import Bol.com CSV" in de kosten pagina
  3. Upload het CSV bestand
  4. Controleer de preview en pas kolom mapping aan indien nodig
  5. Configureer import opties (skip duplicates, default categorie)
  6. Start de import

Belangrijk

De CSV import detecteert automatisch duplicaten op basis van factuurnummer, datum en bedrag. Je kunt ervoor kiezen om duplicaten over te slaan.

Responsive Design & PWA

Het platform is volledig responsive en kan worden geïnstalleerd als Progressive Web App (PWA).

Responsive Design

Alle pagina's zijn geoptimaliseerd voor verschillende schermformaten:

  • Desktop: Volledige functionaliteit met tabellen en uitgebreide filters
  • Tablet: Aangepaste layout met card-based weergave waar nodig
  • Mobiel: Touch-vriendelijke interface met hamburger menu en card-based layouts

Mobiele Features

  • Hamburger Menu: Navigatie menu dat uitklapt op mobiel
  • Card-based Layouts: Tabellen worden weergegeven als cards op kleine schermen
  • Touch-vriendelijke Knoppen: Alle knoppen hebben minimaal 44x44px voor betere touch targets
  • Responsive Modals: Modals passen zich aan aan schermgrootte
  • Bottom Navigation: Snelle toegang tot belangrijke pagina's (Dashboard, Orders, Voorraad, Retouren, Instellingen) op mobiel
  • Sticky Actie Kolom: Actie knoppen in tabellen blijven zichtbaar bij horizontaal scrollen op desktop
  • Responsive Lettertypes: Tekst schaalt automatisch op basis van schermgrootte voor betere leesbaarheid

Progressive Web App (PWA)

Het platform kan worden geïnstalleerd als PWA op je telefoon of desktop:

Installatie

  • Mobiel (iOS/Android):
    1. Open de website in je browser
    2. Klik op het installatie prompt (indien beschikbaar)
    3. Of ga naar browser menu > "Toevoegen aan startscherm"
  • Desktop (Chrome/Edge):
    1. Open de website in je browser
    2. Klik op het installatie icoon in de adresbalk
    3. Of ga naar browser menu > "App installeren"

PWA Features

  • Offline Functionaliteit: Basis functionaliteit werkt offline (cache)
  • App-achtige Ervaring: Volledig scherm zonder browser UI
  • Snelle Laadtijden: Service worker cacht resources
  • Offline Indicator: Zie wanneer je offline bent
  • Background Sync: Acties worden gesynchroniseerd wanneer je weer online bent
  • Push Notificaties: Ontvang meldingen wanneer nieuwe orders worden geïmporteerd

Push Notificaties

Het platform ondersteunt push notificaties voor belangrijke gebeurtenissen:

  • Nieuwe Orders: Ontvang een melding wanneer nieuwe orders worden geïmporteerd van Shopify of Bol.com
  • Geluid: Push notificaties spelen een geluid af (custom MP3 of Web Audio API beep)
  • Vibratie: Op mobiele apparaten wordt een vibratie patroon afgespeeld
  • Browser Notificaties: Standaard browser notificaties met titel en bericht

Push Notificaties Inschakelen:

  1. Ga naar /settings > "Notificaties" sectie
  2. Klik op "Push Notificaties Inschakelen"
  3. Geef toestemming voor notificaties in je browser
  4. Je ontvangt nu automatisch meldingen bij nieuwe orders

Browser Ondersteuning

Push notificaties werken in moderne browsers (Chrome, Firefox, Edge, Safari). Op iOS moet je de app installeren als PWA voor volledige ondersteuning.

Tip

Installeer de app op je telefoon voor snellere toegang en een app-achtige ervaring. De app werkt ook offline voor basis functionaliteit en je ontvangt push notificaties voor nieuwe orders.

Performance Optimalisaties

Het platform is geoptimaliseerd voor snelle laadtijden en soepele gebruikerservaring op alle apparaten.

Lazy Loading

Zware componenten zoals grafieken worden alleen geladen wanneer ze nodig zijn:

  • Grafieken: Dashboard grafieken worden lazy geladen voor snellere initial page load
  • Product Sales Dashboard: Alle grafieken worden pas geladen wanneer de pagina wordt bezocht
  • Dashboards Pagina: Grafieken worden dynamisch geladen voor betere performance

Voordeel

Lazy loading zorgt ervoor dat pagina's sneller laden, vooral op mobiele apparaten met langzamere verbindingen.

Image Optimization

Alle afbeeldingen worden automatisch geoptimaliseerd:

  • Automatische Compressie: Afbeeldingen worden gecomprimeerd zonder zichtbaar kwaliteitsverlies
  • Lazy Loading: Afbeeldingen worden alleen geladen wanneer ze in beeld komen
  • Responsive Sizing: Afbeeldingen worden automatisch aangepast aan schermgrootte
  • Logo's: Header logo's worden geoptimaliseerd voor snelle weergave
  • Bug Report Screenshots: Screenshots worden gecomprimeerd voordat ze worden geüpload

Virtual Scrolling

Voor zeer lange lijsten wordt virtual scrolling gebruikt:

  • Performance: Alleen zichtbare items worden gerenderd, zelfs bij duizenden items
  • Soepele Scroll: Scrollen blijft soepel ongeacht de lijstgrootte
  • Beschikbaar: Virtual scrolling component is beschikbaar voor gebruik op pagina's met lange lijsten

Wanneer gebruikt?

Virtual scrolling is vooral nuttig voor pagina's met honderden of duizenden items, zoals orders of producten.

Sticky Actie Kolom

Op desktop tabellen blijven actie knoppen altijd zichtbaar:

  • Altijd Zichtbaar: Actie kolom blijft rechts zichtbaar bij horizontaal scrollen
  • Betere UX: Geen scrollen nodig om acties uit te voeren
  • Desktop Only: Alleen actief op desktop schermen (mobiel gebruikt card-based layout)

Gebruik: Voeg sticky: true toe aan de header definitie in ResponsiveTable.

Bottom Navigation

Snelle toegang tot belangrijke pagina's op mobiel:

  • Altijd Beschikbaar: Navigatie blijft zichtbaar onderaan het scherm
  • Snelle Toegang: Directe toegang tot Dashboard, Orders, Voorraad, Retouren en Instellingen
  • Active State: Huidige pagina wordt gemarkeerd
  • Mobiel Only: Alleen zichtbaar op mobiele apparaten (optioneel op desktop)
  • Safe Area Support: Automatische aanpassing voor iOS notches en home indicators

Gebruik

De bottom navigation verschijnt automatisch op mobiele apparaten. Gebruik het voor snelle navigatie tussen belangrijke pagina's.

Instellingen

Instellingen Pagina (`/settings`)

Op deze pagina kun je alle instellingen van het platform beheren.

Beschikbare Secties

  • Algemeen: BTW, valuta, datum formaat
  • Orders: Factuurnummers, backorder preventie, order types
  • Verzending: Verzendkosten, Bol.com verzendkosten per land
  • Producten: Standaard item count, EAN verplicht
  • Retouren: Retour statussen, templates, redenen, Bol.com status mapping
  • Track & Trace: Templates voor tracking links
  • Kanalen: Shopify, Bol.com, WooCommerce configuratie
  • Inkoop: Product types, leveranciers, inkooporder types, templates
  • Kosten: Kostenposten beheer (nieuw) - Maak, bewerk en verwijder kostenposten met BTW-instellingen
  • Notificaties: Push notificaties beheer en Sync Logs retention instellingen
  • Voorraad Locaties: Beheer voorraad locaties en synchroniseer met Shopify

Kosten Sectie

De nieuwe "Kosten" sectie in instellingen bevat:

  • Kostenposten Beheer:
    • Tabel met alle kostenposten (code, naam, type, BTW tarief, BTW incl./excl., actief, aantal gekoppelde kosten)
    • Nieuwe kostenpost aanmaken met code, naam, type, BTW-instellingen
    • Bewerken en verwijderen van kostenposten (alleen als geen kosten gekoppeld)
    • Validatie: code moet uniek zijn per organisatie
    • Hiërarchie-ondersteuning: kostenposten kunnen worden gegroepeerd via parent accounts

Bol.com Status Mapping

Configureer hoe Bol.com statussen worden weergegeven in de UI:

  • Status Mapping: Map Bol.com statussen (CANCELLED, ACCEPTED, etc.) naar UI teksten
  • Handled Mapping: Map Bol.com handled status (true/false) naar UI teksten

Deze mappings worden gebruikt op de retouren pagina's om duidelijk te maken wat de status betekent.

De "Vernieuwen" Knop

De "Vernieuwen" knop komt voor op verschillende pagina's en synchroniseert eerst data met externe platforms (Shopify, Bol.com) en herlaadt daarna de data van de huidige pagina uit de database.

Belangrijk

De "Vernieuwen" knop synchroniseert wel data met externe platforms (Shopify, Bol.com) voordat de data wordt herladen. Dit zorgt ervoor dat je altijd de meest actuele data ziet. Het systeem voorkomt dubbele kliks en toont een loading indicator tijdens het synchroniseren.

Wat doet de knop per pagina?

Dashboard (`/`)

Synchroniseer: Orders en producten van Shopify en Bol.com

Herlaad: Dashboard statistieken en grafieken uit de database

  • Order statistieken (totaal, omzet, gemiddelde)
  • Product statistieken
  • Voorraad statistieken
  • Maandelijkse omzet grafiek
  • Voorraad historie grafiek
  • Totaal verkochte items

Duur: ~30-60 seconden (afhankelijk van hoeveel nieuwe data er is)

Orders (`/orders`)

Synchroniseer: Orders van Shopify en Bol.com

Herlaad: Orders overzicht uit de database

  • Alle orders met huidige filters toegepast
  • Order details (klant, producten, status, tracking)

Duur: ~30-60 seconden

Orders Beheer (`/orders/manage`)

Synchroniseer: Orders van Shopify en Bol.com

Herlaad: Orders overzicht uit de database

  • Alle orders met factuuraanvraag status
  • Order details en factuur informatie

Duur: ~30-60 seconden

Retouren (`/returns`)

Synchroniseer: Orders van Shopify en Bol.com (retouren worden niet automatisch geïmporteerd)

Herlaad: Retouren overzicht uit de database

  • Alle retouren met huidige filters toegepast
  • Retour details (status, producten, terugbetaling, tracking)

Duur: ~30-60 seconden

Belangrijk

Retouren worden niet automatisch gesynchroniseerd vanuit externe platforms. Gebruik het import script (`pnpm import:bol-returns`) om retouren handmatig te importeren.

Voorraad (`/inventory`)

Herlaad: Voorraad overzicht uit de database

  • Alle product varianten met voorraadniveaus
  • Locatie informatie
  • Voorraad waarde berekeningen

Duur: ~1-3 seconden

Voorraad Correcties (`/inventory/correcties`)

Herlaad: Voorraad correcties overzicht uit de database

  • Alle handmatige voorraad aanpassingen
  • Correctie details (datum, SKU, aanpassing, reden, notitie)

Duur: ~1-3 seconden

Voorraad Mutaties Log (`/inventory/log`)

Synchroniseer: Orders van Shopify en Bol.com (om ontbrekende mutaties te detecteren)

Herlaad: Voorraad mutaties log uit de database

  • Alle voorraad transacties (inkoop, verkoop, retouren, correcties)
  • Transactie details en historie

Duur: ~30-60 seconden

Ontbrekende Mutaties

Als er mutaties ontbreken voor fulfilled orders, kun je deze aanmaken via de "Ontbrekende Aanmaken" knop. Dit controleert alle fulfilled orders en creëert ontbrekende transacties.

Producten (`/products/manage`)

Synchroniseer: Producten van Shopify en Bol.com

Herlaad: Producten overzicht uit de database

  • Alle producten met prijzen en voorraad
  • Product details (SKU, EAN, titel, prijzen)

Duur: ~30-60 seconden

Hoe synchroniseer ik data met externe platforms?

De "Vernieuwen" knop synchroniseert automatisch data met externe platforms. Je kunt ook handmatig synchroniseren:

Via API Endpoints

  • Alle data sync: POST /api/sync/all - Synchroniseert orders en producten van beide platforms
  • Shopify sync: POST /api/sync/shopify - Synchroniseert alleen Shopify data
  • Bol.com sync: POST /api/sync/bol - Synchroniseert alleen Bol.com data

Duur: ~30-60 seconden (afhankelijk van hoeveel nieuwe data er is)

Via Scripts

  • Bol.com retouren: pnpm import:bol-returns - Importeert retouren van Bol.com
  • Backfill scripts: Zie technische documentatie voor volledige backfill opties

Tip

De "Vernieuwen" knop synchroniseert automatisch data met externe platforms voordat de pagina data wordt herladen. Dit zorgt ervoor dat je altijd de meest actuele data ziet.

Wanneer gebruik je "Vernieuwen"?

✅ Gebruik wanneer:

  • Je nieuwe orders of producten wilt ophalen van externe platforms
  • Je de data op de huidige pagina wilt verversen met de nieuwste informatie
  • Je wijzigingen hebt gemaakt en deze wilt zien
  • Je vermoedt dat de data niet up-to-date is
  • Je na een handmatige sync de data wilt verversen

❌ Gebruik NIET wanneer:

  • Je alleen voorraad wilt updaten (gebruik inkooporders/retouren)
  • Je alleen retouren wilt ophalen (gebruik specifiek import script)
  • Je alleen database data wilt herladen zonder sync (gebruik F5)

Dubbele Klik Preventie

Het systeem voorkomt dubbele kliks op de "Vernieuwen" knop. Als de knop al bezig is met synchroniseren, wordt een nieuwe klik genegeerd.

Changelog

Hieronder vind je een overzicht van alle wijzigingen en nieuwe features.

2025-12-02

Gefixt:

  • PostNL Tracking Service op Live: Verbeterde logging en diagnostiek voor PostNL tracking service. Service werkt correct op live server en detecteert pickup point status zoals verwacht. Test scripts toegevoegd voor verificatie van Puppeteer functionaliteit.

Toegevoegd:

  • PostNL Pickup Point Detectie: Het systeem detecteert nu automatisch wanneer een pakket klaar ligt bij een PostNL-punt. De status wordt getoond als "Pakket ligt klaar bij PostNL tot DD-MM-YYYY" met de ophaaldatum.
  • Dynamische Labels voor Tracking Status: Wanneer een pakket klaar ligt bij een PostNL-punt, wordt het label "Bezorgdatum" automatisch aangepast naar "Ophaaldatum" op alle order pagina's. Dit maakt het duidelijk dat het pakket opgehaald moet worden in plaats van bezorgd.
  • Handmatige Invoer Verbeteringen: Wanneer automatische tracking faalt, worden de handmatige invoer velden nu visueel gemarkeerd met een gele border en achtergrond. Het systeem focust automatisch op het status veld voor snellere invoer.

Verbeterd:

  • PostNL Tracking Service: Verbeterde detectie van pickup point status met prioriteit check voor "Pakket ligt klaar bij PostNL-punt" pattern. Betere datum extractie en formatting voor ophaaldatums. Verbeterde error handling en logging voor diagnose van tracking problemen.
  • Frontend Tracking Status Weergave: Consistente implementatie van dynamische labels op alle order pagina's (edit, admin, manage, overzicht) voor betere gebruikerservaring.

2025-12-01

Gefixt:

  • Voorraad Hertelling voor Alle Locaties: De voorraad hertelling verwerkt nu alle actieve locaties in plaats van alleen "Hoofdmagazijn". Dit lost het probleem op waarbij "Voorraad Mitchel" niet werd herteld (242 eenheden verschil). Elke locatie wordt nu individueel verwerkt met eigen transacties.
  • Oude Orders Voorraad Deductie Preventie: Alle voorraad functies controleren nu of orders van vóór 2025-01-01 zijn en skippen deze automatisch. Dit voorkomt dat oude orders de voorraad verstoren. 231 incorrecte transacties zijn verwijderd en 1128 eenheden zijn teruggeboekt.
  • Inventory Log Zoekfunctie: De zoekfunctie in de mutaties log zoekt nu ook in reason en notes velden, waardoor orders vindbaar zijn via ordernummer.

Toegevoegd:

  • Check Scripts voor Oude Orders: Scripts om problematische transacties voor oude orders te detecteren en te fixen.
  • Commit Script: Snel commit script (commit-nu.sh) met automatische message generatie.

Verbeterd:

  • Voorraad Hertelling: Ondersteunt nu meerdere locaties simultaan met gedetailleerde resultaten per locatie.
  • Datumcheck Logica: Consistente implementatie in alle voorraad functies met duidelijke waarschuwingen.

2025-11-30

Toegevoegd:

  • Custom Date Range op Orders Manage Pagina: Je kunt nu een eigen datum range opgeven op de /orders/manage pagina. Selecteer "Custom Periode" in de periode dropdown en kies je start- en einddatum. Dit geeft je volledige controle over welke orders je wilt bekijken.
  • Vorig Jaar Filter op Alle Datum Filters: Alle datum filters hebben nu een "Vorig Jaar" optie toegevoegd. Dit toont alle data van het vorige kalenderjaar (1 januari t/m 31 december). Beschikbaar op: Orders pagina, Orders Manage pagina, Costs Impact pagina, en Dashboard. Handig voor jaar-op-jaar vergelijkingen en rapportages.
  • Sortering op Kolommen in Voorraad Overzicht: Je kunt nu op alle kolomheaders klikken in het voorraad overzicht om te sorteren. Klik opnieuw om de sorteerrichting te wisselen (oplopend/aflopend). Beschikbaar voor: SKU, Product, Locatie, Op Voorraad, Gereserveerd, Beschikbaar, Herbestelpunt, en Waarde. Een pijltje toont de actieve kolom en sorteerrichting.
  • Correcties Functionaliteit voor Inkooporders: Nieuw systeem om over- en onderlevering bij te houden. Voeg correcties toe bij status "ontvangen" of "ingeboekt" om verschillen tussen besteld en ontvangen aantal vast te leggen. Correcties worden automatisch meegenomen bij het inboeken van de voorraad.
  • Visuele Weergave Correcties per Productregel: Bij status "ontvangen" en "ingeboekt" worden correcties nu per productregel getoond met: Besteld aantal, Correctie (groen voor positief, rood voor negatief), en Ontvangen aantal.
  • Unsaved Changes Tracking & Waarschuwing: Systeem dat alle wijzigingen in formuliervelden trackt. Gewijzigde velden krijgen een gele border en achtergrond. Bij navigatie verschijnt een waarschuwing met opties om verder te bewerken of wijzigingen te verwerpen.
  • USD/EUR Wisselkoers Vastleggen bij Bestellen: Wanneer een inkooporder op status "besteld" wordt gezet, wordt de huidige USD/EUR wisselkoers automatisch vastgelegd en getoond in het Totalen blok.
  • Bedrijfsnaam Weergave Verbeterd: Bedrijfsnaam wordt nu correct opgehaald uit Bol.com API en weergegeven in orders. Als er een bedrijfsnaam is, wordt "Naam" automatisch veranderd naar "T.a.v."

Verbeterd:

  • Datum Filter Functionaliteit Uitgebreid: Alle datum filters ondersteunen nu: Vandaag, Deze Maand, Dit Jaar (YTD), Vorig Jaar, en Custom Periode. Backend ondersteunt nu ook correcte datum ranges met start- en einddatum voor betere filtering.
  • Voorraad Overzicht Verbeterd: Voorraad overzicht heeft nu klikbare kolomheaders met visuele indicatoren (pijltjes) voor de actieve sorteerrichting. Hover effect op kolomheaders voor betere gebruikerservaring. Sortering werkt op alle kolommen inclusief numerieke waarden (voorraad, waarde) en tekst (SKU, product naam).
  • Mobiele Weergave Inkooporder Regels: Volledig responsive met betere leesbaarheid op mobiel. Product informatie neemt volledige breedte in, input velden hebben grotere padding en tekst.
  • Orderregels Sortering Behouden: Orderregels behouden nu hun volgorde bij toevoegen of aanpassen via intern sortOrder veld.
  • Read-only Weergave voor Bestelde Orders: Wanneer een inkooporder op status "besteld", "verzonden", "ontvangen" of "ingeboekt" staat, worden de invoervelden vervangen door een compacte read-only weergave.
  • Bol.com API Company Name Extractie: Verbeterde extractie van bedrijfsnaam uit Bol.com API met correcte handling van string en object formats.

Gefixt:

  • Orders Import ID Probleem: Fix voor "Argument `id` is missing" error bij het importeren van orders via CSV. Orders krijgen nu automatisch een unieke ID toegewezen tijdens import.
  • Navigation Guard voor Unsaved Changes: De waarschuwing verschijnt nu bij alle navigatie pogingen (menu items, terug knop, browser back/forward) wanneer er unsaved changes zijn.
  • Bedrijfsnaam Ophalen uit Bol.com API: Company veld wordt nu correct geëxtraheerd als string en opgeslagen in customer data.
  • Inkooporder Inboeken Logica: Wanneer status verandert van "ingeboekt" naar een andere status, worden de mutaties verwijderd. Bij terugzetten wordt de order opnieuw ingeboekt met de huidige datum.
  • InboekDatum Update bij Herinboeken: De inboekDatum wordt nu bijgewerkt wanneer een inkooporder opnieuw wordt ingeboekt.

2025-11-28

Toegevoegd:

  • Klantgegevens Ophalen voor Shopify Orders: Knop op order edit pagina om klantgegevens op te halen voor bestaande Shopify orders. Gebruikt webhook logica om volledige customer data te verkrijgen (ook op Basic plan).

Verbeterd:

  • Customer Data Weergave: Frontend haalt nu customer data uit shipping/billing addresses als fallback. Email en telefoon worden nu ook getoond.
  • API URL Configuratie: Alle API calls gebruiken nu getApiUrl() voor betere server-side rendering support.

Gefixt:

  • Orders Page API Calls: Fix voor "Failed to fetch" errors op orders pagina.
  • Order Edit Page Error Handling: Betere error messages en retry functionaliteit toegevoegd.
  • Shopify Customer Data Opslag: Backend slaat nu firstName, lastName en email altijd op root niveau op.
  • formatCurrency Type Error: Fix voor "value.toFixed is not a function" error.

2025-11-27

Toegevoegd:

  • Shopify Webhook Integratie met HMAC Beveiliging: Shopify webhooks voor automatische order import met volledige klantgegevens. Webhooks worden nu beveiligd met HMAC verificatie.

Gefixt:

  • Orders Refresh Functionaliteit: Orders refresh knop werkt nu correct met credentials en sync status polling.
  • Shopify Order Import: Fix voor Shopify orders zonder volledige klantgegevens.

2025-11-25

Toegevoegd:

  • Inkooporder Kopiëren Functionaliteit: Mogelijkheid om inkooporders te kopiëren. De kopie krijgt automatisch status "open" en de omschrijving wordt voorzien van "Kopie - " prefix.
  • Sync Monitoring & Alerting Dashboard: Uitgebreid monitoring dashboard voor sync performance met automatische alerts voor hoge error rates, trage syncs en failed syncs.
  • Error Recovery & Dead Letter Queue: Failed syncs worden opgeslagen in een dead letter queue en kunnen handmatig worden geretryed.
  • Performance Metrics Tracking: Uitgebreide performance metrics tracking voor syncs met platform-specifieke en time-based metrics.
  • Geluidsbestand voor Push Notificaties: Push notificaties gebruiken nu een aangepast geluidsbestand (notification.mp3).
  • Sync Logs Beheer: Gebruikers kunnen nu zelf bepalen hoe lang sync logs bewaard blijven (1-365 dagen, standaard: 30 dagen).
  • Inboeken altijd naar Hoofdmagazijn: Bij het inboeken van nieuwe voorraad wordt de voorraad nu altijd geboekt naar "Hoofdmagazijn" locatie.
  • Filter op locatie in voorraad overzicht: Je kunt nu filteren op locatie in het voorraad overzicht.
  • Voorraad per locatie weergave: Je kunt nu per variant zien welke voorraad op welke locatie ligt.

Verbeterd:

  • Performance Optimalisaties: Image optimization configuratie toegevoegd (AVIF/WebP formats). Webpack code splitting geoptimaliseerd.
  • Sync Performance Verbeteringen: Caching strategie voor Shopify locations en inventory_item_ids (5 minuten TTL). Dynamische rate limiting.

Gefixt:

  • Voorraadafboeking: Altijd eerst van "Voorraad Mitchel": Bij het afboeken van voorraad voor orders wordt nu altijd eerst voorraad afgeboekt van "Voorraad Mitchel" locatie.
  • Voorkom Dubbele Voorraadafboeking: Orders worden niet meer dubbel afgeboekt wanneer de status verandert van processing naar fulfilled.
  • Herstel Dubbele Transacties op Live: Alle dubbele voorraadafboekingen op live zijn gecorrigeerd.

2025-11-24

Toegevoegd:

  • Voorraad Omboeken Tussen Locaties: Nieuwe functionaliteit om voorraad tussen locaties te verplaatsen. De omboeking wordt geregistreerd met twee transacties en de totale voorraad blijft hetzelfde.
  • Totale Voorraad Sync naar Platforms: De sync naar Shopify en Bol.com gebruikt nu de totale voorraad van alle locaties bij elkaar.
  • Zoeken op Varianten in Voorraad: Je kunt nu direct zoeken op variant SKUs in het zoekvenster op de voorraad pagina.
  • Sync Meldingen met Progress Indicator: Bij het starten van een voorraad sync zie je nu een duidelijke melding met real-time status.
  • "We zijn Live!" Banner op Homepage: De homepage heeft nu een feestelijke banner bovenaan die de operationele status toont.
  • Koppeling Voorraad Updates aan Mutaties: Elke voorraad update naar platforms is nu gekoppeld aan de voorraad mutatie die deze heeft getriggerd.
  • Uitgebreide Sync Logs met Voor/Na Waarden: Sync logs tonen nu per variant de voorraad waarden voor en na de update.
  • Check & Fix Voorraad Verschillen: Nieuwe "Check & Fix" knop toegevoegd aan de voorraadpagina.
  • Handmatige Voorraad Sync naar Platforms: Nieuwe knop "Sync naar Platforms" toegevoegd aan de voorraadpagina.

Verbeterd:

  • Verbeterde Locatie Beheer: Het systeem ondersteunt nu meerdere locaties voor intern gebruik.
  • Verbeterde Toegankelijkheid: Alle buttons en form elements hebben nu correcte title en aria-label attributen.
  • Asynchrone Sync Verwerking: Voorraad sync werkt nu volledig asynchroon.
  • Geoptimaliseerde Voorraad Pagina: Alle acties zijn nu gegroepeerd in een "Meer acties" dropdown menu.

Gefixt:

  • Berekende Voorraad voor Varianten Nu Correct: Kritieke bug opgelost waarbij varianten met een masterVariantId altijd 0 voorraad toonden.
  • Shopify URL Normalisatie Fix: Shopify sync heeft nu automatische URL normalisatie om dubbele .myshopify.com domeinen te voorkomen.
  • SSL Handshake Retry Logic: Retry logic toegevoegd voor SSL handshake failures bij het synchroniseren van voorraad.

2025-11-23

Toegevoegd:

  • Automatische Voorraad Sync naar Platforms: Voorraad wordt nu automatisch gesynchroniseerd naar Shopify en Bol.com kort na een order registratie.
  • Voorraad Verificatie Pagina: Nieuwe pagina `/inventory/verify` toegevoegd voor voorraad verificatie.
  • Automatische Voorraadreservering voor Alle Orders: Voorraadreservering wordt nu automatisch uitgevoerd voor alle orders die niet fulfilled zijn.
  • Virtuele Kosten in Berekeningen: Virtuele kosten (uit order.totals) worden nu correct meegenomen in alle berekeningen.
  • Filter om Virtuele Kosten te Verbergen: Nieuwe checkbox "Alleen echte kosten" toegevoegd aan de Kosten Mutaties Log pagina.

Gefixt:

  • LOST/LIM Retouren Correct Afhandelen: Retouren met bolHandlingResult "RETURN_ITEM_LOST" of "LIM" worden nu correct afgehandeld.
  • Automatische Voorraadafboeking bij Nieuwe Orders: Backfill scripts aangepast zodat voorraadreservering wordt uitgevoerd voor alle orders.
  • Kostenpost Filter Nu Volledig Werkend: Kostenpost filter werkt nu correct.
  • Dubbele Kosten Entries Voorkomen: Verbeterde logica om te voorkomen dat virtuele kosten dubbel worden getoond.

v1.2.0 (2025-01-11)

Toegevoegd:

  • Kostenbeheer & Kostenanalyse Systeem met volledige kosten tracking
  • Advertentiekosten per platform (Shopify, Bol.com, Google, Facebook) met campagne tracking
  • Bol.com CSV kosten import functionaliteit
  • Kosten Impact Analyse pagina met ROI/ROAS berekeningen
  • Responsive Design voor alle pagina's (desktop, tablet, mobiel)
  • Progressive Web App (PWA) functionaliteit met offline support
  • Automatische creatie van voorraadmutaties voor fulfilled orders
  • Ontbrekende mutaties aanmaken functionaliteit in Mutaties Log
  • Dubbele klik preventie voor alle refresh knoppen
  • Mobiel hamburger menu en touch-vriendelijke interface
  • Card-based layouts voor tabellen op mobiel

Verbeterd:

  • Vernieuwen knop synchroniseert nu automatisch met externe platforms voordat data wordt herladen
  • Voorraadmutaties worden automatisch aangemaakt wanneer orders fulfilled worden
  • Alle pagina's zijn nu volledig responsive
  • Service worker voor offline functionaliteit en snellere laadtijden
  • PWA installatie prompt en offline indicator

Gefixt:

  • Ontbrekende voorraadmutaties voor fulfilled orders worden nu automatisch aangemaakt
  • Refresh knoppen werken nu correct met dubbele klik preventie
  • AbortError in inventory log pagina opgelost
  • Mobiele navigatie en menu functionaliteit verbeterd

v1.1.0 (2025-01-09)

Toegevoegd:

  • Bol.com Status Mapping: Configureer hoe Bol.com statussen worden weergegeven in de UI
  • Bol.com Handled Mapping: Configureer hoe Bol.com handled status wordt weergegeven
  • Gebruikersdocumentatie pagina met uitleg over alle functies
  • Changelog en Roadmap secties in documentatie

Verbeterd:

  • Retouren edit pagina toont nu gemapte Bol.com statussen
  • Documentatie structuur: scheiding tussen gebruikers- en technische documentatie

v1.0.0 (2025-01-15)

Toegevoegd:

  • Multi-channel order management (Shopify, Bol.com)
  • Voorraadbeheer met master/child variant linking
  • Retourverwerking met Bol.com API import
  • Inkooporder workflow met automatische voorraad bijboeking
  • Product prijzen beheer en synchronisatie
  • Track & Trace integratie (PostNL)
  • Dashboard met voorraad historie grafieken
  • Bol.com OfferID beheer
  • Dollar koers en inkoopprijs berekening
  • Inkooporder templates
  • Supplier performance tracking

Verbeterd:

  • Error handling en user feedback
  • UI consistency tussen pagina's
  • Database backup systeem
  • Focus loss issues in input velden opgelost

Gefixt:

  • Focus loss issues in input velden
  • Prisma client regeneratie voor nieuwe velden
  • Inventory calculation voor varianten
  • Return refund berekening voor geannuleerde retouren

Roadmap

Hieronder vind je een overzicht van geplande features en verbeteringen.

Korte Termijn (Q1 2025)

  • Printen van verzendlabels
    • Labels van Bol.com (onderzoek voltooid - labels niet direct beschikbaar via API)
    • Eigen labels genereren
  • Retouren boeken voor varianten
    • Gedeeltelijke retouren (bijv. 2 van 4 rokken)
    • Flexibele inboeking per retourregel
  • Kostenbeheer Uitbreidingen
    • Shopify kosten automatische detectie
    • Recurring costs management UI
    • Kosten allocatie per order/product
    • Geavanceerde kosten rapportage
  • PWA Verbeteringen
    • Pull-to-refresh functionaliteit
    • Background sync voor orders
    • Push notificaties

Middellange Termijn (Q2 2025)

  • WooCommerce Integratie
    • Order synchronisatie
    • Product synchronisatie
    • Voorraad verificatie
  • Bulk Acties
    • Bulk order status wijzigingen
    • Bulk export functionaliteit
    • Bulk product updates
  • Geavanceerde Rapportage
    • Custom rapporten
    • Export naar Excel/PDF
    • Grafieken en visualisaties

Lange Termijn (Q3-Q4 2025)

  • Mobile App
    • iOS en Android apps
    • Offline functionaliteit
    • Push notificaties
  • AI Features
    • Voorspellende voorraad analyse
    • Automatische order prioritering
    • Anomalie detectie
  • Multi-tenant Support
    • Ondersteuning voor meerdere organisaties
    • Rol-gebaseerde toegang
    • Organisatie-specifieke instellingen

Feedback

Heb je suggesties voor nieuwe features of verbeteringen? Neem contact op via de instellingen pagina of maak een issue aan.

Veelgestelde Vragen

Hoe voeg ik een nieuw kanaal toe?

Ga naar /settings > "Channels" sectie en klik op "Nieuw Kanaal". Vul de benodigde credentials in voor het platform (Shopify, Bol.com, etc.).

Hoe werkt de variant linking?

Ga naar /products/ean-manager om varianten te koppelen aan master producten. Voorraad wordt automatisch doorgerekend: als een master product 8 rokken heeft en een variant 4 rokken per product, dan heeft die variant 2 stuks beschikbaar.

Kan ik voorraad handmatig aanpassen?

Ja, ga naar /inventory en gebruik de "Voorraad Aanpassen" functionaliteit. Voorraad wordt geboekt op master varianten en automatisch doorgerekend naar child varianten.

Hoe synchroniseer ik prijzen terug naar platforms?

Ga naar /products/manage, pas prijzen aan en klik op de synchronisatie knop voor het betreffende platform (Shopify of Bol.com).

Wat gebeurt er bij een database reset?

Maak altijd eerst een backup: pnpm db:backup. Backups worden automatisch gemaakt voor elke commit (pre-commit hook).

Kan ik custom return statussen gebruiken?

Ja, ga naar /settings > "Retour Statussen" en voeg custom statussen toe. Je kunt de volgorde aanpassen via drag & drop. Alleen "Ingeboekt" status triggert voorraad bijboeking.

Hoe werkt de voorraad hertelling?

Ga naar /inventory en klik op "Voorraad Hertellen". Dit herberekent voorraad op basis van alle transacties (inkopen, verkopen, retouren).

Hoe configureer ik Bol.com status mappings?

Ga naar /settings > "Retouren" > "Bol.com Status Mapping". Hier kun je configuren hoe Bol.com statussen worden weergegeven in de UI. Bijvoorbeeld: "CANCELLED" kan worden gemapt naar "Geannuleerd".