Prijs per land, winkel en valuta: volledige gids
Regels aanmaken, de prijsberekening begrijpen, simuleren, herberekenen, ongedaan maken en automatiseren via cron.
Prijs per Land, Winkel & Valuta past per markt een margecoëfficiënt en een psychologische afronding toe en slaat het resultaat op als native specifieke prijzen van PrestaShop. Deze handleiding behandelt installatie, regels aanmaken, prijsberekening, simulatie, herberekening, een herberekening ongedaan maken en automatisering via cron.
Installatie en update
De module is compatibel met PrestaShop 8.0 tot 9.x, met één winkel of multistore.
- Open in de back-office Modules > Modulebeheer, klik op Een module uploaden en kies het ZIP-bestand.
- De module maakt haar tabellen aan, een tabblad DF Multi Price onder Catalogus en een crontoken.
- Open de moduleconfiguratie om automatisch toepassen en de batchgrootte in te stellen en de cron-URL op te halen.
Komt u van versie 1.0.0? Herbereken uw regels na de update, vooral die gekoppeld aan een andere valuta dan de standaardvaluta: 1.0.0 sloeg die prijzen op in de verkeerde valuta. Bestaande regels behouden hun gedrag, met de opties “Elke combinatie prijzen” en “Lopende acties behouden” uitgeschakeld. Schakel ze indien nodig per regel in.
Een prijsregel aanmaken
Open Catalogus > DF Multi Price en klik op Nieuwe regel toevoegen. Het formulier heeft vier blokken.
Wie ziet deze prijs
- Winkel: één winkel of alle. Met “Alle winkels” worden de basisprijzen uit de standaardwinkel gelezen.
- Land: het btw-tarief wordt gebruikt om de afgeronde prijs incl. btw te berekenen. Een bezoeker zonder adres wordt gekoppeld aan het standaardland van de winkel, tenzij geolocatie is ingeschakeld, en een andere valuta kiezen verandert het land niet. Een regel voor een ander land bereikt dus alleen klanten met een adres in dat land. Laat voor een valutaregel “Alle landen” staan.
- Valuta: maak één regel per valuta om het prijseinde per valuta te bepalen. Met “Alle valuta’s” wordt de prijs in de standaardvaluta uitgedrukt en rekent PrestaShop hem om voor de andere valuta’s, die het prijseinde verliezen.
- Klantengroep: voor B2B-prijslijsten. Groepskortingen uit Klanten > Groepen blijven daarbovenop gelden.
Welke producten
- Categorie: de categorie met alle subcategorieën, of de volledige catalogus.
- Merk: beperkt de regel tot één merk.
- Uitgesloten producten: product-ID’s gescheiden door komma’s.
- Lopende acties behouden: zie de aparte sectie hieronder.
Hoe de prijs wordt opgebouwd
- Prijsbasis: verkoopprijs excl. btw of inkoopprijs. Met de inkoopprijs worden producten zonder inkoopprijs overgeslagen.
- Margecoëfficiënt: prijs = basis x coëfficiënt. 1,20 voegt 20% toe. Gebruik 1 om alleen af te ronden.
- Elke combinatie prijzen: aanbevolen. Elke combinatie krijgt een eigen prijs, meerprijs inbegrepen. Zonder deze optie telt PrestaShop de meerprijs na de afronding op en gaat het prijseinde verloren.
- Afronding: dichtstbijzijnde prijseinde, altijd naar boven, altijd naar beneden of geen afronding.
- Psychologisch prijseinde: x,90, x,95, x,99, x,50 of x,00.
- Afrondingsstap: rondt af op een veelvoud van een stap in plaats van op een prijseinde. Beschikbare stappen: 0,05, 0,10, 0,20, 0,25, 0,50, 1, 5 en 10. De richting volgt het veld Afronding: met 0,10 en Dichtstbijzijnde prijseinde wordt 23,47 dus 23,50; met 10 en Altijd naar boven wordt 23,47 dus 30; met 10 en Altijd naar beneden 20. Een gekozen stap vervangt het prijseinde. De prijs wordt nooit naar nul afgerond: minimaal één stap. “Geen” (standaard) behoudt het prijseinde.
- Prijs incl. btw afronden: aanbevolen voor B2C. Uitschakelen voor B2B-prijzen excl. btw: dan wordt de prijs excl. btw afgerond.
Vangnetten
- Minimumprijs: minimale getoonde prijs, in de valuta van de regel. 0 = geen minimum.
- Minimale marge op inkoopprijs: coëfficiënt op de inkoopprijs waaronder de prijs nooit zakt, bijvoorbeeld 1,15. Geldt voor producten met een inkoopprijs. 0 = uitgeschakeld.
- Prioriteit: lage waarden worden eerst uitgevoerd. Als twee regels dezelfde winkel, hetzelfde land, dezelfde valuta en groep betreffen, behoudt de eerste de prijs en telt de andere een conflict.
- Actief: een regel uitschakelen verwijdert de prijzen die hij heeft aangemaakt.
Hoe de eindprijs wordt berekend
Afronden heeft alleen zin op het bedrag dat de klant ziet. De engine volgt deze volgorde:
- Basisprijs excl. btw (combinatie inbegrepen als de optie actief is) vermenigvuldigd met de coëfficiënt.
- Omrekening naar de valuta van de regel tegen de wisselkoers van de winkel.
- Overgang naar incl. btw met de btw van het land van de regel, plus ecotaks als die in PrestaShop is ingeschakeld.
- Afronding naar het gekozen prijseinde, of naar een veelvoud van de stap als een afrondingsstap is ingesteld.
- Minimumprijs en daarna minimale marge, beide naar boven afgerond.
- Terug naar de prijs excl. btw, opgeslagen in de valuta van de regel.
Voorbeeld: een basisprijs van 69,99 € excl. btw, een coëfficiënt van 1,20, 19% btw en het prijseinde x,99 geven 99,99 € incl. btw in de winkel.
PrestaShop leest een specifieke prijs die aan een valuta is gekoppeld in die valuta, zonder omrekening. Daarom slaat de module hem rechtstreeks op in de valuta van de regel: een regel in pond sterling toont het door de regel berekende bedrag in pond.
Een prijs in de winkel controleren
Het paneel Een prijs in de winkel controleren boven de regellijst bootst de berekening van PrestaShop na voor een bepaalde context. Voer een product-ID in, en zo nodig een combinatie-ID, en kies de winkel, het land (standaard dat van de winkel), de valuta en de groep (standaard Bezoeker). Het paneel toont:
- het land waaraan bezoekers zonder adres worden gekoppeld en de status van geolocatie;
- de getoonde prijs, excl. of incl. btw afhankelijk van de groep;
- de specifieke prijs die PrestaShop gebruikt en de herkomst: moduleregel, handmatig ingevoerde prijs of catalogusprijsregel;
- de status van elke regel: toegepast, andere context (met de winkel, het land, de valuta of de groep van de regel), product buiten de regel, te herberekenen, actie behouden of overschreven door een andere specifieke prijs.
De regellijst toont ook een waarschuwing wanneer een regel zonder geolocatie een ander land betreft dan het standaardland van zijn winkel, of wanneer een regel “Alle winkels” winkels met verschillende standaardlanden omvat.
Simuleren vóór toepassing
In de regellijst opent de actie Simuleren een venster met, voor de eerste betrokken producten, de huidige winkelprijs, de nieuwe prijs en het verschil in procent. Er wordt niets opgeslagen. Overgeslagen producten verschijnen met hun reden: lopende actie of geen basisprijs.
De actie CSV-voorbeeld exporteren maakt de volledige lijst (product-ID, combinatie-ID, referentie, naam, huidige prijs, nieuwe prijs, opgeslagen prijs excl. btw, status) als CSV met puntkomma’s, leesbaar in Excel.
Herberekenen
- De actie Herberekenen van een regel past die regel toe op de catalogus.
- De knop Alle actieve regels herberekenen in de werkbalk voert de regels uit in volgorde van prioriteit.
De verwerking gebeurt in batches met een voortgangsbalk en daarna een overzicht:
- Aangemaakt, Bijgewerkt, Ongewijzigd: prijzen geschreven door de regel.
- Acties behouden: producten die ongemoeid blijven omdat ze in een actie zitten.
- Conflicten: prijzen die al van een regel met hogere prioriteit en dezelfde dimensies zijn.
- Overgeslagen: producten zonder bruikbare basisprijs.
- Verwijderd: prijzen die zijn verwijderd of teruggegeven aan de handelaar, bijvoorbeeld voor een product dat buiten het bereik van de regel valt.
Een regel die na de laatste herberekening is gewijzigd, toont het label Te herberekenen in de lijst. De batchgrootte (10 tot 500 producten) stelt u in de moduleconfiguratie in.
Een herberekening ongedaan maken
Elke herberekening, handmatig of via cron, bewaart de vorige staat van elke prijs die zij wijzigt. Om terug te gaan:
- gebruik in de regellijst de actie Laatste herberekening ongedaan maken;
- of klik in de moduleconfiguratie op Ongedaan maken in de geschiedenis.
Ongedaan maken verwijdert de prijzen die de herberekening heeft aangemaakt, geeft gewijzigde prijzen hun waarde terug en maakt verwijderde prijzen opnieuw aan. Het werkt in omgekeerde volgorde: eerst de meest recente herberekening, dan de vorige, tot 5 herberekeningen terug per regel. Een onderbroken herberekening (venster gesloten tijdens de verwerking) kan een uur na de start ongedaan worden gemaakt.
Daarna toont de regel Te herberekenen, omdat de prijzen niet meer overeenkomen met de instellingen. Pas de regel zo nodig aan, simuleer en herbereken.
De regel moet actief zijn om de herberekening ongedaan te maken. Herberekeningen met versie 1.0.0 of 1.1.0 kunnen niet ongedaan worden gemaakt: de functie werkt vanaf de eerste herberekening met 1.1.1.
Acties en handmatige prijzen
PrestaShop past per product slechts één specifieke prijs toe: de meest specifieke wint. Een prijs per land en valuta zou dus een bredere actie verbergen. Met Lopende acties behouden blijft een product met een actieve korting (niet door de module aangemaakt) ongemoeid en krijgt het bij de eerste herberekening na afloop van de actie een nieuwe prijs. Plan de cron zodat dit automatisch gebeurt.
Bestaat er al een handmatige vaste prijs met dezelfde dimensies als de regel, zonder korting en zonder datums, dan neemt de regel die over in plaats van een duplicaat aan te maken. De oorspronkelijke waarde wordt bewaard en teruggegeven bij het ongedaan maken van de herberekening, bij het uitschakelen of verwijderen van de regel, of bij de-installatie van de module. Acties en prijzen met andere dimensies worden nooit gewijzigd.
Automatiseren met cron
De met een token beveiligde cron-URL staat in de moduleconfiguratie:
https://uwwinkel.nl/index.php?fc=module&module=dfmultiprice&controller=cron&token=UW_TOKEN
Voeg &id_rule=3 toe om één regel te herberekenen. Plan de URL bij uw hostingprovider, bijvoorbeeld elke nacht: zo volgen de prijzen wisselkoers- en kostenwijzigingen en het einde van acties. De cron geeft per regel een JSON-overzicht terug en elke run kan net als een handmatige herberekening ongedaan worden gemaakt. Is het token uitgelekt, genereer het dan opnieuw in de configuratie: de oude URL werkt dan niet meer.
Automatisch toepassen
Als de optie is ingeschakeld, past het aanmaken of wijzigen van een product of combinatie de actieve regels toe op dat product. Handig bij regelmatige imports.
PrestaShop voert de hooks van een module niet uit voor een medewerker zonder het recht “Bekijken” op die module. Houd de cron aan als vangnet.
Geschiedenis
De moduleconfiguratie toont de laatste 20 herberekeningen: datum, regel, bron (handmatig of cron), status, tellers en het aantal wijzigingen dat voor ongedaan maken is vastgelegd.
Uitschakelen, verwijderen en de-installeren
- Een regel uitschakelen of verwijderen haalt de prijzen weg die hij heeft aangemaakt en geeft overgenomen handmatige prijzen hun waarde terug.
- Een regel dupliceren maakt een uitgeschakelde kopie, klaar om aan te passen voor een andere markt.
- De-installatie verwijdert alle aangemaakte prijzen en geeft overgenomen handmatige prijzen hun waarde terug.
Probleemoplossing
Een product wordt niet bijgewerkt
Controleer of het actief is in de winkel van de regel, tot de gekozen categorie en het merk behoort en niet is uitgesloten. Voer een simulatie uit: de status geeft aan of het in een actie zit of geen basisprijs heeft. Met de basis “Inkoopprijs” heeft het een inkoopprijs nodig.
De getoonde prijs heeft niet het juiste prijseinde
Controleer of “Prijs incl. btw afronden” is ingeschakeld en of het land van de regel overeenkomt met dat van de klant. Schakel voor een combinatie met meerprijs “Elke combinatie prijzen” in. In een andere valuta dan die van de regel rekent PrestaShop de prijs om: maak een regel voor die valuta.
De prijs klopt in euro maar niet in een andere valuta
De regel staat op “Alle valuta’s”: de prijs wordt in de standaardvaluta opgeslagen en PrestaShop rekent hem om, bijvoorbeeld 23,90 € naar 27,84 $. Het prijseinde blijft niet behouden. Het paneel Prijs controleren toont dan in beide valuta’s dezelfde specifieke prijs. Maak één regel per valuta, met Land op “Alle landen”, en herbereken.
Een landregel geldt niet voor bezoekers
Bezoekers zonder adres worden gekoppeld aan het standaardland van de winkel. Een regel voor een ander land geldt alleen voor klanten met een adres in dat land, of voor alle bezoekers uit dat land als geolocatie is ingeschakeld (Internationaal > Lokalisatie > Geolocatie).
Het prijseinde klopt niet in één winkel
In multistore gebruikt de afronding de btw van het standaardland van de winkel waarop de regel is gericht. Een regel “Alle winkels” gaat uit van de standaardwinkel: hebben uw winkels niet hetzelfde standaardland, maak dan één regel per winkel.
Het prijseinde verschijnt niet op de prijs excl. btw die bezoekers zien
Toont de groep Bezoeker prijzen excl. btw, schakel dan “Prijs incl. btw afronden” uit: het prijseinde geldt dan voor de prijs excl. btw die bezoekers zien.
Het overzicht toont conflicten
Een andere regel met dezelfde winkel, hetzelfde land, dezelfde valuta en groep heeft deze prijzen al. Pas de prioriteiten aan of voeg de twee regels samen.
De knop Ongedaan maken verschijnt niet
Alleen de laatste herberekening van elke regel kan ongedaan worden gemaakt, mits uitgevoerd met 1.1.1 en behorend tot de laatste 5. Een herberekening die minder dan een uur loopt, kan nog niet ongedaan worden gemaakt.
De cron geeft “Invalid token” terug
Het token in de URL komt niet meer overeen met het opgeslagen token. Haal de actuele URL op in de configuratie.
Bij sommige producten verschijnt een label “-0,00 €”
Dit is geen probleem van het thema. PrestaShop 8.1 en hoger berekent de getoonde korting door de op 2 decimalen afgeronde prijs af te trekken van de prijs zonder korting, die 6 decimalen behoudt. Omdat de prijs van een regel excl. btw wordt opgeslagen, blijft bij het terugrekenen naar incl. btw met 19, 21 of 23% btw soms een verschil van 0,000001 over, dat het thema toont als een korting van -0,00 €. Sinds versie 1.1.4 heft de module dit verschil op voor zijn eigen prijzen: werk de module bij en leeg de cache via Geavanceerde instellingen > Prestaties. Herberekenen is niet nodig.