Jump to content

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


herrweberr

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)
Link to comment
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)
Link to comment
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!

Link to comment
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)
Link to comment
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.

Link to comment
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!

Link to comment
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

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...