Jump to content
kynoconcepts

Klantspecifieke verzendkosten en minimaal orderbedrag

Recommended Posts

Hoi allen,

 

Ik heb een webshop neergezet, www.dandydog.nl en die draait momenteel redelijk stabiel (V 1.4.6.2)

Upgraden durf ik niet ;-)

 

MAAR het volgende:

Ik heb een klant die met korting kan kopen, alleen met

* een aangepast minimum franco bestelbedrag

* aangepaste verzendkosten

 

Is dat (eenvoudig) te realiseren?

 

Hoop van wel

Groet

Maaike

Share this post


Link to post
Share on other sites

Hoi Maaike,

 

niet helemaal eenvoudig, maar je kunt het volgende proberen:

 

Vooraf: Het beste is om onderstaande oplossing op een test-shop uit te proberen, daar we wat moeten rommelen met de Originele Prestashop bestanden. Weet echter niet of je een test-site hebt. Anders gewoon doorlezen. Ik heb dan wat opmerkingen hier en daar opgenomen voor als je op de "live" site werkt. Is echter aan te raden om een test-site aan te maken op bijvoorbeeld een subdomain, bijvoorbeeld: testshop.mydomain.com

Daar gaan we dan:

 

Maak een nieuwe 'customer group' aan (Sorry, Engelse versie alleen beschikbaar, dus menu's in het Engels genoemd):

Customers->groups, "add new"

vul de group gegevens in en save. (Je kunt hier ook een vast korting over de hele catalogus geven als je wilt voor deze group)

N.B. Kijk meteen even welk ID de nieuwe group heeft gekregen (2 of zo). Even goed onthouden voor later in het verhaal.

 

 

Link de speciale customer aan deze group:

Customers: Edit gewenste customer, selecteer nieuwe group als default group en selecteer alleen deze group door checkbox voor deze group aan te vinken. De andere group(en) ont-vinken

 

Maak meteen even een test-customer aan die je daarna ook aan deze nieuwe group koppelt. Zodat we de aanpassingen later kunnen testen.

 

Vervolgens moet je een nieuwe "carrier" (vervoerder) aanmaken, waarbij je deze alleen voor de nieuwe group beschikbaar maakt:

Shipping-> Carrier:

Kijk even goed naar de waarden van je huidige carrier, zodat je de meeste waarden gewoon kunt kopieren van de huidige, wanneer we een nieuwe aanmaken. Click dan Add new:

Kopier de waarden van je huidige carrier, maar selecteer alleen de nieuw aangemaakte group, zodat deze carrier alleen voor customers van deze group beschikbaar wordt.

 

Maak je prijs/gewichts "ranges" voor de nieuwe carrier, waarin je de aangepaste verschepingswaarden invult.

 

Zover alles nog binnen het gewone "werken met/aanpassen van Prestashop".

 

Een probleem dat overblijft is je aparte minimum order waarde voor je nieuwe group. Dit kan nog niet in 1.4.(6.2) en daarom moeten we dit hard in de prestashop bestanden aanpassen:

 

Ga naar je host, open cPanel, open de file manager applicatie en ga naar je Prestashop installatiefolder.

Ga vervolgens naar folder

/controllers

en open de file :OrderOpcController.php (N.B. Maak eerst even een backup van het bestand. Je weet maar nooit... (Ook kun je dan snel je eventuele "live" site weer snel up en running brengen, door de aangepaste file te hernoemen en het origineel weer terug te zetten...))

 

Scroll naar beneden totdat je de benedenstaande code vindt. (om en nabij regel 382) (of vind de volgende tekst (met Ctrl-F in de browser) : Check minimal amount

 

 /* Check minimal amount */
 $currency = Currency::getCurrency((int)self::$cart->id_currency);

 $minimalPurchase = Tools::convertPrice((float)Configuration::get("PS_PURCHASE_MINIMUM"), $currency); //  <-- DEZE GAAN WE VERVANGEN!!

if (self::$cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimalPurchase)
return '<p class="warning">'.Tools::displayError('A minimum purchase total of').' '.Tools::displayPrice($minimalPurchase, $currency).
' '.Tools::displayError('is required in order to validate your order.').'</p>';

 

 

vervang did door:

 

 /* Check minimal amount */
 $currency = Currency::getCurrency((int)self::$cart->id_currency);


// Begin te vervangen + toe te voegen code

$customer = new Customer((int)(self::$cart->id_customer));
$customergroups = $customer->getGroups();

if ($customergroups[0]<> 2)   // <-- vervang '2' door jouw eigen group ID van toegevoegde group!! 
$minimalPurchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency);
else
$minimalPurchase = 50;   // <-minimum order bedrag voor aparte customer, zelf aanpassen

// einde van te vervangen+toe te voegen code

if (self::$cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimalPurchase)
return '<p class="warning">'.Tools::displayError('A minimum purchase total of').' '.Tools::displayPrice($minimalPurchase, $currency).
' '.Tools::displayError('is required in order to validate your order.').'</p>';

 

N.B. Niet vergeten zelf even de group ID en je minimum order waarde in te vullen/aan te passen.

 

BELANGRIJK: !!!! Save de code nog even NIET!

 

 

Check of als je inlogt als nieuw aangemaakte customer van de nieuwe group, je de nieuwe "kortingsprijzen" getoond ziet. Voeg vast wat producten aan je winkelwagentje toe.

 

 

Als je op je live-site werkt, dan komt het er nu op aan om even snel te zijn. Indien we een fout gemaakt hebben, dan ontstaat er een probleem op je site na het opslaan van het bestand. Het beste is om even je site op " bezig met onderhoud" te zetten, om geen klanten lastig te vallen met errors (wel met onbereikbaarheid van de site, maar dat is dan even zo. Wellicht nu even wachten tot onchristelijke tijden, waarin zo min mogelijk mensen je site bezoeken, of snel zijn. Eerst even alles hier beneden vast doorlezen dus):

 

Ga naar Preferences->Performance in Prestashop. Zet daar tijdelijk "Force Compile" op AAN en "Cache" op UIT. (N.B. Je site wordt hierdoor stukken trager, dus nadat alles goed gaat, niet vergeten weer de cache en force compile terug te zetten naar originele status!)

 

Vind eerst even je eigen IP adres: (ga naar http://www.whatismyip.com/ )

Ga dan naar Preferences:

Voeg je eigen IP address aan de "Maintenance IP" lijst toe.

Zet dan "Enable shop" op UIT. N.B. De shop is nu niet meer beschikbaar voor de klanten!

 

aangepast BESTAND nu pas OPSLAAN.

 

Kijk naar het totaal bedrag en check of het voldoende is om uit te checken (vergelijk met aangepaste minimum bedrag!). Zo niet, voeg nog wat producten toe totdat het minimum orderbedrag is bereikt.

 

Ga naar checkout order en kijk of je een error krijgt )of wit scherm of zo). Indien zo, dan hebben we een fout gemaakt in het bestand. Check nogmaals of je alles goed gekopieerd hebt. Indien alles goed lijkt, heb ik zelf wellicht een fout gemaakt. Dan originele bestand en shop herstellen en foutmelding even aan me doorgeven)

 

Als alles goed gaat, ga het checkout process door en kijk of je de aangepaste carrier kunt selecteren.

 

 

Probeer ook even goed of het checkout process stopt, op het moment dat het nieuwe minimum bedrag nog niet bereikt is.

Check tenslotte nog even door als customer in te loggen die NIET lid is van de nieuwe group en kijk of het checkout process verloopt zoals het eerst was. (Controleer speciaal even of prijzen normaal zijn en je de nieuwe carrier niet kunt selecteren.)

 

Indien alles goed ging, winkel weer openen, maintenance IP verwijderen (Preferences tab) en Force compile weer op NO zetten en Cache op YES (preferences->Performance) en kijken of het allemaal nog steeds werkt.

 

Een heel verhaal. Ik hoop dat je er zo uitkomt. Indien vragen/opmerkingen/fouten in mijn tekst of code, laat het me weten.

 

pascal.

Edited by PascalVG
Tekst opgeschoond, rare HTML er uit (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Ik zou graag deze aan een klantengroep willen hangen (zie bijlage)

Is dat makkelijk te doen of moet er veel aangepast worden aan de PHP code?

Edited by Hans Wolf (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More