2

ここ数日、例を探していて、自分でやろうとしてきましたが、次のことに行き詰まっています。

Magento 1.7.0.2 を使用しています。請求書の生成時に、請求書 PDF を添付ファイルとしてトランザクション E メールに追加したいと考えています。

/Mage/Sales/Model/Order/Invoice.php、/Mage/Core/Model/Email/Template.php、/Mage/Core/Model/Email/Template/Mailer.php の変更など、いくつかのことを試しました。

どのファイルがプロセスに関与しているか、添付ファイルを追加する場所はわかっていますが、実際に PDF を生成して電子メールに添付する方法がわかりません。

また、メールの生成方法が magento 1.7.0.0 で変更されたようで、すべての説明は 1.6.x のものです。

また、いくつかの拡張機能 (FOOMAN など) があることも認識していますが、自分でファイルを変更することを好みます (できるだけ拡張機能をインストールから削除したいと考えています)。

4

2 に答える 2

3

数時間オンラインで検索しましたが、解決策は古いバージョンの Magento 用でした。私のバージョンは 1.7.0.2 です。また、Magento がメールを処理する方法が変更されました。これを行う手順は次のとおりです。お役に立てば幸いです。

1) app/code/core/Mage/Core/Model/Email/Template/Mailer.php を変更

Part 1, add protected $emailTemplate; to the top of the class:

class Mage_Core_Model_Email_Template_Mailer extends Varien_Object
{
/**
* List of email infos
* @see Mage_Core_Model_Email_Info
*
* @var array
*/
protected $_emailInfos = array();

// Add the following one line

protected $emailTemplate;

パート 2 send() 関数の更新

public function send()
{

// the original was $emailTemplate = Mage::getModel('core/email_template');
// Change it to the following four lines:

if ($this->emailTemplate)
$emailTemplate = $this->emailTemplate;
else
$emailTemplate = Mage::getModel('core/email_template');

パート 3 クラスの最後に関数を追加します。

public function addAttachment(Zend_Pdf $pdf, $filename){
$file = $pdf->render();

$this->emailTemplate = Mage::getModel('core/email_template');



$attachment = $this->emailTemplate->getMail()->createAttachment($file);
$attachment->type = 'application/pdf';
$attachment->filename = $filename;
}

2) app/code/core/Mage/Sales/Model/Order/Invoice.php を更新します。

Update sendEmail function

$mailer = Mage::getModel('core/email_template_mailer');

// the next two lines were added

$pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf(array($this));
$mailer->addAttachment($pdf,'invoice.pdf');



if ($notifyCustomer) {
$emailInfo = Mage::getModel('core/email_info');
$emailInfo->addTo($order-

元の URL はこちら : http://www.ericpan.com/2013/02/14/add-pdf-attachment-to-invoice-email/#.USPAKR2t2-0

于 2013-02-19T18:08:18.263 に答える
0

あなたはチェックアウトしたいかもしれません

Mage_Adminhtml_Controller_Sales_Invoice

生成された売上請求書 PDF の例を表示するには:

$pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf(array($invoice));
$this->_prepareDownloadResponse('invoice'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').
    '.pdf', $pdf->render(), 'application/pdf');

現在、これは実際にPDFをレンダリングしてHTTP応答に含めていますが、ファイルとして保存するのではありませんが、PDFを保存するための請求書モデルまたは抽象PDFモデルにメソッドが必要です。

そして、添付ファイルを追加するには、おそらく次を確認する必要があります。

Zend_Mail::addAttachment()

便利な例がありません。実際にMagento 1.7で参照を検索しましaddAttachment()たが、何も見つかりませんでした! 面白い。

しかし、うまくいけば、これがあなたに少しの方向性を与えるでしょう.

于 2012-08-09T21:44:54.607 に答える