EC-CUBEの帳票の種類を追加:EC-CUBE2.11.1
EC-CUBEのデフォルトでは納品書という帳票しかないので
今回は新たに「受注明細書」という帳票を追加する方法をメモ
ファイルの作成と前準備
まず、帳票を追加するにあたって
/ec/data/class/の中のSC_Fpdf.phpをコピーして
「SC_Fpdf_Order.php」のような好きな名前に変更し保存します。
さらに
/ec/data/Smarty/templates/admin/pdf/
の中のnouhinsyo1.pdfもコピーして名前を「order.pdf」などに変更しアップします。
以上で前準備は完了!
次にそれぞれのファイルを修正していきます。
LC_Page_Admin_Order_Pdf.phpの修正
まず、
/ec/data/class/pages/admin/order/の中にある
LC_Page_Admin_Order_Pdf.phpを開き
下記の修正・追加をしていきます。
require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php'; require_once CLASS_REALDIR . 'SC_Fpdf.php';
部分に
require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php'; require_once CLASS_REALDIR . 'SC_Fpdf.php'; require_once CLASS_REALDIR . 'SC_Fpdf_Order.php';
のように
require_once CLASS_REALDIR . ‘先ほど作成したファイル名.php‘;
を追加します。
次に
function init() { parent::init(); $this->tpl_mainpage = 'order/pdf_input.tpl'; $this->tpl_subnavi = 'order/subnavi.tpl'; $this->tpl_mainno = 'order'; $this->tpl_subno = 'pdf'; $this->tpl_subtitle = '帳票出力'; $this->SHORTTEXT_MAX = STEXT_LEN; $this->MIDDLETEXT_MAX = MTEXT_LEN; $this->LONGTEXT_MAX = LTEXT_LEN; $this->arrType[0] = "納品書"; $this->arrDownload[0] = "ブラウザに開く"; $this->arrDownload[1] = "ファイルに保存"; }
という部分に
function init() { parent::init(); $this->tpl_mainpage = 'order/pdf_input.tpl'; $this->tpl_subnavi = 'order/subnavi.tpl'; $this->tpl_mainno = 'order'; $this->tpl_subno = 'pdf'; $this->tpl_subtitle = '帳票出力'; $this->SHORTTEXT_MAX = STEXT_LEN; $this->MIDDLETEXT_MAX = MTEXT_LEN; $this->LONGTEXT_MAX = LTEXT_LEN; $this->arrType[0] = "納品書"; $this->arrType[1] = "受注明細書"; $this->arrDownload[0] = "ブラウザに開く"; $this->arrDownload[1] = "ファイルに保存"; }
のように
$this->arrType[1] = "受注明細書";
を追加します。
次に、
function createPdf(&$objFormParam){ $arrErr = $this->lfCheckError($objFormParam); $arrRet = $objFormParam->getHashArray(); $this->arrForm = $arrRet; // エラー入力なし ・・・・以下省略・・・・ }
の部分を
function createPdf(&$objFormParam){ $arrErr = $this->lfCheckError($objFormParam); $arrRet = $objFormParam->getHashArray(); $this->arrForm = $arrRet; // エラー入力なし //納品書の発行の場合 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); } $objFpdf->createPdf(); return true; } //受注明細書の発行の場合 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); } $objFpdf->createPdf(); return true; }else{ return $arrErr; } }
と修正します。
LC_Page_Admin_Order_Pdf.phpの修正は上記まででも一応動きますが、
今回は帳票出力の際に帳票のタイトルが
自動でお買上げ明細書(帳票のタイトル名)
という形になるように
$arrForm['title'] = "お買上げ明細書(納品書)";
という部分を
$arrForm['title'] = "お買上げ明細書";
に変更し、
$arrRet['title'] = $arrRet['title'] .' (' . $this->arrType[$arrRet['type']] .')';
という一行を
function createPdf(&$objFormParam){ $arrErr = $this->lfCheckError($objFormParam); $arrRet = $objFormParam->getHashArray(); $arrRet['title'] = $arrRet['title'] .' (' . $this->arrType[$arrRet['type']] .')';
のように上記の部分あたりに追加しすれば、
帳票で納品書を選べば
・お買上げ明細書(納品書)
受注明細書を選べば
・お買上げ明細書(受注明細書)
のようにタイトルが変わるようになります。
以上でLC_Page_Admin_Order_Pdf.phpの修正は完了なので保存してアップします。
SC_Fpdf_Order.phpの修正
次に、前項で作成したSC_Fpdf_Order.phpの修正をします。
まず、
require(DATA_REALDIR . 'module/fpdf/fpdf.php'); require(DATA_REALDIR . 'module/fpdf/japanese.php');
という部分を
require_once(DATA_REALDIR . 'module/fpdf/japanese.php');
のように一行を削除し、requireをrequire_onceに変更します。
次に、
class SC_Fpdf_Order { function SC_Fpdf_Order($download, $title, $tpl_pdf = 'order1.pdf') {
のように
SC_Fpdfとなっていた部分をすべて
SC_Fpdf_Orderという新しい名前に変更します。
また$tpl_pdf = ‘order.pdf’の部分も
前項で作成したorder.pdfに変更します。
以上で完了です。
あとは保存しアップすればOK
これでとりあえず帳票の出力画面に
のように「受注明細書」という項目が追加され
PDFのタイトル部分も
のように自動で「お買上げ明細書(受注明細書)」と表示されるようになります。
参考サイト
EC-CUBE帳票の種類を追加する
上記のサイト様を参考にさせて頂きました。