対応事例
帳票の種類に「見積書」を追加カスタマイズ:EC-CUBE2.13.2
EC-CUBEの「帳票の種類」には標準で「納品書」の1種類しかありません。
お客様より「お買い上げ明細書(納品書)」の表示内容のカスタマイズ依頼もいただきますが、今回は帳票の種類に「見積書」を追加する方法をご案内いたします。
[EC-CUBE2.13.2]
編集ファイル
/data/class/pages/admin/order/LC_Page_Admin_Order_Pdf.php
新規追加ファイル
/data/class/SC_Fpdf_Order.php
/data/Smarty/templates/admin/pdf/order.pdf
【STEP.1】ファイルの新規追加
「帳票の種類」を追加するにあたり、「見積書」用に「PDFを出力するファイル」と「PDFのテンプレートファイル」を新たに追加します。
【PDFを出力するファイル】
対象フォルダ:/ec/data/class/
フォルダ内の[SC_Fpdf.php]をコピーし、[SC_Fpdf_Order.php]のように任意のファイル名にて追加
【PDFのテンプレートファイル】
対象フォルダ:/ec/data/Smarty/templates/admin/pdf/
フォルダ内の[nouhinsyo1.pdf]をコピーし、[order.pdf]のように任意のファイル名にて追加
↓
【STEP.2】LC_Page_Admin_Order_Pdf.phpの編集
[追加]23行目
PDFを出力するファイルの読み込み
require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php';
↓
require_once CLASS_REALDIR . 'SC_Fpdf_Order.php'; require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php';
[追加・編集]53行目
「帳票の種類」の選択項目の追加
$this->arrType[0] = '納品書';
↓
$this->arrType[0] = 'お買上げ明細書(納品書)'; $this->arrType[1] = '御見積書';
[編集]120行目
「帳票タイトル」を「帳票の種類」で選択された名前が表示されるように値を削除
// タイトルをセット $arrForm['title'] = 'お買上げ明細書(納品書)';
↓
// タイトルをセット $arrForm['title'] = '';
[追加]154行目
上記に関連し、「帳票タイトル」を「帳票の種類」で選択された名前が表示されるように変更
$arrErr = $this->lfCheckError($objFormParam); $arrRet = $objFormParam->getHashArray();
↓
$arrErr = $this->lfCheckError($objFormParam); $arrRet = $objFormParam->getHashArray(); $arrRet['title'] = $arrRet['title'] .' ' . $this->arrType[$arrRet['type']] .'';
[編集]160行目
見積書発行時の条件を追加
if($arrRet['title'] == '') $arrRet['title'] = 'お買上げ明細書(納品書)'; $this->arrForm = $arrRet; // エラー入力なし if (count($arrErr) == 0) { $objFpdf = new SC_Fpdf_Ex($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; } }
↓
if($arrRet['title'] == '') $arrRet['title'] = 'お買上げ明細書(納品書)'; $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; } }
↓
【STEP.3】SC_Fpdf_Order.phpの編集
[編集]32行目
「SC_Fpdf」部分を「SC_Fpdf_Order」へ変更
「nouhinsyo1.pdf」を「order.pdf」へ変更
class SC_Fpdf extends SC_Helper_FPDI { public function __construct($download, $title, $tpl_pdf = 'nouhinsyo1.pdf')
↓
class SC_Fpdf_Order extends SC_Helper_FPDI { public function __construct($download, $title, $tpl_pdf = 'order.pdf')
[編集]285行目
ダウンロードされるファイル名を「nouhinsyo」から「mitsumori」へ変更
if ($this->PageNo() == 1) { $filename = 'nouhinsyo-No'.$this->arrData['order_id'].'.pdf'; } else { $filename = 'nouhinsyo.pdf'; }
↓
if ($this->PageNo() == 1) { $filename = 'mitsumorisyo-No'.$this->arrData['order_id'].'.pdf'; } else { $filename = 'mitsumori.pdf'; }
↓
【STEP.4】order.pdfの編集
ファイル名を「nouhinsyo1.pdf」から「order.pdf」に変更し、Illustratorで下記の記載内容へと編集しました。
↓
対応完了
以上で対応完了となります。対象ファイルをアップロードし、「帳票の作成」ページにて「帳票の種類」に「お買上げ明細書(納品書)」と「御見積書」が表示されるようになり、PDFファイルのタイトルにも「帳票の種類」で選択された名前が表示されるようになりました。
今回はデータベースの追加も無く、STEPも少なく対応が完了できましたが、EC-CUBEのバージョンが[2.13.2]ではない場合には記述が異なりますので、ご対応が難しい場合にはご相談いただけますようお願いいたします。