Rechnungslayout seit 6.15.1 anders/Custom Template Manager Anpassung wird ignoriert

Hallo zusammen,

ich habe gerade ein echtes Problem und stehe kurz davor, auf 6.4.14.0 zurückzugehen. Gestern vor dem Update auf 6.4.15 und 6.4.15.1 habe ich die Kompatibilität per Staging überprüft und alles Übliche hat funktioniert. Leider habe ich dabei nicht ausprobiert, ob auch Rechnungen wie erwartet generiert werden. Nun stehe ich vor dem Problem, dass einerseits meine Änderungen über den Custom Template Manager in Rechnungen komplett ignoriert werden und andererseits zum Beispiel auch das Datum nicht mehr wie gewohnt dd.mm.yyyy sondern mehr nach ISO yyyy/mm/dd in der Rechnung angezeigt wird.

Ich hab euch einmal ein Vergleich der verschiedenen Layouts angehängt.

Vor den Updates habe ich natürlich in die Changelogs geschaut, da aber nicht per se was auffälliges bezüglich Dokumententemplates gefunden.
Für jeden Tipp, wie ich das ohne Rollback wieder beheben/anpassen kann, bin ich dankbar.

Die Dokumente wurden ja mit Shopware 6.4.15.0 überarbeitet und auch die Doku diesbezüglich wurde anscheinend angepasst:

Jo, in den Dokumenteneinstellungen war ich auch schon, hab aber nichts Relevantes gefunden. Ich hab in den docs aber nichts dazu gefunden, dass Templates jetzt anderweitig angepasst werden - hab ich da eventuell was übersehen? Und erklären würde das meiner Meinung nach die andere Darstellung von Datum und außerdem Briefanrede auch nicht (ursprünglich war im Header nur Vorname Nachname des Kunden, seit Update stand dann da „Sehr geehrte Frau…“ - hab ich durch die Anredeeinstellungen auf „Frau“ angepasst, aber am liebsten wäre es uns doch wieder wie vorher). Zudem ist die Angabe „inkl. UST“ unter Stückpreis und Gesamt für uns als Kleinunternehmer natürlich kontraproduktiv.

Ich habe es gerade mit einer einfachen Anpassung auf 6.4.15.1 durchgespielt und die wurde sowohl bei der Generierung über eine Aktion im Flow Builder, als auch bei der manuellen Generierung einer Rechnung in der Administration übernommen:

{% sw_extends '@Framework/documents/invoice.html.twig' %}

{% block document_side_info %}
    <div>Hello world!</div>
    {{ parent() }}
{% endblock %}

Ist natürlich jetzt nicht sonderlich hilfreich, aber zeigt zumindest, dass es wie gehabt funktionieren sollte. Wenn nicht schon geschehen, eventuell mal versuchen den Cache zu manuell zu leeren. Eine Änderung am Template im Plugin sollte den Cache ebenfalls leeren.

Hallo, das betrifft mich auch,

wenn Nettopreise ausgegeben werden! Ich habe schon versucht die Stelle im Templete zu finden, das ist mir leider bisher noch nicht gelungen.

Steffen Winde

Danke fürs Prüfen. Den Cache hatte ich schon zigmal geleert, ist ja schließlich oft auch die Lösung ^^ Hier aber leider nicht. Ich bin aber jetzt die ganze Zeit am Probieren und hab schon folgendes rausgefunden: Bisher hatte ich die Templates wie in den Hinweisen angegeben über die base.html.twig erweitert, das scheint aber jetzt nicht mehr zu funktionieren. Änderungen werden nur noch angenommen, wenn ich direkt das invoice-template erweitere. Ich weiß aber nicht, ob das eventuell ein Fehler ist oder gewollt ist, denn die Hinweise sind ja gleich geblieben.

Notice for plugins and theme developer: Do not extend this template!
This template will be rendered over the block function.
Templates which are rendered over the block function can not be extended.
Instead of extending this template, simply extend the **base.html.twig (or the document specific template)** and override the block you want.
All blocks of this template are available in the template which renders this template over the block function.

