Variable referencePrice mit Wert füllen wenn leer/null [Grundpreis in Shopware 6 immer anzeigen]

Gerne. Müsste aber eher die component/line-item/line-item.html.twig sein, oder? Ich schau mal.

Ich denke, es müsste die /component/product/feature/item.html.twig sein, denn dort heißt es:

    {% elseif feature.type == TYPE_PRODUCT_REFERENCE_PRICE and lineItem.price.referencePrice is not null %}
        {% set type = 'feature-reference-price' %}
    {% endif %}

Was dann die /component/product/feature/types/feature-reference-price.html.twig für die Darstellung nuten bzw. einsetzen sollte.

Im Offcanvas-Warenkorb scheint es die nötigen Werte wirklich nur zu geben, wenn referencePrice nicht null ist. Im Moment verstehe ich leider nicht, warum der überhaupt null ist, weiß jemand, wo entschieden wird, das der null ist? Ich finde im Code zwar folgendes

private function calculateReferencePrice(float $price, ?ReferencePriceDefinition $definition, CashRoundingConfig $config): ?ReferencePrice
    {
        if (!$definition) {
            return null;
        }

        if ($definition->getPurchaseUnit() <= 0 || $definition->getReferenceUnit() <= 0) {
            return null;
        }

aber beide Werte sind ja nicht <=0 (sondern 1) oder klemmt es an $definition?

Nachtrag: Es klemmt tatsächlich an $definition. Muss mich weiter durch den Code graben.

Ich denke, ich habs gefunden

private function buildReferencePriceDefinition(ReferencePriceDto $definition, UnitCollection $units): ?ReferencePriceDefinition
    {
        if (
            $definition->getPurchase() === null
            || $definition->getPurchase() <= 0
            || $definition->getUnitId() === null
            || $definition->getReference() === null
            || $definition->getReference() <= 0
            || $definition->getPurchase() === $definition->getReference()
        ) {
            return null;
        }

        $unit = $units->get($definition->getUnitId());
        if ($unit === null) {
            return null;
        }

        return new ReferencePriceDefinition(
            $definition->getPurchase(),
            $definition->getReference(),
            $unit->getTranslation('name')
        );
    }

Konkret:

$definition->getPurchase() === $definition->getReference()

D.h. hier kommt man nur mit einem Plugin weiter, da PHP-Code geändert werden muss…

Danke dir @Anotherone das du alles durchprobiert hast und für deine Hilfe! Schade, das es nur über ein Plugin geht. Ich hatte gehofft, man kann es ähnlich „umgehen“ wie auf der Detailseite.

Ich könnte mir schon vorstellen, das es interessenten für so ein Plugin gäbe - es ist so in SW6 einfach unglücklich gelöst. Shopware hätte diese „Ausnahmeregelung“ in der Preisangabenverordnung nicht nutzen müssen - einfach Grundpreis darstellen, wenn es einen gibt, auch wenn der Inhalt 1 Liter oder 1kg ist. Oder eben einen Ein- und Ausschalter, falls jemand wirklich diese Ausnahmeregelung nutzen will. Grad beim Grundpreis denke ich, lieber einmal zuviel angezeigt als zu wenig.

Hatte ich auch gedacht, aber der Wert fehlt leider und den kann man rein im HTML eben nicht herbeizaubern. Find es auch unglücklich, das der Wert nicht, wie sonst, zumindest „roh“ vorhanden ist… Ich seh das genauso, das hätte man dem Betreiber überlassen können, ob das dargestellt wird oder nicht, zumindest die Inhaltsangabe (1 Kilogramm / 1 Liter).

Nachtrag: Mir ist grad aufgefallen, das im „großen“ Warenkorb gar kein Grundpreis angezeigt wird, auch bei denen, wo sonst einer angezeigt wird. Ist das nur bei mir so?

Nachtrag #2: Hab mal geschaut, das lineItem sieht keine Felder dafür vor, es muss im price mit übergeben werden.

Ich habs grade mal getestet, bei mir zeigt er überall einen Grundpreis an, wenn die Grundeinheit nicht „1“ ist - auch im Warenkorb (Offcanvas ebenso wie „checkout/cart“).

Hast du vielleicht die wesentlichen Merkmale bei dem Testprodukt nicht aktiviert oder angepasst? Das könnte eine Möglichkeit sein.

Bestünde - theoretisch - eigentlich die Möglichkeit das ganze evtl. über die „Zusatzfelder“ doch in den Warenkorb zu bekommen?

Kurios, in meinem 6.5.8.7 Testshop wird er im Warenkorb nicht angezeigt, im 6.6.20 Testshop ist es da. Danke fürs schauen.

Jetzt bin ich aber neugierig - wie hast du das denn hinbekommen?

Mit einem kleinen Plugin, was die Werte nachträgt. Lustigerweise funktioniert damit dann auch direkt die Listing und die Detailansicht ohne weitere Änderungen. War am Anfang echt genervt, da die entscheidende (eine) Zeile in der vierten Unterfunktion sitzt, natürlich private und somit nicht überschreibbar. Dann wird auch noch eine Ableitung dazwischen gehängt (AppScriptProductPriceCalculator), so das man nicht mal direkt damit arbeiten konnte, aber am Ende kam mir die richtige Idee und jetzt sind es gerade mal ein paar Zeilen. Wenn Du es ausprobieren willst, kann ich Dir gern die ZIP-Datei schicken.

Ich danke dir sehr für deine ganze Arbeit, das Problem mit der Grundpreisangabe zu lösen! Ich würde mich sehr freuen, wenn ich dein Plugin verwenden dürfte!!

P.S.: Ich habe die letzten Tage auch immer mit Version 6.5.8.7 an meinem künftigen SW6 Shop „gebastelt“ und heute mal Testweise das Update auf 6.6.2.0 eingespielt. Dabei ist mir aufgefallen, das nach dem Update der von dir erstellte Code für die buy-widget-price.html.twig nicht mehr funktioniert.

In Version 6.5.8.7 kein Problem, nach dem Update bleibt aber auf der Produkt-Detailseite der Grundpreis weg, wenn der Inhalt 1 ist - es wird dann nur noch (wie im Standard) „Inhalt 1 Liter“ angezeigt. Erklären kann ich es mir nicht.

!Hier stand einmal blödsinn!

Lese dir doch bitte noch einmal die Shopware Dokumentation durch, dann lernst du auch, wie man dies einstellt:

Und bitte informiere dich auch im Detail über rechtliche Regelungen, bevor du Behauptungen aufstellst.

Die Diskussion hatte ich bereits vor ein oder zwei Jahren hier im Forum initiiert. Die Suche wird den Thread sicherlich preisgeben. Da kannst du dann auch die Argumente nachlesen.

Wollte gerade schreiben „vergesst meinen Beitrag“ - mein Fehler war, dass ich das Variantensystem von Shopware 6 nicht verstanden habe (es ist halt doch ganz anders als bei SW5). Ich habe da scheinbar einen „Primärartikel“ von dem dann die Varianten abgeleitet werden. Wenn dieser eine Grundeinheit von „1“ hat, wird auch kein Grundpreis dargestellt. Was lernen ich daraus? Die Hauptvariante oder der „Primärartikel“ sollte den Inhalt der kleinsten Variante aufweisen, dann klappt auch alles. Sorry!