Naar de inhoud
SyncMyShop

Branches

Koppelingen voor groothandel en distributie: je webshop draait mee in je bedrijfsproces

Een groothandel verkoopt duizenden artikelen tegen afspraken per klant, uit meerdere magazijnen en in andere eenheden dan hij inkoopt. De koppeling haalt die afspraken, voorraden en eenheden uit je ERP en productdatabank en zet de order van je klant zonder overtypen terug in het ERP.

Herkenbaar?

Vijf dingen komen bij bijna elke groothandel terug.

  • Duizenden artikelen. Een assortiment van 12.000 artikelen in 3 magazijnen is 36.000 voorraadregels. Een koppeling die die regels één voor één ophaalt, is na een volle ronde alweer achter.
  • Prijsafspraken per klant. Een klant ziet een netto prijs die uit een prijslijst, een korting en een staffel komt. Een standaardkoppeling neemt vaak alleen de prijs per klantgroep mee, waardoor de afspraak met één debiteur niet in de webshop staat.
  • Een ERP dat al jaren draait. Exact, AFAS, Business Central of een pakket voor de branche. Het ERP blijft de bron; de webshop moet zich daarnaar voegen.
  • Andere eenheden dan per stuk. Kabel per haspel met een prijs per 1.000 meter, schroeven per doos van 250 met een prijs per 100 stuks.
  • Klanten met een eigen inkoopsysteem. Grotere afnemers bestellen niet via je winkelmandje maar vanuit hun eigen systeem, met goedkeuring vooraf.

Elk van die punten is een datastroom met een eigen bron en een eigen limiet. Hieronder per stroom wat er over de lijn gaat en waar het vastloopt.

Wat groothandels het vaakst koppelen

Datastromen bij een groothandel met een B2B-webshop Het ERP levert prijsafspraken per debiteur en voorraad per magazijn aan de koppeling, de productdatabank levert kenmerken, GTIN en eenheden. De koppeling zet netto prijzen, staffels en besteleenheden in de webshop en schrijft orders met debiteurnummer terug naar het ERP. Het inkoopsysteem van de klant opent de webshop via OCI en krijgt het winkelmandje terug. ERP Exact, AFAS of Business Central Koppeling wachtrij en mapping Productdata 2BA, EZ-base of leverancier B2B-webshop ingelogde klant Inkoopsysteem van de klant prijsafspraak per debiteur, voorraad per magazijn verkooporder op debiteurnummer ETIM-kenmerken, GTIN, eenheden netto prijs, staffel, besteleenheid OCI: winkelmand terug Een artikel uit de productdata zonder match op GTIN of leveranciersartikelnummer komt niet in de webshop maar op de controlelijst.
Vier bronnen, één webshop. Elk gegeven heeft één systeem dat leidend is.
Stroom Bron Wat er overgaat Verdieping
Prijzen en klantafspraken ERP prijslijst, korting, staffel per debiteur prijzen
Voorraad en levertijd ERP of WMS voorraad per magazijn, verwachte leverdatum voorraad
Productdata 2BA, EZ-base, PIM of leverancier kenmerken, GTIN, eenheden, afbeeldingen productdata
Orders en klanten webshop naar ERP verkooporder, debiteurnummer, afleveradres orders
Inkoop door de klant inkoopsysteem van de klant winkelmandje via OCI, order via cXML of e-mail OCI en PunchOut

Klantprijzen en staffels

In Exact Online staat een prijsafspraak in SalesItemPrices. Met een debiteur in het veld Account is het een afspraak voor die klant, het veld Quantity is de minimale afname waarvoor de prijs geldt en StartDate en EndDate begrenzen de looptijd. Een debiteur hangt aan één prijslijst tegelijk. In AFAS komt de prijs uit de GetConnector Profit_SalesPrice, te filteren op Debtor, Date en Volume, met de velden GrossPrice, Discount en Nettoprijs. De standaard API v2.0 van Business Central heeft geen resource voor prijslijsten; daar is een eigen API-pagina nodig. Hoe de lagen op elkaar stapelen staat op klantspecifieke prijzen.

Een rekenvoorbeeld met Exact Online. 250 debiteuren met gemiddeld 40 afspraken zijn 10.000 regels. Het gewone endpoint geeft 60 regels per verzoek: 10.000 / 60 = 166,7, dus 167 verzoeken, bij 60 verzoeken per minuut bijna 3 minuten en 3,3% van het dagbudget van 5.000. Het bulk-endpoint geeft 1.000 regels per verzoek: 10 verzoeken. Daarna haalt de koppeling via het sync-endpoint alleen de regels op die sinds de vorige ronde zijn gewijzigd.

Voorraad per magazijn en reserveren bij goedkeuring

