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帳票の種類を追加する
上記のサイト様を参考にさせて頂きました。



