[初回公開] 2008年05月07日
EC-CUBEでは、受注データから納品書を簡単に作成してPDFで出力できる機能が標準で備わっています。初期設定のままでもすぐに利用でき、業務の効率化に役立ちます。EC-CUBEには納品書をPDFとして発行する機能が標準で備わっており、既定のレイアウトのものを1つ利用できるようになっています。ここでは、納品書PDFの出し方と、カスタマイズしてPDFのレイアウトのテンプレートを切り替えられるようにする方法をご紹介します。

このページの目次
1.EC-CUBEの納品書PDFとは
EC-CUBEの納品書PDFとは、インストール直後から標準でEC-CUBEに備わっている機能で、商品を受注したデータに対して明細をPDFとして発行できる機能です。
商品を発送する際に納品書を同梱したい場合や、発送の準備をする際に送付漏れをなくすチェック用に利用します。

PDFは管理画面より出力することができ、ブラウザで表示されますが、手元のパソコンにPDFファイルとして保存することも可能です。
私がEC-CUBEの納品書PDF機能を使い始めた当初、出力される納品書のフォーマットが固定で自由に変更できなかったため、取引先ごとに異なる書式に対応できず非常に困りました。
また、出荷ミスを防ぐために納品書の内容を細かくカスタマイズしたいのに、標準機能では実現できず作業効率が落ちてしまった経験があります。
このような問題からカスタマイズ方法を模索し、PDFテンプレートを複数用意して切り替えられる仕組みを作ることに至りました。
2.EC-CUBEで納品書PDFを出す方法
EC-CUBEで納品書PDFを出す方法は、どのバージョンでも管理画面の「受注管理」から出力できます。
そのため、受注が確定したデータのみ出力でき、受注前の見積書が欲しい場合はカスタマイズやプラグインなどで機能を拡張する必要があります。
2-1.バージョン4系でのPDFの出し方
EC-CUBEのバージョン4系でのPDFの出し方としては、管理画面の左メニューの「受注管理 -> 受注一覧」を表示します。
受注一覧が表示されれば、各受注データの右側にある納品書PDFのアイコンをクリックしてください。

次に、納品書に記載する内容を入力するウィンドウが表示されるので、必要に応じて変更して画面最下部のボタン「作成」をクリックします。

ボタン「作成」をクリックすると下図のようにブラウザ上で納品書PDFが表示されます。
表示されたPDFはそのまま印刷したり、パソコンにファイルとして保存できます。

2-2.バージョン1系でのPDFの出し方
EC-CUBEのバージョン1系でのPDFの出し方としては、管理画面の左メニューの「受注管理 -> 受注一覧」を表示します。
受注一覧が表示されれば、各受注データの右側にあるリンク「帳票」をクリックしてください。

次に、納品書に記載する内容を入力するウィンドウが表示されるので、必要に応じて変更して画面最下部のボタン「この内容で作成する」をクリックします。

ボタン「この内容で作成する」をクリックすると下図のようにブラウザ上で納品書PDFが表示されます。
表示されたPDFはそのまま印刷したり、パソコンにファイルとして保存できます。

3.納品書PDFを切り替えるカスタマイズ方法
EC-CUBEで利用できる納品書PDFのレイアウトは1つだけですが、次のようにカスタマイズを行うとPDF出力時にレイアウトを切り替えることが可能になります。
PDFのレイアウトを変えることで記載内容を変えたり、取引相手が法人向けであれば検収書も同時に発行できます。
今回はEC-CUBEのバージョン2系でカスタマイズを行います。
3-1.テンプレートPDFをサーバにアップする
EC-CUBEがPDFを生成する際はサーバにアップロードしている未記入のPDFテンプレートを利用して納品先や購入された商品名をプログラムが記入する仕組みになっています。
そのため、納品書PDFを切り替えるにあたり、別途テンプレートとなるPDFファイルをサーバにFTPやSCPでアップロードします。今回は下図のようなアイコン等が無いシンプルなテンプレートを用意しました。

3-2.データベースにテーブルを追加する
次にEC-CUBEのマスタデータとしてPDFのテンプレートを複数登録できるようにテーブルを追加します。
データベースにテーブル追加する場合は、ブラウザでデータベースを操作できるphpMyAdminを利用するか、SSHなどコマンドで実行してください。
CREATE TABLE mtb_pdftemplate ( id int primary key, name text, rank int NOT NULL DEFAULT 0 ) TYPE=InnoDB ;
テーブルを追加する場合は上記のように、idとファイル名を入力するカラム「name」、そして表示順を指定するカラム「rank」を用意しています。
3-3.データベースにPDFのテンプレート情報を登録
テンプレートとなるPDFのマスタテーブルが作成できれば、実際にPDFファイル名をデータベースに登録します。
レコードを登録する際もテーブル作成時と同様にphpMyAdminか、SSHでコマンドで実行してください。
INSERT INTO mtb_pdftemplate VALUES ('1', 'template_nouhin01.pdf',0);
INSERT INTO mtb_pdftemplate VALUES ('2', 'template_nouhin02.pdf',1);
3-4.テンプレートを切り替える処理を追加
納品書PDFを生成する際に利用するクラスファイル「/data/class/pages/admin/order/LC_Page_Admin_Order_Pdf.php」に前述で作成したマスタテーブル「mtb_pdftemplate」からデータを取得する処理を加えます。
もしデータベースからデータ取得が難しい場合は、テンプレートファイル名がわかっていれば下記の2行をinit()内に追記してください。
$this->arrPdfTemplate[0] = "template_nouhin01.pdf"; $this->arrPdfTemplate[1] = "template_nouhin02.pdf";
3-5.テンプレートを切り替える項目を画面に追加
次に実際に納品書PDFを生成する際の画面にテンプレートを切り替えるプルダウンメニューを設置します。
テンプレートの切り替えは、/data/class/pages/admin/order/LC_Page_Admin_Order_Pdf.phpのinit()のreturnUrlより手前の箇所にあるmakeForm()内に追記します。
makeForm()は納品書を作成する際のフォームの定義をしている部分です。
テンプレートを選択するために以下のような追加が必要になります。
$objForm->addElement('select', 'pdf_template', 'テンプレート', array('options' => $this->arrPdfTemplate));
以上で納品書PDFを複数用意し、管理画面から切り替えて出力できるようになります。
4.カスタマイズ後のPDFの切り替える様子
カスタマイズを反映した後は、納品書PDF出力時にプルダウンメニューからテンプレートを選択できるようになります。
選択したテンプレートに基づきPDFが生成されるため、複数のレイアウトを使い分けることが可能です。

上図のようにテンプレートを切り替えて納品書を発行できることで、取引先ごとに異なる書式での納品書を簡単に作成可能です。
5.まとめ
EC-CUBEの標準機能では納品書PDFのテンプレートは1つだけですが、今回紹介したカスタマイズ方法を行うことで複数のテンプレートを用意し、出力時に切り替えられるようになります。
これにより、取引先や用途に応じて適切な納品書を発行できるため、業務効率が向上します。
また、PDFテンプレートの差し替えや追加も簡単にできるため、将来的なレイアウト変更にも柔軟に対応可能です。
是非カスタマイズを検討してみてください。