Exact Online geeft voorraad per regel in sync/Inventory/StockPositions, met CurrentStock, ReservedStock, PlanningIn en Warehouse. De 36.000 regels uit het voorbeeld hierboven zijn bij 1.000 per verzoek 36 verzoeken voor de eerste ronde. Business Central geeft in de standaard API één getal per artikel (item.inventory); voorraad per locatie vraagt een eigen API-pagina. Welke magazijnen meetellen leg je per magazijn vast, zie meerdere magazijnen.

Een order van een dealer per pallet gaat vaak eerst langs een verkoper. De koppeling claimt de voorraad dan pas als de order is goedgekeurd, zodat een order die nog wordt besproken geen voorraad vasthoudt die een andere klant had kunnen kopen. Zie reserveren bij goedkeuring.

Orders op rekening

Een B2B-order gaat op rekening en komt in het ERP op het debiteurnummer, niet op een e-mailadres. Bij Exact Online is OrderedBy verplicht in SalesOrders, bij AFAS is het DbId in FbSales. Een debiteurcode in Exact is een tekst van 18 posities met voorloopspaties; een filter zonder die spaties vindt de klant niet. Kredietlimiet en betaaltermijn komen uit het ERP, zie bestellen op rekening.

Systemen in de groothandel

Systeem Hoe het data vrijgeeft Waar het op let
Exact Online REST API, OAuth 60 verzoeken per minuut en 5.000 per dag per administratie; voorraad en orders vragen het pakket Wholesale & Distribution of Manufacturing
AFAS Profit GetConnectors en UpdateConnectors zonder take komen de eerste 100 regels terug; de AFAS-beheerder zet de GetConnector klaar
Business Central API v2.0 en OData 6.000 verzoeken per 5 minuten per gebruiker; geen prijslijsten of voorraad per locatie in de standaard API
SAP Business One Service Layer (OData) sessie verloopt na 30 minuten zonder verzoek; standaard 20 records per pagina

Daarnaast draaien groothandels op Exact Globe, Unit4, Kerridge en Prodin. Voor de webshop zijn dat dezelfde vragen: welke tabellen geeft het pakket vrij, via welke weg, en hoeveel verzoeken mag de koppeling doen. Het overzicht per ERP staat op ERP koppelen aan je webshop.

Aan de webshopkant gelden eigen grenzen. Shopify heeft B2B op Basic, Grow, Advanced en Plus, maar onder Plus zijn er 3 actieve catalogi. Op Plus zijn het er 10.000 per winkel en 25 per bedrijfslocatie. Een groothandel met een prijsafspraak per debiteur komt met 3 catalogi niet uit; de koppeling rekent dan de netto prijs uit en zet die per klant klaar.

Standaarden die een groothandel tegenkomt

Standaard Waarvoor Wat het voor de koppeling betekent
GTIN (GS1) identificatie per verpakking opslaan als tekst van 14 posities, links aangevuld met nullen
ETIM technische kenmerken per productklasse kenmerken als filterbare attributen, zie wat is ETIM
OCI winkelmandje naar het inkoopsysteem van de klant vaste velden met een maximale lengte, eenheid als ISO-code
Peppol e-factuur naar overheid en grotere afnemers factuur in een vast formaat, zie wat is Peppol

In de technische groothandel komt de productdata vaak uit 2BA, de databank van de installatiebranche, die sinds 2004 artikelgegevens volgens ETIM uitwisselt. Een groothandel is daar afnemer en leverancier tegelijk: hij haalt de productgegevens van de fabrikant op en voegt zijn eigen handelsgegevens toe, zoals brutoprijs, verpakkingseenheid en GTIN. Meer over de bouw- en installatiekant staat op bouw en installatietechniek.

OCI staat bij AFAS op een lijst van 68 leveranciers die aan het inkoopsysteem van AFAS-gebruikers zijn gekoppeld; 12 daarvan staan als technische groothandel vermeld. In OCI heeft het veld UNIT 3 posities en PRICEUNIT 5. Een prijs per 100 stuks gaat dus als PRICE met PRICEUNIT 100, en niet als prijs per stuk met 4 decimalen.

Wat een groothandel anders maakt

Eenheden en verpakkingen

2BA beschrijft het probleem met een eenhedendriehoek: hoe je bestelt (minimum, stapgrootte, eenheid), wat de prijs is en hoeveel gebruikseenheden het artikel bevat. Twee voorbeelden uit die lijst, met een prijs als rekenvoorbeeld:

Artikel Verpakking Prijs geldt per Prijs in de webshop
Installatiekabel haspel van 500 meter 1.000 meter, € 412,00 0,5 x € 412,00 = € 206,00 per haspel
Schroeven doos van 250 100 stuks, € 3,60 2,5 x € 3,60 = € 9,00 per doos

