[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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <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
1 2 3 4 5 6 7 8 9 10 11 | <!--▼フォームボックスここから --> <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
1 2 3 4 5 6 7 | <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
1 2 3 4 5 6 7 8 9 10 11 12 13 | ■購入履歴一覧<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
1 2 3 4 | <!--{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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <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> |
1 2 3 4 5 6 7 8 | <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
1 2 3 4 | <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
1 2 3 4 5 | <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
1 2 3 4 5 6 7 8 9 | <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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <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
1 2 3 4 5 6 7 8 | ************************************************ ご請求金額 ************************************************ ご注文番号:<!--{ $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
1 2 3 4 5 | ■ご請求金額 ご注文番号:<!--{ $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関連のメールテンプレートがあれば同様の修正が必要です。