Prijzen en klantafspraken
Assortiment per klant: iedere klant ziet alleen wat hij mag bestellen
Welke artikelen een klant mag bestellen, volgt uit je ERP: de webshopvlag, de artikelgroep, de prijslijst en het contract. Wij bouwen de koppeling die daar per debiteur een assortiment van maakt in je webshop, met de prijs erbij, zodat een klant niets bestelt wat de binnendienst daarna moet annuleren.
4.800.000 keer zichtbaar of niet
Een B2B-afspraak gaat over prijs en over wat een klant mag bestellen. Een keten koopt het private label dat voor hem wordt gemaakt. Gasinstallatiemateriaal gaat alleen naar gecertificeerde installateurs. Een contractklant bestelt uit de 1.400 artikelen van zijn contract en verder niets. Een webshop die iedereen alles toont, krijgt orders die de binnendienst telefonisch moet terugdraaien.
Met vijftig klanten kent de binnendienst de uitzonderingen. In het voorbeeld van prijzen en klantafspraken zijn het 800 debiteuren en 6.000 artikelen: 4.800.000 combinaties van klant en artikel, die elk zichtbaar zijn of niet. Geen ERP slaat die combinaties op. Het ERP bewaart de regels die ze bepalen, en de koppeling rekent daar per debiteur een assortiment uit.
De prijs zelf staat bij klantspecifieke prijzen. Deze pagina gaat over het assortiment, en over het bij elkaar houden van assortiment en prijs.
Hoe werkt het?
Waar het assortiment in het ERP staat
Een ERP heeft zelden een veld dat "assortiment per klant" heet. Het assortiment volgt uit andere velden. In Exact Online:
| Bron | Veld | Voorbeeld | Gevolg |
|---|---|---|---|
| Webshopvlag | IsWebshopItem op het artikel |
5.200 van de 6.000 | de buitengrens voor elke klant |
| Beperking | FreeBoolField_01, "alleen gecertificeerd" |
180 artikelen | alleen voor debiteuren met een certificaat |
| Artikelgroep | ItemGroupCode PL-BAKKER |
200 artikelen | alleen voor debiteur 10432 |
| Prijslijst | SalesPriceListLinkedAccounts |
contract van debiteur 10518 | de artikelen in die lijst en niets anders |
Een veld dat erop lijkt maar iets anders doet: een artikelassortiment in Exact Online (ItemAssortment) is volgens de documentatie een indeling voor filters en rapporten. Het zegt niets over welke klant een artikel mag zien.
Voor debiteur 10432 geeft dat 5.200 min 380 beperkte artikelen is 4.820 standaardartikelen, plus 180 gecertificeerde en 200 private label: 5.200 artikelen. Debiteur 10518 ziet er 1.400.
Hoe het in de webshop terechtkomt
In Shopify B2B bestaat een catalogus uit twee delen: een publicatie met de producten en een prijslijst. De catalogus hangt aan een of meer bedrijfslocaties. De koppeling bouwt catalogi per regel, niet per klant:
1 standaardcatalogus 4.820 producten
1 catalogus gecertificeerd 180 producten
1 catalogus private label Bakker 200 producten
12 contractcatalogi, gemiddeld 1.400 producten
15 catalogi in totaal
Debiteur 10432 heeft er drie. Op een bedrijfslocatie passen er 25, in een winkel op Plus 10.000.
Doorvoer
Producten gaan in een publicatie met publicationUpdate, maximaal 50 per aanroep. De eerste vulling:
| Catalogus | Som | Aanroepen |
|---|---|---|
| Standaard | 4.820 gedeeld door 50, naar boven afgerond | 97 |
| Gecertificeerd | 180 gedeeld door 50 | 4 |
| Private label Bakker | 200 gedeeld door 50 | 4 |
| 12 contracten | 12 maal 1.400 is 16.800, gedeeld door 50 | 336 |
| Totaal | 441 |
Dat gebeurt één keer. Daarna gaan alleen wijzigingen mee: 35 nieuwe standaardartikelen op een dag is 1 aanroep. Een catalogus per debiteur zou voor 800 debiteuren met elk 4.820 artikelen 800 maal 97 is 77.600 aanroepen kosten, en evenveel bij elke wijziging in het standaardassortiment. Daarom per regel.
Wat er stil misgaat
| Wat er gebeurt | Voorbeeld | Gevolg |
|---|---|---|
| Nieuw product voor iedereen | een publicatie met autoPublish aan |
het private-label-artikel van maandag staat maandag in elke catalogus |
| Assortiment en prijs lopen uit elkaar | artikel in de contractprijslijst, niet in de publicatie | de klant heeft een prijs voor een product dat hij niet vindt |
| Contract verlopen | einddatum 31-12, geen wijziging in het ERP op 1-1 | 1.400 artikelen blijven bestelbaar tegen de oude prijs |
| Oude catalogus blijft hangen | debiteur gaat van Installateurs naar Groothandel | twee catalogi, de webshop toont de laagste prijs |
| Debiteur niet gevonden | filter op Code eq '10432' |
geen resultaat, de klant ziet alleen het standaardassortiment |
De laatste rij is een eigenschap van Exact Online. Code in SalesPriceListLinkedAccounts is een numerieke tekst van vaste lengte, 18 tekens met spaties ervoor. Een filter moet die spaties meesturen:
GET /api/v1/{division}/sales/SalesPriceListLinkedAccounts?$filter=Code eq ' 10432'
Een filter zonder de 13 spaties vindt niets en geeft geen foutmelding. De koppeling werkt daarom met de ID van de debiteur en gebruikt het nummer alleen voor weergave.
Bij een verlopen contract gebeurt in het ERP op 1 januari niets, dus er komt geen wijziging binnen. De koppeling beoordeelt begin- en einddatums zelf, elke nacht. Een toewijzing van een catalogus wordt vervangen en niet aangevuld, zodat een klant die van groep wisselt niet beide houdt.
Wat je ermee regelt
- Assortiment per debiteur. Uitgerekend uit webshopvlag, artikelgroepen, beperkingen en contracten in het ERP.
- Assortiment en prijs samen. Publicatie en prijslijst van elke catalogus in dezelfde run geschreven en daarna per artikel vergeleken.
- Toewijzing. Catalogi per bedrijf en per bedrijfslocatie, vervangen als de klant van groep wisselt.
- Datums. Contracten met een begin en een einde, elke nacht beoordeeld.
- Ordercontrole. Elke orderregel naast het assortiment van de debiteur gelegd voordat de order naar orders, klanten en verzending gaat.
Vooraf laat een dry run per debiteur zien welke artikelen erbij komen of verdwijnen. Staffels per klantgroep staan bij staffelprijzen.
Met welke systemen
| Systeem | Hoe het een assortiment per klant bewaart | Grens of bijzonderheid |
|---|---|---|
| Shopify | catalogus met publicatie en prijslijst, aan bedrijfslocaties | 3 actieve catalogi onder Plus; een catalogus direct aan een bedrijf hangen alleen op Plus; 25 per locatie |
| Adobe Commerce B2B | gedeelde catalogus met eigen prijzen, toegewezen aan bedrijven | één openbare gedeelde catalogus voor gasten; de catalogus regelt ook categorierechten |
| Exact Online | geen assortiment per klant; afgeleid uit IsWebshopItem, vrije velden, artikelgroep en prijslijst |
een klant hangt aan één prijslijst tegelijk |
| NetSuite | prijsniveau, groepsprijzen en artikelprijzen op de klant | tot 1.000 prijsniveaus; het niveau staat op de klant, niet op een adres |
| AFAS | wat de beheerder in een GetConnector zet | zonder take komen de eerste 100 regels terug |
Op Basic, Grow en Advanced zijn er dus 3 catalogi en geen toewijzing per bedrijf: genoeg voor drie assortimenten per markt, niet voor 12 contracten. De grenzen staan in het helpcentrum van Shopify over catalogi en de handleiding van Adobe over gedeelde catalogi, nagelezen op 3 oktober 2026. Voor publicaties via de API van Shopify is de toegang write_publications nodig, naast de toegang tot producten.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen en koppelplatformen behandelen assortiment als de omvang van de catalogus: hoeveel artikelen er naar de webshop gaan. Zichtbaarheid per klant komt in hun eigen beschrijvingen niet voor. Waar een koppelplatform catalogi per klant wel ondersteunt, is dat één combinatie van ERP en webshop, als apart sjabloon: het prijsniveau staat voor de catalogus, en het vraagt Shopify Plus.
Een assortiment dat niet het prijsniveau volgt, past niet in dat model: een beperkte artikelgroep, een contract met een eigen artikellijst, een private label voor één klant. In een koppeling die voor jouw afspraken is gebouwd, komt het assortiment uit de velden waar het in je ERP al staat. Stuur de artikellijst van één klant met uitzonderingen, dan hoor je welke velden zijn assortiment bepalen.
Veelgestelde vragen
Wat ziet een klant die niet is ingelogd?
Het standaardassortiment, of een selectie daarvan, met de basisprijs of zonder prijs. Beperkte artikelen en contractartikelen zijn pas zichtbaar als de webshop weet welke debiteur er inlogt. In Adobe Commerce B2B is dat de openbare gedeelde catalogus, in Shopify het assortiment van de online winkel zelf.
Kan één klant meerdere assortimenten hebben?
Ja. Debiteur 10432 heeft er drie: het standaardassortiment, de artikelen voor gecertificeerde installateurs en zijn private label. In Shopify zijn dat drie catalogi op één bedrijfslocatie, waar er 25 op passen. De klant ziet de optelsom, 5.200 artikelen.
Hoe snel is een nieuw product zichtbaar voor de juiste klanten?
In de eerstvolgende ronde die wijzigingen ophaalt, bijvoorbeeld elk kwartier. Een nieuw artikel in de groep private label van Bakker komt alleen in die ene catalogus. Een nieuw standaardartikel gaat in de standaardcatalogus: 1 aanroep voor maximaal 50 artikelen.
Wat gebeurt er als een klant een artikel bestelt dat niet meer in zijn contract staat?
Een herhaalorder kan een artikel bevatten dat sinds de vorige keer uit het contract is gegaan. De koppeling legt elke orderregel naast het assortiment van de debiteur voordat de order naar het ERP gaat. Een regel die er niet in past, zet de order op de controlelijst in plaats van hem stil door te zetten.
Werkt het assortiment per klant ook in een OCI-sessie?
Ja. De inkoper komt vanuit zijn inkoopsysteem binnen op het account van zijn bedrijf en ziet het assortiment van die debiteur, met dezelfde prijzen als na een gewone login. Hoe de sessie verloopt staat bij OCI en PunchOut.
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