Die Stelle befindet sich meiner Meinung nach in position_header.html.twig. Ich habe wie folgt über invoice.html.twig geändert:

{% sw_extends '@Framework/documents/invoice.html.twig' %}

{% block document_line_item_table_head_unit_price %}
    <th class="numbers incl-vat">
        {{ 'document.lineItems.header.unitPrice'|trans|sw_sanitize }}
    </th>
{% endblock %}
{% block document_line_item_table_head_total_price %}
    <th class="numbers incl-vat">
        {{ 'document.lineItems.header.total'|trans|sw_sanitize }}
    </th>
{% endblock %}

Dadurch ist bei mir das inkl. UST weg.

1 „Gefällt mir“

Danke das hat geholfen!

PS: Das gleiche muss auch bei den anderen Dokumenten gemacht werden.

Also ich gehe wirklich davon aus, dass das Erweitern über die base.html.twig nicht (mehr) funktioniert. Hab jetzt alles über die Dokumententypen (invoice.html.twig usw.) selbst erweitert und das funktioniert. Jetzt ist wieder alles halbwegs hergestellt. Nur beim Datum finde ich komisch, dass da bei mir anscheinend nicht die Spracheinstellung des Verkaufskanals berücksichtigt wird. Aber was solls. Hab kurzerhand aus

{% block document_side_info_date %}
    <tr>
        <td>
            {{ 'document.date'|trans({'%date%': config.documentDate|format_date(pattern="Y/MM/dd", locale=locale)})|sw_sanitize }}
        </td>
    </tr>
{% endblock %}

einfach

{% block document_side_info_date %}
    <tr>
        <td>
            {{ 'document.date'|trans({'%date%': config.documentDate|format_date(pattern="dd.MM.Y", locale=locale)})|sw_sanitize }}
        </td>
    </tr>
{% endblock %}

gemacht.

Bei mir hat das mit diesem Code-Schnipsel in einer views/documents/base.html.twig in meiner Extension gut funktioniert:

{% sw_extends '@Framework/documents/base.html.twig' %}

{# rm anrede #}
{% block document_recipient %}
    {# @deprecated tag:v6.5.0 - Will be removed #}
    {% block document_recipient_sender %}{% endblock %}

    {% if billingAddress.company %}
        {{ billingAddress.company }}<br>
    {% endif %}
    {% if customer.customer.vatIds and billingAddress.country.companyTax.getEnabled and config.displayAdditionalNoteDelivery and billingAddress.country.id in config.deliveryCountries %}
        {{ 'document.vatId'|trans({'%vatId%': customer.customer.vatIds|first})|sw_sanitize }}<br>
    {% endif %}
    {{ billingAddress.firstName }} {{ billingAddress.lastName }}<br>
    {{ billingAddress.street }}<br>
    {% if billingAddress.additionalAddressLine1 %}
        {{ billingAddress.additionalAddressLine1 }}<br>
    {% endif %}
    {% if billingAddress.additionalAddressLine2 %}
        {{ billingAddress.additionalAddressLine2 }}<br>
    {% endif %}
    {{ billingAddress.zipcode }} {{ billingAddress.city }}<br>
    {{ billingAddress.country.name }}<br>
{% endblock %}

{# fix date format #}
{% block document_side_info_order_date %}
    <tr>
        <td>
            {{ 'document.orderDate'|trans({'%orderDate%': order.orderDateTime|format_date(pattern="dd.MM.Y", locale=locale)})|sw_sanitize }}
        </td>
    </tr>
{% endblock %}

{# fix date format #}
{% block document_side_info_date %}
    <tr>
        <td>
            {{ 'document.date'|trans({'%date%': config.documentDate|format_date(pattern="dd.MM.Y", locale=locale)})|sw_sanitize }}
        </td>
    </tr>
{% endblock %}

{# fix line break in sum #}
{% block document_sum_total_price %}
    <td class="align-right" style="white-space: nowrap;">{{ order.price.totalPrice|currency(currencyIsoCode) }}</td>
{% endblock %}