Preisnachlass abhängig von der Warenkorbsumme

  • Hallo,


    ich suche eine Möglichkeit einen Virtuemart Shop so zu konfigurieren, dass ab einer Bestellsumme von zB. 300 EUR (alle Artikel - ausgenommen eine bestimmte Produktgruppe), ein Rabatt von 10% abgezogen wird.


    Wie kann man das am einfachsten lösen, vorallem die Abhängigkeit zur Warenkorb Summe ist mir technisch nicht klar.


    Ich hoffe jemand hat einen Input für mich.


    lg

  • Servus,


    wenn Regeln für eine bestimmte Preisspanne nötig sind, ist das mit VM-Bordmitteln nicht möglich.

    Das geht sonst nur auf Produktebene mit unterschiedlichen Produktpreisen.


    Wenn es auf Produktebene nicht ausreicht, geht es mit dem Quantity Plugin.

    Das "iStraxx Quantity Plugin" sollte über Google zu finden sein, sonst bei extensions.virtuemart.net.

    Dieses Plugin erweitert die "Steuer- und Rechenregel" um diese und einige andere Funktionen.


    Grüße

    Stefan

  • Hallo Stefan,


    Danke für die rasche Antwort.


    ich brauche es unabhängig von der Produktebene. Ich bin daher deinem Tipp gefolgt und habe das IStraxx Plugin gekauft. Leider wirft das wenn aktiviert gleich PHP Warnings. Ich befürchte dass das Plugin ein Problem mit aktuellen PHP Versionen (in dem Fall 7.4) hat... ich habe dazu mal ein Support Ticket geschickt.


    Weisst du was man in der Regel einstellen muss um das Berechnung von der Warenkorbsumme machen kann?


    Danke nochmals!


    lg,

    michael

  • Hallo nochmal,


    das Plugin scheint soweit zu funktionieren. Danke für den Input!


    Jetzt müsste ich nur noch die hässlichen PHP Warnings wegbekommen:


    Warning: Parameter 1 to plgVmCalculationIstraxx_quantity::plgVmInGatherEffectRulesProduct() expected to be a reference, value given in /is/htdocs/wp12614973_2IPA42C6ZN/www/web/libraries/joomla/event/event.php on line 70


    lg,

    michael

  • Servus,


    diese Warnung erscheint seit Joomla 3.9.23 oder .22 bei einigen Erweiterungen, weil in Joomla eine Anpassung für PHP 7.4 oder PHP 8 gemacht wurde.
    Leider gibt es dort keinen Switch für diesen Fall.

    Evtl. erledigt sich das Problem am Dienstag, 12.01.2021 mit Joomla 3.9.24.

    Ansonsten muss da wohl in jede Erweiterung ein Switch, der die verschieden PHP-Versionen bedient. Das wäre eher unschön.


    Für den Moment kann man die Warnung evtl. erst einmal ausblenden, indem man die Fehlerberichterstattung in Joomla auf Keine stellt. Das sollte in einem Live-Shop sowieso eingestellt sein.
    Ich halte das persönlich so, dass ich eine gespiegelte Testinstallation mit Fehlerberichterstattung auf Maximum laufen lasse, und den Live-Shop auf "Keine", dann sieht man Notices und Warnings früh genug, bevor sie zum Problem werden. Das ist dann meistens in der nächsten oder übernächsten PHP-Version der Fall.


    Grüße

    Stefan

  • Hallo,


    Danke für die Info. Dass das Problem erst seit kurzem ist war mir nicht klar, da ich mit dem Virtuemart Shop bereits mit .23 begonnen habe. Ich weiss, dass man die Fehlermeldungen nicht anzeigen sollte, dennoch dachte ich ursprünglich an ein eigentliches Problem des Plugins. Das ist damit mal erledigt. Danke nochmal.


    Leider ist jetzt noch ein Problem aufgetreten und zwar geht das Plugin scheinbar immer von der Netto Summe als entscheidenenden Wert aus. Also 360 statt 300 (bei Artikeln mit 20%) In dem Fall brauche ich aber unbedingt die Brutto Summe. Ich kann leider auch nicht den Netto Wert 250 in der Regel konfigurieren, da ich Produkte mit 2 unterschiedlichen Steuersätzen habe......


    Als Rechenart hätte ich Preismodifaktor nach Steuern pro Rechnung (DATaxBill) eingestellt, das scheint aber das Plugin nicht zu berücksichtigen....


    lg,

    michael

  • Wenn ich nichts übersehen habe, ist die Bruttosumme in dem Plugin nicht vorgesehen. Ich habe keine andere Lösung gefunden als die function checkQuantity direkt anzupassen:



    if((!empty($rule['calc_categories']) || !empty($rule['virtuemart_manufacturers'])) && $ruleData->use_cats==1){


    foreach($calculationHelper->_cart->products as $product){


    if($this->checkRuleExecution($rule, $product)){

    if($ruleData->calc_unit==1){

    $price = !empty($product->prices['priceWithoutTax'])? $product->prices['priceWithoutTax']:$product->prices['basePriceVariant'];


    // Anpassung Preis:

    $price = !empty($product->prices['salesPrice'])? $product->prices['salesPrice']:$product->prices['basePriceVariant'];

    // ---

    $amount += $price * $product->amount;


    } else {

    $amount += $product->amount;

    }


    vmdebug('Cart rule, CATEGORY / MANUFACTURER set amount '.$product->prices['priceWithoutTax'].' * '.$product->amount. ' = '.$amount);

    }

    }


    Das ist natürlich jetzt nicht elegant weil nicht Update-sicher... Wenn jemand noch eine schlauere Idee hat oder ich etwas übersehen habe, bin ich über jeden Hinweis dankbar.


    lg,

    michael

  • Servus,


    ich habe die Anwendung des Quantity Plugins nicht 100 % im Kopf, aber eigentlich sollte es sich nach der Regel orientieren, die man verwendet.

    Die Regeln kann man sowohl für Preise nach MwSt. anlegen als auch für Preise vor MwSt. Demnach sollte das Plugin auch mit Brutto-Preisen umgehen können.


    Um Deine Änderung elegant zu machen, reicht es, eine ordentliche Dokumentation anzulegen. ;-)

    Bei mir heißt der Punkt: Update-Anleitung. Da schaue ich vor einem Update immer hinein.


    Grüße

    Stefan


    PS. Damit der Code nicht überall mit Smilies versehen wird, kann man Code in [ code ] einschließen [/ code ] (ohne Leerzeichen).

    Code
    1. $dieser->code;


    PPS. Joomla 3.9.24 brachte keine Lösung für das event-Problem. Das wird wohl die jeweilige Erweiterung dann übernehmen müssen. So wie es aussieht besteht diese Änderung in PHP bereits seit PHP 7.1 und im Zuge wurde von Joomla jetzt umgestellt. Die Erweiterungen müssen da wohl jetzt folgen. Alle Angaben dazu ohne Gewähr und Pistole, weil ich da nicht tief hinein geschaut habe.

  • Hallo,


    Ich dachte auch, dass das Plugin auf alle Rechenregeln reagiert. Es funktioniert aber nicht und wenn ich im Code nichts übersehen habe ist für die Rechenart Preismodifaktor nach Steuern pro Rechnung (DATaxBill) auch keine Abfrage drinnen. :-(


    Ja, ich kanns dokumentieren und so lange ich die Seite betreue wirds auch kein Problem sein aber sollte es mal wer anderer machen, kanns natürlich Probleme geben...


    Wegen den PHP Warnings habe ich heute eine Antwort auf mein Ticket bekommen.


    "This is a new error which appears due a change in joomla. We have this problem now also in the core with the standard shipment plugin.

    We work on this problem, but I dont have a solution, yet. I am surprised that you get it with php7.4, we thought it is mainly a problem of outdated php versions (php7.1 for example)"


    lg,

    michael

  • Hallo Michael,


    das ist dann schade, dass es nicht auf alle Regeln anzuwenden ist.

    Auf der anderen Seite sparen diese Art Plugins eine Menge eigene Arbeit, deshalb bin ich immer froh, wenn es mit kleinen Eingriffen dann auch für eigene Zwecke anzupassen ist.

    Das ist die Stärke und Schwäche von VirtueMart, man kann alles machen, allerdings bleibt es nur gut, wenn man es ordentlich dokumentiert. In diesem Fall dürfte es kein großes Problem sein, weil diese Dinge sich nicht andauernd ändern, sondern über Jahre konstant bleiben. Man muss dann leider bei Updates überprüfen, ob alles noch passt. Das ist der Preis dafür, wenn man vom Core abweicht.


    Ich habe gerade ein tolles Beispiel bekommen, super Dokumentation von unnötigen Core-Hacks, die ich nun überwiegend auf einfache Overrides umbauen kann, damit der Shop in Zukunft aktualisierbar ist. Solche Shops brauchen regelmäßige erweiterte Wartung, die über die regelmäßige normale Wartung hinausgeht, die für jedes Shop-System gemacht werden sollte. Das sollte man dem Shop-Besitzer auch von Anfang an klarmachen.

    Ein Shop ist keine Visitenkarte, die man einmal baut und dann zehn Jahre nicht anfassen muss.


    Ok, wieder zu weit ausgeholt ;-)

    Stefan

  • semi

    Hat das Label Gelöst: hinzugefügt