Drucken der Rechnung in einer anderen benutzerdefinierten Sprache

7

Ich habe eine Website mit mehreren Store-Ansichten für verschiedene Sprachen. Alle Geschäftsansichten haben dieselben Produkte, verwenden jedoch unterschiedliche Front-End-Sprachen, die im Gebietsschema gespeichert sind.

Wenn jemand aus der deutschen Filialansicht bestellt , druckt Sales => Rechnungen => (Rechnungsnummer) => Drucken eine deutsche PDF-Rechnung . Ich möchte auch alle PDF-Rechnungen in englischer Sprache für die Buchhaltung drucken können . Wie kann ich das erreichen?

Daew
quelle

Antworten:

5

Einige Informationen für Sie dazu:

Die Sprache wird in der getPdf()Methode von eingestellt Mage_Sales_Model_Order_Pdf_Invoice. Sie werden sehen, dass das Gebietsschema und der Speicher gemäß den Rechnungsdaten festgelegt sind:

Mage::app()->getLocale()->emulate($invoice->getStoreId());
Mage::app()->setCurrentStore($invoice->getStoreId());

Sie können diese Funktionalität erweitern und Ihrem Admin-Backend möglicherweise eine zweite Schaltfläche hinzufügen, die immer die englische Rechnung generiert.

Beachten Sie, dass emulate()eine Geschäfts-ID erforderlich ist. Wenn Sie keinen englischen Laden haben, funktioniert dies nicht.

In diesem Fall könnten Sie versuchen, die erste Zeile Mage::app()->getLocale()->emulate($invoice->getStoreId());aus Ihrer umgeschriebenen Methode zu entfernen und auch das Zurücksetzen Mage::app()->getLocale()->revert();am Ende der Funktion, wodurch das Gebietsschema vor der Emulation auf die letzte zurückgesetzt wird.

Anna Völkl
quelle
Hier ist eine kleine Änderung, die ich vorgenommen habe. In meinem Fall hatten einige Geschäfte unterschiedliche Sprachen, aber die Rechnung musste in der Sprache ausgestellt werden, in der sich das Geschäft befand. Hier ist, wie es eingerichtet wird:switch ($invoice->getStoreId()){case 1: $langcode=1; break; case 2: $langcode=1; break; case 3: $langcode=1; break; case 4: $langcode=5; break; } if ($invoice->getStoreId()) { Mage::app()->getLocale()->emulate($langcode);Mage::app()->setCurrentStore($langcode); }
Andras