[EC-CUBE2.13] 注文番号を日付+連番にする
- 公開日:2015/4/8
EC-CUBEでの注文番号はデフォルトでは連番です。これを、日付+連番にカスタマイズしたいと思います。例えば、注文日が2015年4月8日で、通常の注文番号が54番なら「15040854」という注文番号になります。(日付は年月日をそれぞれ2桁での表示にしました。)
注文番号はdtb_orderに注文データが登録される際にAUTO_INCREMENTで番号が振られます。なのでこの部分はいじらずに表示上だけ「日付+連番」つまり「注文日(yymmdd)+通常の連番」となるようにカスタマイズしたいと思います。
(データベースには今まで通りの連番だけが登録されているけど、表示の際は連番の前に注文日を付ける。という具合です。)
表示上「注文番号:日付+連番」にする
1) 納品書
SC_Fpdf.php の setOrderData() を編集したいのでこれをごっそり以下の拡張クラスにコピーします。
data/class_extends/SC_Fpdf_Ex.php
private function setOrderData() { $arrOrder = array(); // DBから受注情報を読み込む $this->lfGetOrderData($this->arrData['order_id']); // 購入者情報 $text = '〒 '.$this->arrDisp['order_zip01'].' - '.$this->arrDisp['order_zip02']; $this->lfText(23, 43, $text, 10); //購入者郵便番号 $text = $this->arrPref[$this->arrDisp['order_pref']] . $this->arrDisp['order_addr01']; $this->lfText(27, 47, $text, 10); //購入者都道府県+住所1 $this->lfText(27, 51, $this->arrDisp['order_addr02'], 10); //購入者住所2 $text = $this->arrDisp['order_name01'].' '.$this->arrDisp['order_name02'].' 様'; $this->lfText(27, 59, $text, 11); //購入者氏名 // お届け先情報 $this->SetFont('SJIS', '', 10); $this->lfText(25, 125, SC_Utils_Ex::sfDispDBDate($this->arrDisp['create_date']), 10); //ご注文日 // 注文番号を「日付+連番」に変更 $dateplus_order_id = substr($this->arrDisp['create_date'],2,2); $dateplus_order_id .= substr($this->arrDisp['create_date'],5,2); $dateplus_order_id .= substr($this->arrDisp['create_date'],8,2); $dateplus_order_id .= $this->arrDisp['order_id']; $this->lfText(25, 135, $dateplus_order_id, 10); $this->SetFont('Gothic', 'B', 15); $this->Cell(0, 10, $this->tpl_title, 0, 2, 'C', 0, ''); //文書タイトル(納品書・請求書)
もしいくら変更しても反映されないという場合は、導入しているプラグインがSC_Fpdfクラスをオーバーライドしている可能性があります。私はそれで苦労しました。私の場合は「商品オプションプラグイン」がオーバーライドしており、以下のファイルが影響していました。
data/downloads/plugin/ProductOptions/class/213/plg_ProductOptions_SC_Fpdf_Ex.php
2) PC用のMYページ・購入履歴
data/Smarty/templates/default/mypage/index.tpl
<table summary="購入履歴"> <tr> <th class="alignC">購入日時</th> <th class="alignC">注文番号</th> <th class="alignC">お支払い方法</th> <th class="alignC">合計金額</th> <!--{if $smarty.const.MYPAGE_ORDER_STATUS_DISP_FLAG }--> <th class="alignC">ご注文状況</th> <!--{/if}--> <th class="alignC">詳細</th> </tr> <!--{section name=cnt loop=$arrOrder}--> <tr> <td class="alignC"><!--{$arrOrder[cnt].create_date|sfDispDBDate}--></td> <td><!--{$arrOrder[cnt].create_date|date_format:"%y%m%d"}--><!--{$arrOrder[cnt].order_id}--></td> <!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}--> <td class="alignC"><!--{$arrPayment[$payment_id]|h}--></td> <td class="alignR"><!--{$arrOrder[cnt].payment_total|number_format}-->円</td>
data/Smarty/templates/default/mypage/history.tpl
<div id="mypagecolumn"> <h2 class="title"><!--{$tpl_title|h}--></h2> <!--{include file=$tpl_navi}--> <div id="mycontents_area"> <h3><!--{$tpl_subtitle|h}--></h3> <div class="mycondition_area clearfix"> <p> <span class="st">購入日時: </span><!--{$tpl_arrOrderData.create_date|sfDispDBDate}--><br /> <span class="st">注文番号: </span><!--{$tpl_arrOrderData.create_date|date_format:"%y%m%d"}--><!--{$tpl_arrOrderData.order_id}--><br /> <span class="st">お支払い方法: </span><!--{$arrPayment[$tpl_arrOrderData.payment_id]|h}--><br /> <!--{if $smarty.const.MYPAGE_ORDER_STATUS_DISP_FLAG}--> <span class="st">ご注文状況: </span> <!--{if $tpl_arrOrderData.status != $smarty.const.ORDER_PENDING}--> <!--{$arrCustomerOrderStatus[$tpl_arrOrderData.status]|h}--> <!--{else}--> <span class="attention"><!--{$arrCustomerOrderStatus[$tpl_arrOrderData.status]|h}--></span> <!--{/if}--> <!--{/if}--> <!--{if $is_price_change == true}--> <div class="attention" Align="right">※金額が変更されている商品があるため、再注文時はご注意ください。</div> <!--{/if}--> </p>
3) スマホ用のMYページ・購入履歴
data/Smarty/templates/sphone/mypage/index.tpl
<!--▼フォームボックスここから --> <div class="formBox"> <!--{section name=cnt loop=$arrOrder max=$dispNumber}--> <!--▼商品 --> <div class="arrowBox"> <p> <em>注文番号:</em><span class="order_id"><!--{$arrOrder[cnt].create_date|date_format:"%y%m%d"}--><!--{$arrOrder[cnt].order_id}--><!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}--></span><br /> <em>購入日時:</em><span class="create_date"><!--{$arrOrder[cnt].create_date|sfDispDBDate}--></span><br /> <em>お支払い方法:</em><span class="payment_id"><!--{$arrPayment[$payment_id]|h}--></span><br /> <em>合計金額:</em><span class="payment_total"><!--{$arrOrder[cnt].payment_total|number_format}--></span>円<br /> <!--{if $smarty.const.MYPAGE_ORDER_STATUS_DISP_FLAG }-->
data/Smarty/templates/sphone/mypage/history.tpl
<div class="form_area"> <div id="historyBox"> <p> <em>注文番号</em>: <!--{$tpl_arrOrderData.create_date|date_format:"%y%m%d"}--><!--{$tpl_arrOrderData.order_id}--><br /> <em>購入日時</em>: <!--{$tpl_arrOrderData.create_date|sfDispDBDate}--><br /> <em>お支払い方法</em>: <!--{$arrPayment[$tpl_arrOrderData.payment_id]|h}--> </p>
4) 携帯用のMYページ・購入履歴
data/Smarty/templates/mobile/mypage/index.tpl
■購入履歴一覧<br> <!--{if $objNavi->all_row > 0}--> <!--{$objNavi->all_row}-->件の購入履歴があります。<br> <br> <!--{section name=cnt loop=$arrOrder}--> <hr> ▽購入日時<br> <!--{$arrOrder[cnt].create_date|sfDispDBDate}--><br> ▽注文番号<br> <!--{$arrOrder[cnt].create_date|date_format:"%y%m%d"}--><!--{$arrOrder[cnt].order_id}--><br> <!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}--> ▽お支払い方法<br> <!--{$arrPayment[$payment_id]|h}--><br>
data/Smarty/templates/mobile/mypage/history.tpl
<!--{strip}--> 購入日時:<!--{$tpl_arrOrderData.create_date|sfDispDBDate}--><br> 注文番号:<!--{$tpl_arrOrderData.create_date|date_format:"%y%m%d"}--><!--{$tpl_arrOrderData.order_id}--><br> お支払い方法:<!--{$arrPayment[$tpl_arrOrderData.payment_id]|h}-->
5) [管理画面] 受注管理の検索結果
data/Smarty/templates/admin/order/index.tpl
<tr> <th>受注日</th> <th>注文番号</th> <th>お名前</th> <th>支払方法</th> <th>購入金額(円)</th> <th>全商品発送日</th> <th>対応状況</th> <th><label for="pdf_check">帳票</label> <input type="checkbox" name="pdf_check" id="pdf_check" onclick="eccube.checkAllBox(this, 'input[name=pdf_order_id[]]')" /></th> <th>編集</th> <th>メール <input type="checkbox" name="mail_check" id="mail_check" onclick="eccube.checkAllBox(this, 'input[name=mail_order_id[]]')" /></th> <th>削除</th> </tr> <!--{section name=cnt loop=$arrResults}--> <!--{assign var=status value="`$arrResults[cnt].status`"}--> <tr style="background:<!--{$arrORDERSTATUS_COLOR[$status]}-->;"> <td class="center"><!--{$arrResults[cnt].create_date|sfDispDBDate}--></td> <td class="center"><!--{$arrResults[cnt].create_date|date_format:"%y%m%d"}--><!--{$arrResults[cnt].order_id}--></td> <td class="center"><!--{$arrResults[cnt].order_name01|h}--> <!--{$arrResults[cnt].order_name02|h}--></td>
<h2>検索条件設定</h2> <!--{* 検索条件設定テーブルここから *}--> <table> <tr> <th>注文番号(※連番部分のみ)</th> <td> <!--{assign var=key1 value="search_order_id1"}--> <!--{assign var=key2 value="search_order_id2"}-->
6) [管理画面] 受注管理の編集画面
data/Smarty/templates/admin/order/edit.tpl
<tr> <th>注文番号</th> <td><!--{$arrForm.create_date.value|date_format:"%y%m%d"|h}--><!--{$arrForm.order_id.value|h}--></td> </tr>
7) [管理画面] 受注管理→対応状況管理の注文番号クリックで表示される注文詳細画面
data/Smarty/templates/admin/order/disp.tpl
<tr> <th>注文番号</th> <td><!--{$arrForm.create_date.value|date_format:"%y%m%d"|h}--><!--{$arrForm.order_id.value|h}--></td> <input type="hidden" name="order_id" value="<!--{$arrForm.order_id.value|h}-->" /> </tr>
8) [管理画面] PDF出力画面→個別出力または一括出力で表示される別ウィンドウ
data/Smarty/templates/admin/order/status.tpl
<table class="form"> <col width="20%" /> <col width="80%" /> <tr> <th>注文番号(※連番部分のみ)</th> <td><!--{$arrForm.order_id|@join:', '}--></td> </tr> <tr> <th>発行日<span class="attention">※</span></th>
一括出力の場合は注文番号が「,」で連結され複数表示されるので、連番部分だけにしておいた方がわかりやすいと思うので、タイトルに注記を追加。
9) [管理画面] 対応状況管理の検索結果
data/Smarty/templates/admin/order/status.tpl
<tr> <th><label for="move_check">選択<br /></label> <input type="checkbox" name="move_check" id="move_check" onclick="eccube.checkAllBox(this, 'input[name=move[]]')" /></th> <th>対応状況</th> <th>注文番号</th> <th>受注日</th> <th>お名前</th> <th>支払方法</th> <th>購入金額(円)</th> <th>入金日</th> <th>発送日</th> </tr> <!--{section name=cnt loop=$arrStatus}--> <!--{assign var=status value="`$arrStatus[cnt].status`"}--> <tr style="background:<!--{$arrORDERSTATUS_COLOR[$status]}-->;"> <td class="center"><input type="checkbox" name="move[]" value="<!--{$arrStatus[cnt].order_id}-->" ></td> <td class="center"><!--{$arrORDERSTATUS[$status]}--></td> <td class="center"><a href="#" onclick="eccube.openWindow('./disp.php?order_id=<!--{$arrStatus[cnt].order_id}-->','order_disp','800','900',{resizable:'no',focus:false}); return false;" ><!--{$arrStatus[cnt].create_date|date_format:"%y%m%d"}--><!--{$arrStatus[cnt].order_id}--></a></td> <td class="center"><!--{$arrStatus[cnt].create_date|sfDispDBDate}--></td> <td><!--{$arrStatus[cnt].order_name01|h}--> <!--{$arrStatus[cnt].order_name02|h}--></td> <!--{assign var=payment_id value=`$arrStatus[cnt].payment_id`}--> <td class="center"><!--{$arrPayment[$payment_id]|h}--></td> <td class="right"><!--{$arrStatus[cnt].total|number_format}--></td> <td class="center"><!--{if $arrStatus[cnt].payment_date != ""}--><!--{$arrStatus[cnt].payment_date|sfDispDBDate:false}--><!--{else}-->未入金<!--{/if}--></td> <td class="center"><!--{if $arrStatus[cnt].status eq 5}--><!--{$arrStatus[cnt].commit_date|sfDispDBDate:false}--><!--{else}-->未発送<!--{/if}--></td> </tr>
10) 各種送信メール
data/Smarty/templates/default/mail_templates/order_mail.tpl
************************************************ ご請求金額 ************************************************ ご注文番号:<!--{$arrOrder.create_date|date_format:"%y%m%d"|h}--><!--{$arrOrder.order_id}--> お支払い合計:¥ <!--{$arrOrder.payment_total|number_format|default:0}--> お支払い方法:<!--{$arrOrder.payment_method}--> メッセージ:<!--{$Message_tmp}-->
data/Smarty/templates/mobile/mail_templates/order_mail.tpl
■ご請求金額 ご注文番号:<!--{$arrOrder.create_date|date_format:"%y%m%d"|h}--><!--{$arrOrder.order_id}--> お支払い合計:¥<!--{$arrOrder.payment_total|number_format|default:0}--> お支払い方法:<!--{$arrOrder.payment_method}--> メッセージ:<!--{$Message_tmp}-->
他にも自身で追加したり、プラグインによって追加されたorder関連のメールテンプレートがあれば同様の修正が必要です。