In hóa đơn bằng ngôn ngữ tùy chỉnh khác nhau


7

Tôi có một trang web với nhiều lượt xem cửa hàng cho các ngôn ngữ khác nhau. Tất cả các chế độ xem cửa hàng có cùng một sản phẩm, nhưng sử dụng các ngôn ngữ ngoại vi khác nhau được lưu trữ tại địa phương.

Khi ai đó đặt hàng từ chế độ xem cửa hàng của Đức , Bán hàng => Hóa đơn => (hóa đơn #) => In sẽ in hóa đơn PDF của Đức . Tôi cũng muốn có thể in tất cả các hóa đơn PDF bằng tiếng Anh cho kế toán. Làm thế nào tôi có thể đạt được điều đó?

Câu trả lời:


5

Một số thông tin cho bạn về điều này:

Ngôn ngữ được đặt trong getPdf()phương thức Mage_Sales_Model_Order_Pdf_Invoice. Bạn sẽ thấy rằng miền địa phương và cửa hàng được đặt theo dữ liệu hóa đơn:

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

Những gì bạn có thể làm là mở rộng chức năng này và thêm một nút thứ hai vào quản trị viên phụ trợ luôn tạo hóa đơn tiếng Anh.

Hãy nhận biết rằng emulate()cần một id cửa hàng. Nếu bạn không có cửa hàng tiếng Anh, điều này sẽ không hoạt động.

Trong trường hợp này, bạn có thể cố gắng loại bỏ dòng đầu tiên Mage::app()->getLocale()->emulate($invoice->getStoreId());khỏi phương thức viết lại của mình và cũng hoàn nguyên trở lại Mage::app()->getLocale()->revert();ở cuối hàm để đặt miền địa phương trở lại dòng cuối cùng trước khi mô phỏng.


Đây là một tinh chỉnh nhỏ tôi đã làm, trong trường hợp của tôi, một số cửa hàng có ngôn ngữ khác nhau nhưng hóa đơn phải được phát hành theo ngôn ngữ mà cửa hàng được đặt. đây là cách thiết lập nó: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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.