Jump to content
herrweberr

[GELÖST] PDF Rechnung: Text anzeigen, basierend auf Rechnungsland

Recommended Posts

Hallo zusammen,

in unserem Shop müssen, basierend auf dem Land des Käufers, Hinweistexte in der PDF erscheinen.

Unter PS 1.6 konnte ich in der PDF mit bspw.

{if $address->id_country == 19}

das Land abfragen und entsprechend einen Text-Hinweis ausgeben. Leider funktioniert dies anscheinend nicht mehr in PS 1.7 und ich finde keine Möglichkeit an die Info zu kommen.

Kann hier jemand weiterhelfen, wie ich in der Rechnungs-PDF an die id_country komme?

Vielen Dank und mit besten Grüßen,

Tim

Edited by herrweberr (see edit history)

Share this post


Link to post
Share on other sites
13 hours ago, Wuschel said:

Schau mal hier: https://catalogo-onlinersi.net/en/content/33-prestashop-17-global-variables

Ausprobiert habe ich es nicht. Ich setze 1.7 nicht ein.

Vielen Dank. Leider bin ich die schon durchgegangen und anscheinend gibt es

$customer.addresses[]

nicht.

Ich habe es bis jetzt über $customer und $order (und andere globale Smarty Variablen) versucht, leider immer ohne Erfolg.

Edited by herrweberr (see edit history)

Share this post


Link to post
Share on other sites

Smarty ist ein Auslaufmodell bei 1.7. Wenn du weiterhin mit Smarty-Varaiblen arbeiten willst, dann ist Presta 1.7 sicher nicht zielführend.

Share this post


Link to post
Share on other sites
2 minutes ago, Wuschel said:

Smarty ist ein Auslaufmodell bei 1.7. Wenn du weiterhin mit Smarty-Varaiblen arbeiten willst, dann ist Presta 1.7 sicher nicht zielführend.

Das ist mir tatsächlich egal. Ich benötige nur irgendeine Möglichkeit, irgendwie das Land abzufragen und entsprechend einen Text auszugeben.
Smarty war bei 1.6 das Mittel, wie ich es umgesetzt habe, jetzt bei 1.7 bin ich offen für alles.

Falls hier also jemand einen Hinweis hat, wie ich dafür in der Rechnungs-PDF an die country ID komme, wäre ich sehr dankbar!

Share this post


Link to post
Share on other sites

In der Rechnung wird doch als Teil der Rechnungsadresse das Land ausgegeben, darauf müßtest du doch zugreifen können.

Share this post


Link to post
Share on other sites
8 hours ago, rictools said:

In der Rechnung wird doch als Teil der Rechnungsadresse das Land ausgegeben, darauf müßtest du doch zugreifen können.

Danke für den Hinweis. Die Adresse wird im in invoice.addresses-tab.tpl allerdings als {$invoice_address} ausgegeben. Hierbei handelt es sich aber um einen fertigen und zusammengesetzten String (Anrede, name, Adresse etc.). Ich müsste dann den String umständlich auseinandernehmen und dann Strings vergleichen. Kann man machen, ist aber noch unschöner und unflexibler als alles andere - und ist sicherlich fehleranfälliger als mit einer ID zu arbeiten.

Edited by herrweberr (see edit history)

Share this post


Link to post
Share on other sites

Du mußt den String nicht unbedingt auseinandernehmen, ich würde erst einmal feststellen, ob sich das Land immer am Ende befindet oder ob da noch etwas kommt wie die Telefonnummer, jedenfalls kannst du per Funktion feststellen, ob sich ein bestimmter Teilstring in dem String befindet.

Ansonsten muß wahrscheinlich eine Variable für das Land als Klarname oder ID erst in einer php-Datei definiert werden, ist aber auch keine Zauberei.

Share this post


Link to post
Share on other sites
14 minutes ago, rictools said:

Ansonsten muß wahrscheinlich eine Variable für das Land als Klarname oder ID erst in einer php-Datei definiert werden, ist aber auch keine Zauberei.

Der Weg wirkt für mich besser. Kannst du mir hier ein Beispiel geben, in welcher Datei ich die ID als Variable deklarieren muss, damit sie in den PDF-Templates verfügbar ist? Das würde mir sehr weiterhelfen und ich komme zum Ziel. Danke schonmal im Voraus!

Share this post


Link to post
Share on other sites

Ich verwende 1.7 nicht. Da sollte sich aber eigentlich über Google was finden lassen.

Share this post


Link to post
Share on other sites

Danke. Hat mich in die richtige Richtung geführt.

Lösung:

/classes/pdf/HTMLTemplateInvoice.php , Zeile 329

Dem $data Array entsprechend die gewünschte Variable zuweisen (bspw. 'invoice_country_id'):

$data = array(
    'order' => $this->order,
    'order_invoice' => $this->order_invoice,
    'order_details' => $order_details,
    'carrier' => $carrier,
    'cart_rules' => $cart_rules,
    'delivery_address' => $formatted_delivery_address,
    'invoice_address' => $formatted_invoice_address,
    'addresses' => array('invoice' => $invoice_address, 'delivery' => $delivery_address),
    'tax_excluded_display' => $tax_excluded_display,
    'display_product_images' => $display_product_images,
    'layout' => $layout,
    'tax_tab' => $this->getTaxTabContent(),
    'customer' => $customer,
    'footer' => $footer,
    'ps_price_compute_precision' => _PS_PRICE_COMPUTE_PRECISION_,
    'round_type' => $round_type,
    'legal_free_text' => $legal_free_text,
    'invoice_country_id' => $invoice_address->id_country,
);

Danach entsprechend {invoice_country_id} im Template nutzen.

Danke und beste Grüße

Share this post


Link to post
Share on other sites
Just now, SliderFlash said:

wen du prestashop aktualisierst wird es überschrieben.

Kann ich es "Update-Sicher" machen im Child-Theme?

Share this post


Link to post
Share on other sites

mit Child-Theme kannst du dein Template schützen aber nicht das grundprogramm system ist php

du kannst dir die anpassungen Notizen machen und nach Aktualisierung wider ändern.

Edited by SliderFlash (see edit history)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More