Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Abfrage ob gerade Brutto- oder Nettopreise angezeigt werden

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Hallo zusammen,

    Ich möchte gerne an verschiedenen Stellen auch Nettopreise anzeigen, wenn gerade Bruttopreise angezeigt werden.

    Hier gab's einen tollen Beitrag, der schon mal die Nettopreise im Template bekannt macht, angezeigt bekomme ich sie also problemlos. Diese Aktion macht natürlich wenig Sinn, wenn ohnehin schon Nettopriese ausgegeben werden, daher suche ich eine Möglichkeit, genau dies zu überprüfen und das Ergebnis als {if ...} im Template zu verwenden.

    Hat wer eine Idee?



    Linkback: https://www.modified-shop.org/forum/index.php?topic=30489.0
    Werbung / Banner buchen

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Das ist nicht so ohne weiteres machbar mit dir verlinkten Erweiterung.
    Da beide Preise unabhängig voneinander definiert sind würde lediglich eine Prüfung darauf ob products_tax_class_id == 0 ist helfen.
    Am Beispiel der /includes/classes/product.php könntest du in der Funktion buildDataArray()
    in return array sowas definieren:
    Code: PHP  [Auswählen]
    if($array['products_tax_class_id'] == '0') {
        'HAS_TAX' => 0,
    }
    'PRODUCTS_PRICE' => $products_price['formated'],
    'PRODUCTS_PRICE_NETTO' => $products_price_netto['formated'],

    und dann im Template so abfragen (Beispiel product_listing.html):

    Code: XML  [Auswählen]
    {if $module_data.HAS_TAX != '0'}
    {$module_data.PRODUCTS_PRICE_NETTO}
    {/if}

    Damit würde der Nettopreis nur angezeigt wenn der Normalpreis Steuer drauf hat.

    Vielleicht gibt's noch 'ne bessere/einfachere Variante, fällt mir nur gerade keine ein...

    Gruß,
    noRiddle

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Hmmm....

    Vielleicht könnte man den Status der Kundengruppe irgendwie abfragen? Die definiert doch auch die Anzeige inkl. oder exkl. MwST, wenn ich das richtig verstehe. Die $product->data['products_tax_class_id'] enthält doch die ID des Steuersatzes, diese ändert sich ja nicht, oder?

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    In xtcPrice.php habe ich dies hier gefunden:

    Code: PHP  [Auswählen]
    if ($this->cStatus['customers_status_show_price_tax'] == '0') {
          $products_tax = '';
        }

    Ließe sich daraus nicht was basteln?

    Code: PHP  [Auswählen]
    global $xtPrice;
    var_dump($xtPrice->cStatus['customers_status_show_price_tax']);

    gibt mir entweder den string ''1" bei brutto und "0" bei netto zurück. Dann könnte ich doch theoretisch mit

    Code: PHP  [Auswählen]
    $smarty->assign('is_brutto',$xtPrice->cStatus['customers_status_show_price_tax']);

    im Template sowas machen:

    Code: XML  [Auswählen]
    {if $is_brutto}zeige netto{/if}

    Das probiere ich doch direkt mal ...

    webald

    • modified Team
    • Beiträge: 2.791
    Ohne irgendwas nachgelesen zu haben:

    Wenn man einfach prüft ob die beiden Preise gleich sind? Sind die Preise gleich dann netto und nur einen Preis anzeigen, falls nicht beide anzeigen.

    Sonderfall Artikel mit UST 0% bzw. 0,- € sind ggf. noch zu berücksichtigen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Gute Idee mit dem Preisvergleich, dann braucht's keine Änderungen am Core-Code, gefällt mir.

    @sixtyseven
    Was du vorschlägst läuft doch auf's Selbe hinaus wie das was ich vorschlug.
    Es muß ein Smarty definiert werden.
    webald's Idee ist gut.

    Gruß,
    noRiddle

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Ich hab's jetzt erstmal gelöst. Da das ja eine template-abhängige Geschichte ist, habe ich folgendes in die boxes.php gepackt:

    Code: PHP  [Auswählen]
    if($xtPrice->cStatus['customers_status_show_price_tax'] == '1'){
            define('IS_BRUTTO', true);
    }

    Weiß der Teufel warum, aber ich kriege da einfach nix assigned. Aber nun kann ich im Template den Status so abfragen:

    Code: XML  [Auswählen]
    {if "IS_BRUTTO"|defined}<p class="productprice_netto">Netto: <span>{$PRODUCTS_PRICE_NETTO}</span></p>{/if}

    Vielleicht nicht so elegant, läuft aber tadellos. Und der Preisvergleich entfällt  ;-)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Über die boxes.php zu gehen ist auch nicht schlecht.
    Ist nur die Frage was schneller ist, der Aufruf der Klasse xtcPrice in der boxes.php könnte da schon langsamer sein als es direkt in den Core-Dateien zu machen wo die Klasse ohnehin bereits benutzt wird um den Preis zu definieren.
    webald's Version dürfte aber die schnellste sein.

    Na jedenfalls haben wir doch mal was zusammenbekommen um dein Problem zu lösen.

    Gruß,
    noRiddle
    10 Antworten
    8922 Aufrufe
    20. Januar 2014, 15:52:17 von Frank_H
    6 Antworten
    3719 Aufrufe
    21. Juni 2021, 15:07:53 von Morgenstund
    1 Antworten
    2825 Aufrufe
    30. Dezember 2014, 22:10:14 von kaisa
    63 Antworten
    44977 Aufrufe
    24. August 2016, 21:58:01 von Angeal