Servus,
wir würden gerne in unserem Shop sowohl Brutto als auch Netto Preise anzeigen lassen.
Kennt ihr ein Plugin der das übernimmt oder eine Einstellung?
Vielen Dank im Voraus.
So stellen wir uns das vor:
Servus,
wir würden gerne in unserem Shop sowohl Brutto als auch Netto Preise anzeigen lassen.
Kennt ihr ein Plugin der das übernimmt oder eine Einstellung?
Vielen Dank im Voraus.
So stellen wir uns das vor:
Ich hatte bei einem Projekt Nettopreise im Shop und es sollten zusätzlich Bruttopreise angezeigt werden. Sp konnte ich es lösen:
{% sw_extends '@Storefront/storefront/page/product-detail/buy-widget-price.html.twig' %}
{% block page_product_detail_price_content %}
{# SPEZIAL-ANPASSUNG: Berechnung des Bruttopreises anhand des Nettopreises #}
{% set bruttopreis = price.unitPrice * 1.19 %}
{% set listPrice = price.listPrice %}
<p class="product-detail-price{% if listPrice.percentage > 0 %} with-list-price{% endif %}">
{{ price.unitPrice|currency }}{{ "general.star"|trans|sw_sanitize }}
</p>
<span style="padding-bottom: 10px;display: block;"> {{ 'detail.priceGros'|trans }}: {{ bruttopreis|number_format(context.currency.itemRounding.decimals, '.', '') }} € </span>
{% if listPrice.percentage > 0 %}
{% block page_product_detail_was_price %}
{% block page_product_detail_was_price_badge %}
<span class="list-price-badge">%</span>
{% endblock %}
{% set afterListPriceSnippetExists = "listing.afterListPrice"|trans|length > 0 %}
{% set beforeListPriceSnippetExists = "listing.beforeListPrice"|trans|length > 0 %}
{% block page_product_detail_was_price_wrapper %}
<span class="product-detail-list-price-wrapper">
{% if beforeListPriceSnippetExists %}{{"listing.beforeListPrice"|trans|trim}}{% endif %}
<span{% if not (afterListPriceSnippetExists or beforeListPriceSnippetExists) %} class="list-price-price"{% endif %}>{{ listPrice.price|currency }}{{ "general.star"|trans|sw_sanitize }}</span>
{% if afterListPriceSnippetExists %}
{{"listing.afterListPrice"|trans|trim}}
{% endif %}
<span class="list-price-percentage">{{ "detail.listPricePercentage"|trans({'%price%': listPrice.percentage })|sw_sanitize }}</span>
</span>
{% endblock %}
{% endblock %}
{% endif %}
{% endblock %}
Was man noch verbessern könnte wäre das Währungszeichen als Variable einzubinden. Zudem wird hier ein neu angelegter Textbaustein für das Wort Brutto verwendet.
Vielleicht hilft es ja jemanden. Der Tipp kam von hier
Wie machst du das, wenn es Produkte mit 7% und 19% gibt?
Moin,
mit der Berechnung der Preise nachträglich in Twig wäre ich auch vorsichtig, gerade weil du ja die Brutto und Netto-Preise für alle Produkte schon im Backend hast, und diese nur noch anzeigen musst.
Du kannst die Produkt-Box aus dem Listing in deinem eigenen Theme erweitern \views\storefront\component\product\card\box-standard.html.twig
(je nachdem welche Darstellung du in der Einkaufswelt ausgewählt hast, minimaler Inhalt oder wie hier Standard)
Und dann die Preise mit anzeigen mit z.B.:
{% for price in product.purchasePrices.elements %}
Netto:{{ price.net}}<br/>
Brutto:{{ price.gross}}
{% endfor %}
Achtung: das musst du evtl. noch anpassen, wenn du Staffelpreise oder Preise für unterschiedliche Kundengruppen oder do hast!
Viele Grüße
Tom
Kann ich leider noch nicht sagen. Ich sag Bescheid, wenn wir es mal umsetzen.
Wir haben es so gelöst:
{% set calculatedPrice = product.calculatedPrices.last ? product.calculatedPrices.last : product.calculatedPrice %}
{% set taxRule = calculatedPrice.taxRules.first %}
{% set altPricePrefix = product.calculatedPrices|length > 1 ? "detail.priceDataInfoFrom"|trans|sw_sanitize : '' %}
{% if context.taxState == "gross" %}
{% set taxText = "checkout.cartHeaderTaxIncludeVat" | trans | sw_sanitize %}
{% set altPriceLabel = "abettercms.netPrice" | trans | sw_sanitize %}
{% set altPrice = (calculatedPrice.unitPrice/(1 + taxRule.taxRate/100)) | currency %}
{% else %}
{% set taxText = "checkout.cartHeaderTaxExcludeVat"| trans | sw_sanitize %}
{% set altPriceLabel = "abettercms.grossPrice" | trans | sw_sanitize %}
{% set altPrice = (calculatedPrice.unitPrice * (1 + taxRule.taxRate/100)) | currency %}
{% endif %}
Wir dann je nach Kundengruppe der „alternative“ Preis in Netto oder Brutto angezeigt.
Ich hatte den Anspruch, dass zum regulär angezeigten Brutto noch ergänzend und etwas kleiner der Nettopreis angezeigt werden sollte.
Da der Bruttopreis abhängig der Länderauswahl (im Warenkorb möglich) variable ist, musste auch der jeweilige Steuersatz zur Rückrechnung verwendet werden.
Nun danke an die bisherigen Posts hier im Thread. So ist es mir als eigentlich Nicht-Programmierer gelungen nachstehend Code zusammenzubasteln.
Funktioniert und bin happy und vielleicht hilft es auch jemand.
{% block buy_widget_price_content %}
{# Start SPEZIAL-ANPASSUNG: zusätzliche Ausgabe Nettopreis abhängig Land und Steuersatz #}
{# https://forum.shopware.com/t/brutto-netto-preise-gleichzeitig-anzeigen-lassen-plugin/92842/4 #}
{% set calculatedPrice = product.calculatedPrices.last ? product.calculatedPrices.last : product.calculatedPrice %}
{% set taxRule = calculatedPrice.taxRules.first %}
{% set altPricePrefix = product.calculatedPrices|length > 1 ? "detail.priceDataInfoFrom"|trans|sw_sanitize : '' %}
{% set altPrice = (calculatedPrice.unitPrice/(1 + taxRule.taxRate/100)) | currency %}
{# Ende SPEZIAL-ANPASSUNG: zusätzliche Ausgabe Nettopreis abhängig Land und Steuersatz #}
{% set listPrice = price.listPrice %}
{% set isListPrice = price.listPrice.percentage > 0 %}
{% set isRegulationPrice = price.regulationPrice != null %}
<p class="product-detail-price{% if isListPrice %} with-list-price{% endif %}{% if isRegulationPrice %} with-regulation-price{% endif %}">
{{ price.unitPrice|currency }}{{ "general.star"|trans|sw_sanitize }}
</p>
{# Start SPEZIAL-ANPASSUNG: zusätzliche Ausgabe Nettopreis abhängig Land und Steuersatz #}
{% if context.taxState == "gross" %}
<span style="padding-bottom: 5px; display: block; font-size: smaller; font-weight: lighter;"> {{ 'detail.priceGros'|trans }}:
{{ altPrice }} </span>
{% endif %}
{# Ende SPEZIAL-ANPASSUNG: zusätzliche Ausgabe Nettopreis abhängig Land und Steuersatz #}
Bitte beachte, dass das ausgewählte Lieferland im Shopware Standard -nicht- Bestandteil des Schlüssels für den cache ist. Das heißt, dass diese Lösung bei aktiviertem http cache leider nicht funktioniert - zumindest nicht, wenn die Nettopreis sich an der Länderauswahl (und dem damit verbundenen Steuersatz) des Kunden orientieren soll.
Viele Grüße
Ich habe es auf die Kundengruppe „B2B“ geprüft und netto ausgewiesen.
Datei: views/storefront/component/buy-widget/buy-widget-price.html.twig
Ab Zeile: 91
{% set price = page.product.calculatedPrice %}
{% set netPrice = price.unitPrice / (1 + (price.taxRules.first.taxRate / 100)) %}
<p class="product-detail-price">
{% if context.currentCustomerGroup.name == 'B2B' %}
{{ netPrice | currency }}{{ "general.star"|trans|sw_sanitize }}
{% else %}
{{ price.unitPrice | currency }}{{ "general.star"|trans|sw_sanitize }}
{% endif %}
</p>
{% if price.listPrice.percentage > 0 %}
<span class="product-detail-list-price">
{{ price.listPrice.price | currency }}
</span>
{% endif %}