Wholesale webshop

Martijn
Deze blog helpt je bij het opzetten van een apart kanaal in je Vendure webshop voor wholesale (groothandel), waar je producten in bulk kunt kopen voor andere prijzen als je retail klanten. Alleen vooraf geconfigureerde klanten kunnen producten kopen via je groothandel webshop.

Functionaliteiten
- De groothandel site is een kopie van je retail site, waar producten en prijzen kunnen verschillen.
- Klanten kunnen zich registreren en inloggen op de wholesale site
- Wholesale klanten kunnen worden geïdentificeerd door ze in een klantengroep te plaatsen
- Je kunt sommige producten zo instellen dat ze alleen in bulk kunnen worden gekocht. Bijvoorbeeld alleen per 4 eenheden
- Groothandelsprijzen kunnen verschillen van uw consumentenprijzen
- Verzend- en betaalmethoden voor groothandel kunnen apart worden beheerd van je consumentenmethoden
Maak een nieuw Channel aan in Vendure
Deze handleiding gaat ervan uit dat je al een channel hebt met producten, collecties en verzendmethoden voor je retail klanten. Eerst maken we een nieuwe Channel die alle producten, collecties, verzendmethoden en betaalmethoden bevat voor je wholesale klanten.
Creëer een nieuw Channel via de admin interface
Wijs de gewenste producten van het retail channel toe aan het wholesale channel via de Vendure admin.
- Door dezelfde producten aan het wholesale channel toe te wijzen, kunnen de prijzen verschillen, maar worden de URL's, namen en beschrijvingen tussen de twee kanalen gedeeld.
Wijs alle voorraadlocaties toe aan het nieuwe wholesale channel (Instellingen > Stock Locations).
Wijs alle facets toe aan het nieuw aangemaakte channel. Je kunt dit doen via de admin interface door alle facets te selecteren en ze toe te wijzen aan je nieuwe kanaal.
In deze opzet zal het wholesale channel dezelfde collectie structuur hebben als de retail shop, dus wijzen we ook alle collecties toe aan het nieuwe wholesale channel. Dit kan ook worden gedaan via de Vendure admin
Wholesale storefront
Nu we een speciaal wholesale channel hebben, moeten we een storefront laten zien met producten en collecties van het nieuwe kanaal. Bij Pinelab gebruiken we Astro om onze storefronts te bouwen. Ons Astro-project heeft een .env-bestand dat onze storefront vertelt welke channel moet worden gebruikt in Vendure. We willen onze bestaande storefront code hergebruiken, maar data ophalen van een ander Vendure kanaal, dus veranderen we het channel token:
PUBLIC_VENDURE_HOST=https://vendure.io/shop-api
- PUBLIC_VENDURE_CHANNEL_TOKEN=retail-channel
+ PUBLIC_VENDURE_CHANNEL_TOKEN=wholesale-channel
Als we nu de storefront draaien, zien we producten en collecties van het wholesale channel!
Jouw implementatie kan verschillen, afhankelijk van welk frontend framework je gebruikt, maar het idee blijft hetzelfde.
SEO
De producten en collecties van je wholesale shop zullen dezelfde beschrijvingen hebben als die van je retail site, dus zoekmachines zullen dit zien als duplicate content. En dat is niet goed! Je moet voorkomen dat je wholesale shop wordt geïndexeerd. Dit kan door de canonical url's van elke pagina naar je particuliere website te verwijzen.
Bijvoorbeeld, op een productpagina van je wholesale site zet je: <link rel="canonical" href="https://my-retail-site.com/product/t-shirt" />
. Dit vertelt zoekmachines dat de originele versie van deze pagina te vinden is op https://my-retail-site.com/product/t-shirt
.
Alleen specifieke klanten toestaan op je wholesale site
Deze opzet staat alleen specifieke klanten toe om de wholesale shop te gebruiken. Daarvoor gebruiken we de functie Klantgroepen van Vendure: Alle geregistreerde klanten moeten aan een Customer Group worden toegevoegd, voordat ze de shop kunnen gebruiken.
Wholesale customer group
Maak in Vendure een klantengroep wholesale
aan. Klanten die aan deze groep worden toegevoegd, hebben toegang tot de wholesale shop.
Klanten moeten al geregistreerd zijn voordat je ze kan toevoegen aan een groep. Als ze nog niet bestaan, kun je een account voor ze aanmaken via de beheerdersinterface can Vendure.
Registratie en login
Mocht je het nog niet hebben ingesteld: je webshop storefront moet een mogelijkheid bieden om in te loggen en te registreren. In de Vendure documentatie is duidelijk uitgelegd hoe je dit kan doen..
Alleen toegang toestaan voor klanten in de groep Wholesale
Je kunt de Public Customer Groups Plugin gebruiken om er voor te zorgen dat je storefront kan zien in welke groep een ingelogde klant zich bevindt.
- Installeer de plugin
- Ga naar de groep
Wholesale
in Vendure, en selecteerisPublic
- n je storefront, kan je nu van een ingelogde klant zien of deze in de groep Wholesale zit, via het veld
activeCustomer.customerGroups
. - If not, you should redirect the user to the login page.
Nogmaals, dit verschilt afhankelijk van je storefront framework.
Nu je je storefront hebt beveiligd, moet je ook de isCustomerInGroupPaymentChecker
uit de Payment Extensions Plugin gebruiken om de API te beveiligen. Deze plugin zorgt er voor dat je alleen kan bestellen als de klant in een specifieke groep zit.
Alleen bulkaankopen toestaan
Een veelgebruikte toepassing voor de wholesale is om producten alleen in bulk te kunnen kopen, bijvoorbeeld een blik verf kan alleen per 4 worden gekocht, omdat ze in dozen van 4 stuks worden geleverd. Om dit mogelijk te maken, kun je de [Limited Products Plugin] (https://plugins.pinelab.studio/plugin/vendure-plugin-limited-products/) installeren:
- Installeer de plugin
- Ga naar het product dat je wilt beperken en zet 4 in het veld
Multiple of X per order
. Het product kan nu alleen worden gekocht in veelvouden van 4 - Het veld is beschikbaar in de shop API onder het veld
product.limitPurchasePerMultipleOf
. Je moet dit veld in je storefront gebruiken om het aantal dat je invoert te beperken tot veelvouden van 4. De backend van Vendure zal een foutmelding geven als je storefront bijvoorbeeld 5 aan je winkelwagen probeert toe te voegen.
BTW verleggen
Onze wholesale shop is gevestigd in Nederland en verkoopt aan andere bedrijven in de EU. In dit geval hoeven klanten buiten Nederland, maar binnen de EU geen belasting te betalen.
- Als er een geldig BTW-nummer is opgegeven en de klant buiten NL binnen de EU is gevestigd, moet er geen belasting worden toegevoegd aan de bestelling.
- We gebruiken hiervoor de TaxZoneStrategy:
- We maken een zone
EU Reverse Tax Charge
aan en voegen alle EU-landen toe behalve NL. - We maken belastingtarieven aan voor deze zone: Elk tarief heeft 0% BTW
- In onze TaxZoneStrategy geven we de zone
EU Reverse Tax Charge
terug als de bestelling in een van de EU-landen is en het BTW-ID is ingevuld door de klant. - Hierdoor past Vendure 0% BTW toe op de bestelling.
- We maken een zone
- Als je de Facturen Plugin gebruikt, moet je op je factuur vermelden dat er geen belasting wordt berekend. Iets in de trant van "Belastingvrij onder intracommunautaire levering." moet op je factuur staan.
Betalen op factuurbasis
Het is gebruikelijk voor groothandels om hun klanten een bestelling te laten kopen en deze op een later tijdstip te laten betalen via een factuur. Een schooldocent bestelt bijvoorbeeld kunstbenodigdheden en overhandigt de factuur aan een leidinggevende om betaald te worden. In dit geval moet de bestelling worden geplaatst in Vendure, maar wordt deze later pas echt betaalt.
We kunnen hiervoor een speciale betaalmethode maken:
- Maak een Payment Eligibility Checker die controleert of de ingelogde klant in de Wholesale groep zit.
- Maak een Payment Handler met de naam
Op factuurbasis betalen
, die een bestelling altijd in de statusSettled
zet. - Maak een betaalmethode aan in de Vendure admin UI, met de bovengenoemde checker en handler.
In je storefront kun je de volgende flow gebruiken:
- Wanneer een klant in de groep Wholesale zit, verschijnt de methode
Op factuurbasis betalen
. - Wanneer een klant deze methode selecteert, moet de storefront de addPaymentToOrder mutatie aanroepen met de methode
Op factuurbasis betalen
, en zal de bestelling opSettled
worden gezet in Vendure.
Houd er rekening mee dat als je transacties naar een extern boekhoudplatform pusht, je misschien een beokregel moet aanmaken als factuur verzonden
in plaats van factuur betaald
, om bij te houden welke facturen nog open staan.
Heb je hulp nodig bijhet opzetten van een wholesale shop? Neem vooral contact met ons op!