Dokumente mit eigenen Briefpapier?

Dokumente mit eigenen Briefpapier, ein weitere Hürde in SW6.

In SW5 konnte man das über das Template lösen. Ein Bild wurde dabei als Hintergrund eingebunden. Welche Möglichkeiten gibt es in SW6?

Wir sind gerade dabei ein Plugin zu entwickeln, um eine PDF-Vorlage als Hintergrund zu verwenden. Zudem dann bestimmte Einstellungen noch konfigurierbar: Ränder, Footer ausblenden, Position Anschrift und Header rechts, etc.

Verstehe nicht, warum das in einem zeitgemäßen SW6 genrell nicht möglich ist. In SW5 konnte man auch die Positionen anpassen, wurde auch abgeschafft. Wie soll man das einem Kunden erklären der für viel Geld einen Shopware-Plan gebucht hat. Jetzt gibt es wohl nur noch starre Funktionen. Keine Ahnung wie die Masse ihre Shops betreiben, vermutlich alles 0-8-15, aber wir legen großen Wert auch auf solche Dinge.

Die von Shopware auserkorene Zielgruppe wird wohl keinen Shop ohne Warenwirtschaft/ERP betreiben. Von daher werden diese Funktionen wohl nicht mehr als priorisiert betrachtet. Kann man mögen, muss man nicht. Sollte man aber verstehen, einkalkulieren und akzeptieren.

Wenn deine Kunden Shopware mit einem Plan buchen, sollten auch die Ressourcen für eine Wawi mit ordentlicher Anbindung vorhanden sein. Wenn nicht sollte ein Plan völlig überdimensioniert und die CE ausreichend sein.

Und für das gesparte Geld für die Pläne können diese Funktionen dazuentwickelt und/oder gekauft/gemietet werden.

#justmy2cents

Tja, nun ist es so, dass der Kunde das wünscht, wie in seinem alten SW5 Shop und eine Lösung gefunden werden muss.

Hier ist beschrieben wie über das eigene Theme / Plugin die Dokumententemplates angepasst werden können. Das sollte der korrekte Ansatz sein.

2 Likes

Ah Mensch, habe das mit dem Ordner „Framework“ übersehen. Alles klar :slight_smile:

Hier müsste es eine HTML-Vorschau geben. Das Hintergrundbild beginnt irgendwo, leider nicht oben links.

Beim Testen fällt mir eben auf, dass das PDF einen großen Abstand zu allen Seiten hat. Die blaue Linie zeigt den HTML Body-Tag. Für Hintergrundbilder mit Briefpapier natürlich etwas ungünstig. Hat sich damit jemand schon mal befasst?

Weiterhin ist mir aufgefallen, wenn ich per CSS

body { position: absolute; }

einstelle, geht die PDF Generierung bei der Vorschau gar nicht mehr. Auch ein extra DIV mit „position: absolute“ löst nicht das Problem.

schau mal in die Datei „style_base_portrait.css.twig“

/*Page */
@page {
  margin-top: 200px;
}

das sollte der Rand oben sein …

[shopware_root]/vendor/shopware/core/Framework/Resources/views/documents/style_base_portrait.css.twig

Leider ist es nicht so einfach, aber ich habe eine Lösung gefunden damit das Hintergrundbild wirklich über die ganze Fläche geht. Jetzt muss ich nur schauen, warum das Bild mit 300dpi dennoch unschraf aussieht. Wir nähern uns langsam dem Ziel.

ich vermute mal das ist ein PNG ? Probier mal ein JPEG oder besser noch ein „inline“ SVG.

Bezüglich der Qualität haben wir bewusst PNG als JPEG vorgezogen. Ist aber bei beiden Formaten schlecht (schon ausprobiert).

Jetzt mal zwischen JPEG und PNG probiert. Bei PNG geht nun plötzlich gar keine Vorschau mehr. Im Log steht dann:

{
  "url": ".../admin#/sw/order/detail/8fbc96c9c1834e609b8f4b8feda6ef82/base?limit=25&page=1&term=&sortBy&sortDirection=ASC&naturalSorting=false",
  "stack": "oJGZ/</u/<@.../bundles/administration/static/js/commons.js?1683271887280716:2:245465\n",
  "component": "Unknown component"
}

Sorry, aber das ist ganz schöner Scheiß hier.

Ich habe in meinem Child-Theme folgende zwei Dateien angepasst

/custom/plugins/ChildTheme/src/Resources/views/documents/style_base_landscape.css.twig
/custom/plugins/ChildTheme/src/Resources/views/documents/style_base_portrait.css.twig

je nach Datei habe ich dann das entsprechende sw_extends eingebunden.

{% sw_extends '@Framework/documents/style_base_landscape.css.twig' %}
{% block document_style %}
{{ parent() }}

.document-page {
    background-image: url('@ChildTheme/images/ganesh_briefpapier.png');
    background-size: cover;
    background-repeat: no-repeat;
    background-color: red;
}
{% endblock %}

Bei mir wird aber die CSS nicht verwendet. Was mache ich falsch?

Du hast <style> vergessen. Den Pfad würde ich ggf. komplett schreiben.

Achsooo, ich dachte, dass alles was außerhalb des Blocks liegt, eh nicht verwendet werden kann. Jetzt hat sich zumindest etwas getan, aber leider auch nur das, was du auch schon gesagt hast.
Dass wenn „.document-page“ absolut gesetzt ist - was ich aber nicht absolut gesetzt habe - keine Vorschau mehr bei Klick auf „Vorschau“ mehr generiert werden kann.
Hast du es denn ansonsten genau wie ich gemacht?

Also wie hier?:

{% sw_extends '@Framework/documents/style_base_landscape.css.twig' %}
<style type="text/css">
    {% block document_style %}
    {{ parent() }}
 
    .document-page {
        background-image: url('@ChildTheme/images/ganesh_briefpapier.png');
        background-size: cover;
        background-repeat: no-repeat;
        background-color: red;
    }
    {% endblock %}
</style>

Nein, so:

<style>
.document-page {
        background-image: url('@ChildTheme/images/ganesh_briefpapier.png');
        background-size: cover;
        background-repeat: no-repeat;
        background-color: red;
    }
</style>

Nicht um den Block :slight_smile:

Jetzt funktioniert zwar wieder die Vorschau, jedoch werden die Änderungen nicht angezeigt :confused:
Da kann man wirklich nur verzweifeln. Und wenn ich ein dump machen möchte funktioniert dies auch nicht. Egal ob ich {{ dump() }} oder {% dump () %} schreibe und natürlich in der .env-Datei APP_ENV auf dev gesetzt habe.

Es hat nun wie folgt geklappt

{% sw_extends '@Framework/documents/style_base_portrait.css.twig' %}

{% block document_style %}
    {{ parent() }}

    .line-item-table-header.newHeight > th {
        padding-bottom: 40px;
    }

    body {
        background-color: red;
        background-image: url('{{ asset('bundles/childtheme/images/ganesh_briefpapier.jpg') }}');
        background-size: cover;
        background-repeat: no-repeat;
    }
{% endblock %}

Wichtig zu wissen ist, dass wenn man Bilder als assets einbinden möchte, dass man nachdem diese in dem public-Ordner enthalten sind in der Konsole folgendes schreibt

bin/console assets:install

Allerdings musste ich das Style.Tag entfernen, da er sonst auf das parent() keine Rücksicht genommen hätte. Habe diese Änderung auch nur in der style_base_portrait.css.twig gemacht.

Was aber nicht klappt ist, dass das Hintergrundbild über die komplette Seite geht. Es beginnt erst ab dem Adressblock und links und rechts ist viel zu viel Space