Jump to content

Rechnung, Adresse in Header von PDF


Recommended Posts

Habe gerade das invoice.tpl für die Erzeugung der Rechnung geändert und habe dabei ein (gestalterisches) Problem.
Auf der Rechnung gibt es die Adresse des Shops nur unten im Footer.
Ich hätte es gerne auch im Header (oder nur im Header).

Leider funktioniert es nicht, die Felder aus dem Footer zu übernehmen resp. nur teilweise.

Das folgende Feld funktioniert:
{$shop_details|escape:'html':'UTF-8'}
und spuckt mir die HRB Nummer aus - soweit so gut.

Das folgende Feld funktioniert definitiv nicht (kein Schreibfehler, kopiert aus dem Footer mit Copy&Paste):
{$shop_address|escape:'html':'UTF-8'}
und spuckt bei mir im Header nichts aus.

Ich kann jetzt behelfsweise die Adresse hart in das Formular eintippen (was auch funktioniert) schöner wäre es aber die Angabe aus dem Shop System zu übernehmen, auch weil man es nicht vergisst wenn sich was ändert. Im Footer funktioniert es ja. Offenbar fehlt irgendwo der Kontext, mir ist aber nicht klar wo genau. Möglicherweise ein Hook aber ich habe nichts dazu gefunden (wobei ich damit aber auch nicht besonders gut vertraut bin).

Mercy für hilfreiche Hinweise.

Link to comment
Share on other sites

Danke. Habe heute mal geschaut. 

Die Änderungen sind zu machen einerseits im Template, hier den Header neben Logo um Adresse und rechtliche Infos (wie Registernummer, UST ID, etc) ergänzt.

pdf/header.tpl

    <td style="width: 30%">
        {if $logo_path}
            <img src="{$logo_path}"/>
        {/if}
    </td>
    <td style="width: 2%"></td>
    <td style="width: 30%; font-size: 8pt;">{$shop_address}<br/>{$shop_email}</td>
    <td style="width: 2%"></td>
    <td style="width: 16%; font-size: 8pt;">
        Register:<br/>{$shop_details}
    </td>
    <td style="width: 20%; text-align: right;">
        <table style="width: 100%">
            <tr>
                <td style="font-weight: bold; font-size: 10pt; color: #444; width: 100%;">{if isset($header)}{$header|escape:'html':'UTF-8'|upper}{/if}</td>
            </tr>
            <tr>
                <td style="font-size: 10pt; color: #9E9F9E">{$date|escape:'html':'UTF-8'}</td>
            </tr>
            <tr>
                <td style="font-size: 10pt; color: #9E9F9E">{$title|escape:'html':'UTF-8'}</td>
            </tr>
        </table>
    </td>

Kommt recht nice rüber.
Dazu den php Controller angeändert:

classes/pdf/HTMLTemplate.php
Funktion assignCommonHeaderData()

    public function assignCommonHeaderData()
    {
        $this->setShopId();
        $id_shop = (int) $this->shop->id;
        $shop_name = Configuration::get('PS_SHOP_NAME', null, null, $id_shop);

        $shop_address_obj = $this->shop->getAddress();
        $shop_address = AddressFormat::generateAddress($shop_address_obj, [], '<br />', ' ');
        
        $logo = $this->getLogo();

        $width = 0;
        $height = 0;
        if (!empty($logo)) {
            list($width, $height) = getimagesize(_PS_IMG_DIR_ . $logo);
        }

        // Limit the height of the logo for the PDF render
        $maximum_height = 100;
        if ($height > $maximum_height) {
            $ratio = $maximum_height / $height;
            $height *= $ratio;
            $width *= $ratio;
        }

        $this->smarty->assign([
            'logo_path' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_ . $logo,
            'img_ps_dir' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_,
            'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
            'date' => $this->date,
            'title' => $this->title,
            'shop_name' => $shop_name,
            'shop_address' => $shop_address,
            'shop_email' => Configuration::get('PS_SHOP_EMAIL', null, null, (int) $id_shop),
            'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int) $id_shop),
            'width_logo' => $width,
            'height_logo' => $height,
        ]);
    }

Mir ist klar, dass die Änderungen durch Updates überschrieben werden können, aber automatische Updates habe ich bei Prestashop als Erstes abgestellt, nachdem meine custom.css durch eine leere custom.css überschrieben wurde. Wie sinnvoll man das auch immer finden mag. Gibt aber noch mehr (EU-rechtskonforme) Änderungen oder Erweiterungen bei mir.

Vielleicht kann das ja jemand brauchen. 

Link to comment
Share on other sites

Was mir noch nicht ganz gefällt, ist die Tatsache, dass die Adresse immer mit "Germany" als Land ausgegeben wird. Man hat ja unter Kontakt im Shop auch nur so die Möglichkeit das Land auszuwählen. Auf deutschen Rechnungen wäre als Land "Deutschland" eigentlich passender. Falls dazu noch jemand eine praktikable Idee hat ... steht übrigens auch Germany unter deutscher Liefer- oder Rechnungsadresse auf deutscher Rechnung.

Ja ich weiss, ist Jammern auf hohem Niveau. 😃

Edited by dauerfrager (see edit history)
Link to comment
Share on other sites

Germany steht schon so in der Auswahlliste des Landes im Backoffice für den Shop Kontakt.
Übersetzung habe ich jetzt nicht explizit eingebaut (hättest Du ein Beispiel für die controller.php ?).

Aber zumindest wird im Standard Rechnungsformular auch immer die Adresse mit Land angezeigt und auch nicht übersetzt. An der Stelle habe ich definitiv nichts geändert. Auch wenn das Rechnungsformular deutsch ist.

Link to comment
Share on other sites

  • 1 month later...

Habs mir in Verbindung mit dem S_p_r_a_c_h_e_n Problem bei den Rechnungen nochmal angeschaut. Ja man kann das Land übersetzen, stand auf EN und DE Germany. Jetzt zeigt es Deutschland. Danke für den Hinweis. Habe auch eine Lösung für Rechnungen auf Deutsch und Englisch aber da ich das böse Wort verwendet habe, wird es (noch ?) nicht angezeigt.

Edited by dauerfrager (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...