EC-CUBE4 納品書PDFに領収書を付け足す

デフォルトで出力される納品書PDFの備考欄を領収書に変更します。

今回の要望としては、備考の欄に何も入力しなくても
名前、金額が入ってほしい
ということでした。

まずもともとの納品書PDFを生成しているのは
/src/Eccube/Service/OrderPdfService.php
というファイル。
このファイルをカスタマイズしていきます。

まず、備考欄の出力をしている部分は346行目付近の
renderEtcData 関数のようです。

$text = preg_replace('/\s+$/us', '', $formData['note1']."\n".$formData['note2']."\n".$formData['note3']);
$this->MultiCell(0, 4, $text, '', 2, 'L', 0, '');

とあるので、$textには入っているデータを出力しているとわかります
まずは静的にここを変更してみてテストです

        $cstm_receipt = <<< EOM

            但し品代として

        山形県米沢市堀川町5-68
            株式会社リゾリューションズ

        運送会社の発行する領収書、ご利用明細、振り込み明細いずれかと一緒に管理してください。
EOM;

これでPDF上にそのまま表示されます。
センター寄せにしたい場合は
$this->MultiCell(0, 4, $cstm_receipt, ”, 2, ‘L’, 0, ”);
の2と0の間の’L’を’C’に変更してください。

次に234行あたりの
$this->renderEtcData($formData);

$this->renderEtcData($Shipping);
に変更します。
今回はフォームのデータを受け取らないので formData
である必要は無し、$Shippingじゃないと名前等が取得できません。

protected function renderEtcData(Shipping $Shipping)
ここも Shipping $Shipping に変更します。

後は合計金額と名前を取得して

 $cstm_receipt = <<< EOM
        {$nametext}

            {$paymentTotalText}
            但し品代として

        山形県米沢市堀川町5-68
            株式会社リゾリューションズ

        運送会社の発行する領収書、ご利用明細、振り込み明細いずれかと一緒に管理してください。
EOM;

これを出力すれば完成です。
ハンコの画像はハンコのサイズ等に合わせて微調整してください。