Jump to content

[Solved] problemen met shippingkosten


Recommended Posts

Hoi Allemaal,

 

Ik wil in prestashop 1.4.6.2 de shippingkosten laten vallen vanaf een minimaal aankoopbedrag.

Voor België vanaf 100 euro

Voor Nederland vanaf 150 euro

 

Ik heb reeds 2 verschillende carriers aangemaakt voor België en Nederland

Ik heb in shipping -> priceranges de verschillende groepen aangemaakt en gelinkt aan de juiste carrier.

 

Wanneer ik in het hoofd-tablad "shipping" de optie "gratis verzending vanaf..." uitschakel door hier "0" te zetten houdt prestashop geen rekening met de verschillende minimale aankoopbedragen en zal hij ALTIJD transportkosten aanrekenen.

 

Wanneer ik in het hoofd-tablad "shipping" de optie "gratis verzending vanaf 100 euro" of "gratis verzending vanaf 150 euro" activeer houdt prestashop enkel rekening met het ingegeven bedrag. Wanneer ik 100 euro invul zal er ook voor Nederland vanaf 100 euro gratis verzonden worden.

 

Kennen jullie de oplossing voor dit probleem?

 

Thanks and greets ;)

Link to comment
Share on other sites

Dit heb ik ooit eens voor iemand uitgezocht. Maar nog niet compleet in een topic geplaatst, dus bij deze.

 

Wat je doet is eerst 2 extra zones aanmaken: eentje voor alleen Nederland en eentje voor alleen Belgie. Noteer de ID's van deze zones; dit zie je in de lijst met zones in de linkerkolom staan.

Daarna link je de juiste zone aan de juiste carrier (die je dus al aangemaakt hebt).

Je stelt dan 100 euro in als minimum orderbedrag voor gratis verzending in je Prestashop beheersysteem. Onderstaande code aanpassing zorgt ervoor dat dit alleen voor de zone met Belgie geldt en verder is er extra code toegevoegd zodat er een minimum orderbedrag van 150 euro geldt voor de zone met Nederland.

 

Open /classes/Cart.php en zoek naar deze code:

  	 if (isset($configuration['PS_SHIPPING_FREE_PRICE']))
		$free_fees_price = Tools::convertPrice((float)($configuration['PS_SHIPPING_FREE_PRICE']), Currency::getCurrencyInstance((int)($this->id_currency)));
	$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
	if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0)
		return $shipping_cost;
	if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0)
		return $shipping_cost;

 

en vervang dit met:

	// Gratis verzending voor Belgie
  	 if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $id_zone==x)
		$free_fees_price = Tools::convertPrice((float)($configuration['PS_SHIPPING_FREE_PRICE']), Currency::getCurrencyInstance((int)($this->id_currency)));
	$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
	if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0)
		return $shipping_cost;
	if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0)
		return $shipping_cost;
	// Gratis verzending voor Nederland (vanaf 150 euro)
  	 if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $id_zone==y)
		$free_fees_price = Tools::convertPrice((float)($configuration['PS_SHIPPING_FREE_PRICE']), Currency::getCurrencyInstance((int)($this->id_currency)));
	$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
  	 if ($orderTotalwithDiscounts >= 150 AND (float)($free_fees_price) > 0)
		return $shipping_cost;
	if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0)
		return $shipping_cost;

 

Vul voor x in $id_zone==x de ID van de zone met Belgie in en voor y in $id_zone==y de ID van je zone met Nederland.

Mocht je ooit het minimum orderbedrag voor gratis verzending voor Belgie willen aanpassen, dan doe je dat in je beheersysteem. Voor Nederland pas je dit aan in de code: verander dan het getal 150 in if ($orderTotalwithDiscounts >= 150 AND (float)($free_fees_price) > 0)

Link to comment
Share on other sites

Hoi AKJV,

 

Heel erg bedankt voor de hulp. Ik heb de aanpassing gedaan zoals je zij; en momenteel werk de cart zoals hij moet. De verzendkosten vervallen wanneer het minimum bedrag besteld word.

 

Er is echter nog 1 probleem: In het hoofdmenu van shipping staat:

AFHANDELING: GRATIS VERZENDEN START VANAF ... EURO

Ik heb dit ingesteld op 100 euro.

Wanneer mijn klanten nu een bestelling plaatsen komt er in het overzicht te steen: " U dient nog voor ... euro te besteden om in aanmerking te komen voor gratis verzending." Dit resterende bedrag is telkens het verschil van het reeds bestelde met die 100 euro.

Indien een Nederlandse klant dus voor 98 euro in de cart heeft staan, dan krijgt hij de melding dat hij nog voor 2 euro moet spenderen. Bij het afrekenen vervallen de verzendkosten echter correct vanaf 150 euro.

Voor Belgische klanten is er in dit geval dus geen probleem.

 

Wanneer ik:

AFHANDELING: GRATIS VERZENDEN START VANAF ... EURO instel op 0 euro zou deze functie uitgeschakeld moeten worden volgens prestashop. In dit geval blijft prestashop onverbiddelijk transportkosten aanrekenen onafhankelijk van het bedrag.

 

Waar zit hier het probleem?

 

Nogmaals bedankt. Groetjes

Link to comment
Share on other sites

Hoi Durill,

 

Mooi dat het werkt.

 

Helemaal vergeten dat er ook nog een herinnering is voor hoeveel er nog gekocht moet worden voor gratis verzending in de winkelwagen overzicht.

Als je het niet erg vindt om deze melding helemaal weg te laten, dan doe je het volgende:

 

Verwijder (of plaats tussen comment tags) deze code uit /themes/jouw_theme/shopping-cart.tpl:

  <tr class="cart_free_shipping" {if $free_ship <= 0 || $isVirtualCart} style="display: none;" {/if}>
 <td colspan="6" style="white-space: normal;">{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}</td>
 <td id="free_shipping" class="price">{displayPrice price=$free_ship}</td>
   </tr>

 

Vergeet niet om tijdelijk de 'Force compile' optie (bij de Preferences tab) aan te zetten voor het doorvoeren van wijzigingen aan .tpl files.

En laat de gratis verzending optie in je BO op 100 euro.

Link to comment
Share on other sites

Mooi!

 

Zou je [solved] voor je topictitel willen zetten? Dit doe je door je eerste post te editten (gebruik hierbij de Full editor) en dan de titel aan te passen. Alvast bedankt.

 

EDIT:

Nog geen actie ondernomen door topicstarter dus heb ik zelf maar de titel aangepast. Graag de volgende keer wel even zelf de topictitel aanpassen, dat houdt het forum overzichtelijk.

Edited by AKJV (see edit history)
Link to comment
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...