• Hallo,

    ich habe in der 2.1 CE einen Rundungsfehler entdeckt, der mir nun Probleme bei einem neuen Zahlungssystem bereitet, d.h. dort wird auf 1 Cent falsch gerechnet.

    Beispiel: Kunde x kauft bei mir einen Artikel zu 50,20 EUR und erhält 2,5% Rabatt, was 1,255 EUR entspräche.

    Gerundet wohl also 1,26 EUR bzw. -1,26 EUR (minus, da Rabatt).

    Bei mir im Warenkorb werden aber -1,25 EUR angezeigt, der Payment-Anbieter berechnet aber korrekt

    In der Tabelle orders_total habe ich auch korrekt -1.2550 als value stehen, aber es wird aus meiner Sicht falsch gerundet.

  • Du kpnntest mal unter konfiguration -> mein shop ganz unten mit den Nachkommastellen für die Berechnung Brutto/Netto sowie des Steuersartzes rumspielen, ggf. erreichst du damit eine Übereinstimmung von Anzeige/tatsächlicher Berechnung.

    Mit besten Grüßen aus Hamburg

    Mario

  • Also, darf ich ehrlich sein...

    Scheinbar scheint hier in der 2.1er CE keiner der Admins / Entwickler mehr reinzuschauen...

    Auch wenn es nun nur mehr die 2.2 er und damit kostenpflichtige Version gibt... lässt man uns nun im Regen stehen... liest hier keiner mehr???

    Schweigen... damit gekauft wird?

  • Naja, hab ein wenig Verständnis - du machst hier ein recht kompliziertes Thema auf mit einigen unbekannten Faktoren, um die Rechnung wirklich nachzuvollziehen, müsste man wissen ob es sich um Brutto oder Netto-Beträge handelt und was genau der im Produkt hinterlegte Preis ist : wenn du deine Produkte Brutto plegst, werden sie in der DB dennoch netto abgespeichert, auch der Rabatt wird m.E. erstmal auf den nettobetrag berechnet und dann wieder zurück, d.h. es kann auf dem Weg dahin passieren oder auch daran liegen, dass die abgespeicherte netto-summe im Produkt zu diesem Ergebnis führt, hast du den Produktpreis NACH der Umstellung auf 4 Stellen nochmal neu eingegeben ? Ansonsten stell deinen Shop mal auf netto-Eingabe um und gib auch den Produktpreis mit mindestens 4, richtig gerundeten, Nachkommastellen ein.

  • Vielen Dank Mario,

    naja, ob Brutto oder Netto... entscheidend ist doch, dass aus 1.255 EUR Rabatt 1.25 EUR gemacht werden und ich einfach nur gerne wüsste, wo, d.h. in welcher Datei ich suchen muss...

  • wie gesat ich denke nicht wirklich, dass es tatsächlich einen rundungsfehler in irgendeiner datei gibt, sondern sich das auf dem weg dahin ergibt was eben der arbeitsweise des shops geschuldet ist, aber natürlich alle angaben ohne gewähr - dateiseitig ggf. die inc/xtc_round.inc.php oder die inc/xtc_format_price.inc.php
    Check auch nochmal, wieviel Nachkommastellen in der Währung eingestellt sind, das wird in der format_price nochmal verwendet.

    • Offizieller Beitrag

    Also, das liegt am PHP. PHP rundet etwas anders manchmal. Zur Frage ob wir hier vorbei schauen, ja ab und an. Aber ihr werdet Verständnis haben, dass wir unseren Hauptaugenmerk nur noch auf die v2.2 legen und zahlenden Kunden den Haupt-Support bieten.

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

    Einmal editiert, zuletzt von nico (7. November 2012 um 22:50) aus folgendem Grund: Rechtschreibfehler

  • So, bin ein klein wenig weiter.

    Wenn ich in der XtcPrice.php die

    PHP
    function xtcGetDC($price,$dc) {        $dc = ($price)/100*$dc;        return $dc;    }


    ändere in

    PHP
    function xtcGetDC($price,$dc) {        $dc = ($price+0.0001)/100*$dc;        return $dc;    }


    habe ich in der Shopping-Cart-Box und auf der Warenkorb-Seite den korrekt gerundeten Rabatt.

    Ferner in der ot_discount.php

    vor:

    PHP
    $this->output[] = array('title' => $this->title,                                            'text' => $xtPrice->xtcFormat($discount_price,true),                                            'value' => $discount_price);


    eingefügt:

    PHP
    $discount_price = round($discount_price-0.0001,2);

    Einmal editiert, zuletzt von nico (13. November 2012 um 12:15) aus folgendem Grund: PHP-Tags eingefügt

  • ich würde nichts an den Werten verändern, durch eigene Manipulation, was ist denn wenn es einen Rabatt von 1,775€ gibt, würde es dann auch noch passen? Dann verändere lieber die EInstellung im Backend auf nicht mehr 4 stellen und guck was passiert, wird dann richtig aufgerundet? Oder guck dir das hier an:

    PHP
    <?phpecho round(3.4);         // 3echo round(3.5);         // 4echo round(3.6);         // 4echo round(3.6, 0);      // 4echo round(1.95583, 2);  // 1.96echo round(1241757, -3); // 1242000echo round(5.045, 2);    // 5.05echo round(5.055, 2);    // 5.06?>

    Mittels dem round() Befehl gibt es verschiedene Arten zu runden. Du bräuchtest in deinem speziellen falle die 5te Variante. Aber auch hier erst testen bevor du solche Änderungen live schaltest!

    Um es eben komplett zu machen der entsprechende Code für dich:

    PHP
    function xtcGetDC($price,$dc) {
    $dc = ($price)/100*$dc;
    $dc = round($price, 2);
    return $dc;
    }

    bedenke, die Angaben sind ohne GEwähr! *gg*

    Greetz

  • vielen Dank... aber...

    PHP
    function xtcGetDC($price,$dc) {$dc = ($price)/100*$dc;$dc = round($price, 2);return $dc;}


    müsste doch dann heissen

    PHP
    function xtcGetDC($price,$dc) {
    $dc = ($price)/100*$dc;
    $dc = round($dc, 2);
    return $dc;
    }

    Einmal editiert, zuletzt von nico (13. November 2012 um 12:19) aus folgendem Grund: PHP-Tags eingefügt