Een webshop kent per variant één prijs voor één verkoopeenheid. De koppeling rekent de prijs om naar de eenheid waarin je verkoopt en zet het minimum en de stapgrootte als bestelregel, zodat een klant geen 300 schroeven kan bestellen als je per 250 levert. Elke verkoopbare verpakking heeft volgens 2BA een eigen GTIN en artikelcode; een doos en een pallet van hetzelfde product zijn twee artikelen. Zie eenheden en verpakkingen.

Prijzen met een ingangsdatum

Leveranciers verhogen hun prijzen vaak per 1 januari. 2BA laat een leverancier per artikel prijzen met een toekomstige ingangsdatum klaarzetten, en afnemers willen die volgens 2BA drie maanden vooraf. Bij 8.000 artikelen met een nieuwe prijs zijn dat 8.000 wijzigingen die op één dag ingaan. De koppeling zet ze vooraf klaar en activeert ze op de ingangsdatum, met een dry run waarin je per artikel de oude en de nieuwe prijs ziet.

Wat dit voor je koppeling betekent

Wij bouwen de koppeling op jouw ERP, jouw productdata en jouw webshop, met jouw regels voor prijzen, magazijnen en eenheden. Per gegeven ligt vast welk systeem leidend is. Daarna hosten en bewaken we hem: elke run heeft een log en een diff, en een order die het ERP weigert blijft in de wachtrij tot hij is opgelost.

Het overzicht van alle stromen staat op koppelingen, de andere branches op branches. Vertel welk ERP en welke webshop je gebruikt, dan hoor je welke van deze stromen bij jou het meeste werk schelen.

Veelgestelde vragen

Kunnen we ons huidige ERP houden?

Ja. De koppeling past zich aan het ERP aan, niet andersom. Wat telt is welke gegevens het ERP vrijgeeft: bij Exact Online de prijsafspraken in SalesItemPrices, bij AFAS wat de beheerder in een GetConnector zet, bij Business Central wat de standaard API v2.0 heeft of een eigen API-pagina. Ontbreekt een veld in de API, dan komt het uit een export die de koppeling op een vaste tijd inleest.

Ziet elke klant zijn eigen prijzen en assortiment?

Ja, na inloggen. De koppeling haalt per debiteur de prijsafspraken, de prijslijst en de staffels uit het ERP en rekent de netto prijs uit voordat hij in de webshop staat. Het assortiment per klant werkt op dezelfde manier: het ERP of een tabel in de koppeling bepaalt welke artikelen een debiteur ziet. Zie klantspecifieke prijzen.

Kan een klant bestellen vanuit zijn eigen inkoopsysteem?

Ja, met OCI. Het inkoopsysteem van je klant opent je webshop met zijn eigen inloggegevens, de inkoper vult een winkelmandje en dat gaat als formulier terug naar het inkoopsysteem. Daar wordt het goedgekeurd en komt het als order bij jou. Hoe de velden en eenheden overgaan staat op OCI en PunchOut.

Hoe komen prijswijzigingen van leveranciers in de webshop?

Via je ERP of rechtstreeks uit de productdatabank. 2BA laat leveranciers een prijs met een ingangsdatum in de toekomst klaarzetten, en afnemers willen nieuwe prijzen volgens 2BA drie maanden vooraf hebben. De koppeling neemt zo'n toekomstprijs op met de datum en zet hem op die datum actief, zodat er niet op 1 januari om 00:00 iemand handmatig prijzen hoeft te wijzigen.

Wat gebeurt er met een order als het ERP niet bereikbaar is?

De order blijft in de wachtrij van de koppeling staan en de webshop blijft orders aannemen. Zodra het ERP weer antwoordt, gaan de orders op volgorde door. Een order die na meerdere pogingen nog wordt geweigerd, bijvoorbeeld omdat de debiteur geblokkeerd is, staat met de foutmelding in het dashboard en verdwijnt niet.

Werkt dit ook met meerdere magazijnen en vestigingen?

Ja. De koppeling haalt de voorraad per magazijn op en telt alleen de magazijnen mee die voor de webshop mogen leveren. Exact Online geeft per regel in StockPositions het veld Warehouse, AFAS geeft StockActual en StockEconomic per magazijn en locatie. Zie meerdere magazijnen.

Vertel wat je nodig hebt

Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.

  • Je weet de prijs en de doorlooptijd voordat je iets toezegt
  • Wij zoeken uit welke koppeling het werk uit handen neemt
  • Wij verzorgen de bouw, hosting, bewaking en het onderhoud
  • Je team krijgt minder overtypwerk en minder uitzoekwerk

Leveranciers, producten, orders per dag, een ruwe schatting is prima.

Of mail direct: carsten@syncmyshop.com