EC-CUBE帳票の種類を追加する

木曜日, 7月 23rd, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話。帳票の種類を追加します。
残念なことに、帳票の機能はまだ未実装の箇所が多く、ダミーの部分が多いそうです。
参考:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=3413&forum=11

今回紹介する方法はなかわけが独自に行った方法です。「発注書」という帳票を追加したいと思います。

/data/class/pages/admin/order/LC_Page_Admin_Oder_Pdf.php
の57行目あたりに帳票の種類の配列があるので、発注書を追加します。

        $this->arrType[0]  = "納品書";

        $this->arrType[0]  = "納品書";
        $this->arrType[1]  = "発注書";

次に、106行目あたりに納品書の場合と発注書の場合の分岐処理を書きます。

                $objFpdf = new SC_Fpdf($arrRet['download'], $arrRet['title']);
                foreach ( $arrRet['order_id'] AS $key=>$val ) {
                    $arrPdfData = $arrRet;
                    $arrPdfData['order_id'] = $val;
                    $objFpdf->setData($arrPdfData);
                    ++$i;
                }

                //納品書の発行の場合
                if($arrRet['type'] == 0) {
                    $objFpdf = new SC_Fpdf($arrRet['download'], $arrRet['title']);
                    foreach ( $arrRet['order_id'] AS $key=>$val ) {
                        $arrPdfData = $arrRet;
                        $arrPdfData['order_id'] = $val;
                        $objFpdf->setData($arrPdfData);
                        ++$i;
                    }
                }
                //発注書の発行の場合
                elseif($arrRet['type'] == 1){
                    $objFpdf = new SC_Fpdf_Order($arrRet['download'], $arrRet['title']);
                    foreach ( $arrRet['order_id'] AS $key=>$val ) {
                        $arrPdfData = $arrRet;
                        $arrPdfData['order_id'] = $val;
                        $objFpdf->setData($arrPdfData);
                        ++$i;
                    }
                }

上記ソースを見てわかるように、SC_Fpdfクラスの中を動的に書き換えるのではなく、SC_Fpdf.phpをコピーしてSC_Fpdf_Orderクラスを作りました。どうしてSC_Fpdfクラスを動的に動かして使いまわせるようにしなかったかというと、めんどくさかったからですw。あと、帳票の種類をひとつしか追加しないので、動的処理を作るほうがコストがかかると判断しました。

ということで、SC_Fpdf.phpとコピーしてSC_Fpdf_Order.phpを作ります。
そのSC_Fpdf_Order.phpの30行目あたりのrequire処理とclass宣言の部分を書き換えます。

require(DATA_PATH . 'pdf/japanese.php');
define('PDF_TEMPLATE_DIR', DATA_PATH . 'pdf/');
define('PDF_IMG_DIR', HTML_PATH. USER_DIR. USER_PACKAGE_DIR. TEMPLATE_NAME. '/img/pdf/');

class SC_Fpdf {
    function SC_Fpdf($download, $title, $tpl_pdf = "template_nouhin01.pdf") {

require_once(DATA_PATH . 'pdf/japanese.php');
define('PDF_TEMPLATE_DIR', DATA_PATH . 'pdf/');
define('PDF_IMG_DIR', HTML_PATH. USER_DIR. USER_PACKAGE_DIR. TEMPLATE_NAME. '/img/pdf/');

class SC_Fpdf_Order {
    function SC_Fpdf_Order($download, $title, $tpl_pdf = "template_nouhin01.pdf") {

あとは、SC_Fpdf_Order.phpを、SC_Fpdf.phpと同じディレクトリにアップロードしてください。

さらに、LC_Page_Admin_Oder_Pdf.phpに戻って、27行目あたりにSC_Fpdf_Order.phpをincludeする処理を追加します。

require_once(CLASS_PATH . "SC_Fpdf.php");

require_once(CLASS_PATH . "SC_Fpdf.php");
require_once(CLASS_PATH . "SC_Fpdf_Order.php");

これで管理ページの帳票出力に「発注書」が増えて発注書をダウンロードすることができます。
あとは好きなようにSC_Fpdf_Order.phpを編集しちゃって下さい。
なかわけは、発注書なのに「nouhinsyo-n.pdf」というファイル名が気持ち悪いと思ったので、279行目あたりのファイル名出力の部分を編集しました。

Tags:

Leave a Reply

*