Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen

Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen 4 Jahre 11 Monate her #42

  • NSN
  • NSNs Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 7
  • Dank erhalten: 0
Da ich die Rechnungen, unabhängig von der Adminsprache, auf Englisch brauche habe ich in der Datei HTMLTemplate.php einen kleinen Zusatz eingefügt.
//  INVOICE LANGUAGE ENGLISH (3) or ORDER LANGUAGE ($this->order->id_lang);
        if ( $this->order )
        Context::getContext()->language = new Language(3);
Der ursprüngliche Code aus dem PS Forum war dafür gedacht das im BO die Rechnungen in der Sprache des Kunden erzeugt wird und ich habe es einfach etwas abgeändert damit ich es immer auf Englisch habe. Nun kriegt der Kunde zwar auch immer eine Englische Rechnung  was zwar nicht optimal ist aber es ist vertretbar.

Was bei diesem Code nicht in Englisch auf der Rechnung erscheint sind die Artikelnamen und die Adresse. Da die Artikelnummern aber unabhängig von der Sprache immer gleich sind sind die Artikelnamen in der Bestellsprache nicht so schlimm.
Die Adresse, also das Land, wäre mir zwar lieber in Englisch aber mangels alternativen ist auch das akzeptabel.

Komischerweise habe ich gerade folgendes festgestellt. Wenn ein Kunde eine Bestellung tätigt welche aufgrund verschiedener Versanddienste von PS auf zwei Bestellungen geteilt wird (unterschiedliche Bestell-ID, aber gleiche Bestell-Referenz mit der Erweiterung #1 bzw. #2) erscheint der Ländername auf der zuerst generierten Bestellung (Bild Nr. 27) in der Bestellsprache und bei der im Anschluss generierten Bestellung (Bild Nr. 28) in Englisch.
Wenn ich die oben geschrieben Code-Erweiterung entferne erhalte ich die Rechnungen wieder in der Adminsprache (Deutsch), aber das Phänomen dass der Ländername in der zweiten Bestellung auf Englisch kommt bleibt bestehen.

Hat zufällig jemand eine Idee wie ich das hinbekomme dass es entweder einheitlich angezeigt wird. Wenn jemand ne Idee hat wie ich es hinbekomme dass die Rechnungen für den Kunden in der Bestellsprache sind und die im BO immer auf Englisch dann wäre das natürlich der Hit.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen 4 Jahre 10 Monate her #43

Hi,
entschuldige bitte, dass ich so spät darauf antworte, aber ich hatte deinen Post zuerst übersehen und dann zunächst auch keinen Rat gewusst. Ich habe es nicht ausprobiert, aber mir ist aufgefallen, dass bei der Generierung der Adressen vermutlich eine Zeile im Quellcode fehlt, und zwar in der  /classes/pdf/HTMLTemplateInvoice.php

Versuch es doch mal mit dieser Erweiterung in der Funktion getContent() [ca. Zeile 155]

 public function getContent()
{
  $invoiceAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_INVOICE_ADDR_RULES'), true);
  $deliveryAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_DELIVERY_ADDR_RULES'), true);
  $invoice_address = new Address((int)$this->order->id_address_invoice);
  $country = new Country((int)$invoice_address->id_country);
  $formatted_invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '
', ' ');
  $delivery_address = null;
  $formatted_delivery_address = '';
  if (isset($this->order->id_address_delivery) && $this->order->id_address_delivery) {
$delivery_address = new Address((int)$this->order->id_address_delivery);
                              $country = new Country((int)$delivery_address->id_country);
$formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '
', ' ');
  }

Vielleicht klappt es ja so. Aber viel Hoffnung habe ich nicht, denn dieser Programmteil ist eigentlich ziemlich vermurkst. In manchen 1.6-Versionen funktioniert auch dein Zusatz nicht. Nur in 1.5 klappt es ohne Probleme auf diese Weise.
Folgende Benutzer bedankten sich: NSN

Bitte Anmelden um der Konversation beizutreten.

Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen 4 Jahre 10 Monate her #44

  • NSN
  • NSNs Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 7
  • Dank erhalten: 0
Hallo eleazar,

kein Grund dich zu entschuldigen. Im Gegenteil, es freut mich wieder mal was von dir zu lesen.
Ich werde den Code ausprobieren sobald ich Zeit habe und dann das Ergebnis posten.
Falles es klappt, perfekt, falls nicht, auch nicht schlimm. Ich habe mittlerweile eine Liste angefertigt in dem alle Ländernamen auf Deutsch, Englisch und Japanisch stehen. Es gibt ja auch genug Beamte in Japan die auch die Englischen Ländernamen nicht kennen (Da wird dann aus Switzerland auch schon mal Swasiland da die Schweiz in Japan als Swiss gehandhabt wird und bei Netherlands finden sie nichts passendes)

Grüße
Stefan

Bitte Anmelden um der Konversation beizutreten.

Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen 4 Jahre 10 Monate her #45

  • NSN
  • NSNs Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 7
  • Dank erhalten: 0
Danke eleazar,

Der die Erweiterung des codes hat zwar keinen Erfolg gehabt, aber durch deinen Goldwerten Hinweis habe ich das Problem gelöst.
In meiner Datei sind nämlich Zeilen die es bei deinem nicht gibt und wenn die weg sind kommt genau das gewünschte Ergebnis.

    public function getContent()
    {
        $invoiceAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_INVOICE_ADDR_RULES'), true);
        $deliveryAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_DELIVERY_ADDR_RULES'), true);

        $invoice_address = new Address((int)$this->order->id_address_invoice);
        $country = new Country((int)$invoice_address->id_country);

        if ($this->order_invoice->invoice_address) {
            $formatted_invoice_address = $this->order_invoice->invoice_address;
        } else {

            $formatted_invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '<br />', ' ');
        }

        $delivery_address = null;
        $formatted_delivery_address = '';
        if (isset($this->order->id_address_delivery) && $this->order->id_address_delivery) {
            if ($this->order_invoice->delivery_address) {
                $formatted_delivery_address = $this->order_invoice->delivery_address;
            } else {

                $delivery_address = new Address((int)$this->order->id_address_delivery);
                $formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' ');
            }
        }

Bitte Anmelden um der Konversation beizutreten.

Rechnungs PDF - Land bei Adresse in unterschiedlichen Sprachen 4 Jahre 10 Monate her #46

Ach, diese Version hast du! Na, dann ist mir alles klar.
Das war mir ja schon völlig entfallen, dass das Prestashop-Team irgendwann mal auf die Schnapsidee kam, die Adressen komplett in einem Datenbankfeld zu speichern. Ich hatte das damals moniert und einen Bugfix geschrieben:
github.com/PrestaShop/PrestaShop/pull/4540

Egal, es läuft also jetzt korrekt. Freut mich, dass ich helfen konnte.

Viele Grüße nach Japan
eleazar

Bitte Anmelden um der Konversation beizutreten.

Letzte Änderung: von eleazar.
  • Seite:
  • 1
Ladezeit der Seite: 0.186 Sekunden

Neueste Beiträge

K2 User

uddeIM Mailbox

Sie sind nicht eingeloggt.