Falscher Gesamtpreis bei VM PayPal standard

  • Ich habe die Artikel aus der ursprünglichen Bestellung zuerst im TESTshop und dann auch im Liveshop getestet, zuerst mit der unveränderten und dann mit der modifizierten Datei. Mit der modifizierten hat dann alles gestimmt, zumindest mit den Produkten, die ich zum Testen verwendet habe.

    Das was ich zuletzt verändert habe, waren die Rechenregeln für die Produkte selbst. Bisher hatte ich nur Rabatte auf den Preis nach Steuern, jetzt habe ich auch Preismodifikatoren für den Gewinnaufschlag, auch einen, der für alle Artikel gilt.

    Vielleicht hat sich dadurch die Situation für die abgefragten Kriterien verändert, so dass der benötigte if case nicht mehr passt!?


    Aus Selbstkostenpreis>Preismodifikator nach Steuern (DATax)>überschriebener Preis wurde


    Selbstkostenpreis>Preismodifikator für Gewinnaufschlag (Marge)>Preismodifikator nach Steuern (DATax)>überschriebener Preis


    Viele Grüße - Harald

  • Hallo Milbo,

    ich habe den Test eben gerade im TESTshop OHNE den Preismodifikator für Gewinnaufschlag (Marge) wiederholt und es war alles korrekt.

    Der Fehler taucht also scheinbar nur durch den Preismodifikator für Gewinnaufschlag (Marge) auf!



    Viele Grüße - Harald

  • Hallo Milbo,

    ich habe inzwischen im TESTshop auch die "Gegenprobe" gemacht, den Preismodifikator für Gewinnaufschlag (Marge) dazu genommen und habe den Fehler prompt rekonstruieren können, statt 157,83 Euro werden dann 248,50 Euro berechnet.

    Anbei auch die Screenshots dazu.




    Viele Grüße - Harald

  • Im Warenkorb stimmt ja auch alles, aber bei PayPal, wie Du am Screenshot selbst sehen kannst, eben nicht!


    if ($productPricesUnformatted['salesPriceWithDiscount']) {
    return vmPSPlugin::getAmountValueInCurrency( $productPricesUnformatted['salesPriceWithDiscount'], $this->_method->payment_currency );
    } else if

    Wenn ich diesen Teil des Codes richtig verstehe, wird zuerst überprüft, ob es einen reduzierten Preis gibt und alles andere erst danach in den else-Zweigen...müsste die erste Überrüfung nicht sein, ob es einen überschriebenen Preis gibt, weil dann alle weiteren Überprüfungen unnötig sind?

    Viele Grüße - Harald

  • Hallo Milbo,

    ich habe eine weitere Detailinformation zu diesem Problem.

    Der Fehler tritt nur auf, wenn ein Preismodifikator für Gewinnaufschlag (Marge) und ein Preismodifikator nach Steuern (DATax) bei einem Produkt zusammentreffen.


    Selbstkostenpreis>Preismodifikator für Gewinnaufschlag (Marge)>Preismodifikator nach Steuern (DATax)>überschriebener Preis


    Dieser Fall, dass ein Produkt beides hat, ist in Deiner If-Abfrage wahrscheinlich (noch) nicht berücksichtigt.

    Ich benutze einen Preismodifikator für Gewinnaufschlag (Marge) für alle Hersteller um das gesamte Preisniveau aller Produkte nach oben zu korrigieren. Bei den Produkten, bei denen noch ein Preismodifikator nach Steuern (DATax) als Preisnachlass für die Produkte des jeweiligen Herstellers dazu kommt, werden die Preise für PayPal falsch berechnet! Ein zusätzlicher Preismodifikator für Gewinnaufschlag (Marge) verursacht keinen Fehler (wird ja durch den gleichen if case erfasst).

    Das ist mir gerade aufgefallen, weil ich eine neue Bestellung mit Produkten eines anderen Herstellers bekommen habe, bei denen es die problematische Kombination eben nicht gibt (beides Preismodifikator für Gewinnaufschlag (Marge)).


    Viele Grüße - Harald

  • es wäre sehr hilfreich die Preise mal eben zu debuggen, welche du hast.

    Einfach den vmdebug in der vmconfig anschalten (erstes Tab unten)


    und dann im Code vor Zeile 117

    Code
    1. vmdebug('getProductAmount',$productPricesUnformatted);


    Dann kannste mir genau sagen, welcher Preis in dem obigen Fall der richtige wäre.

  • Im Quellcode vom Warenkorb finde ich die richtigen Preise unter:


    Einzelpreis:

    class="PricediscountedPriceWithoutTax">16,00 € => 1 Stück

    class="PricediscountedPriceWithoutTax">13,00 € => 3 Stück

    Zeilensumme:

    class="PricesalesPrice">16,00 € => 1 Stück

    class="PricesalesPrice">39,00 € => 3 Stück

    Das andere habe ich noch nicht gefunden... :(

  • dafür ist das vmdebug da. Eventuell wird dieser Code nur aufgerufen, wenn man selber gerade Paypal sieht.


    VmConfig::$logdebug=1; davor schreiben, dann tauchts in der logfile auf. Die config sieht gut aus.


    Oder letztendlich siehts so aus, als wäre deine Idee des tauschens der Reihenfolge ausreichend. Hab den code bereits geändert, kontakt mich ma über skype.

  • Ich verstehe es gerade wirklich nicht... :(

    Wo ist denn die vmdebug Zeile, wo ich etwas zusätzlich eingeben soll?

    Ich dachte bisher der Debug-Modus sorgt in erster Linie für die zusätzlichen Ausgaben beim Aufruf der Seiten!?


    Ich kann nur mit dem Teamviewer und/oder dem Telefon dienen...ich habe hier am Computer auch kein Mikrofon/Headset.