(1)■data/class/pages/admin/order/LC_Page_Admin_Order.php
「▼受注一覧画面でステータスを変更する」の箇所を修正・追加します。
require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php'; /** * 受注管理 のページクラス * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Admin_Order.php 21867 2012-05-30 07:37:01Z nakanishi $ */ class LC_Page_Admin_Order extends LC_Page_Admin_Ex { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); $this->tpl_mainpage = 'order/index.tpl'; $this->tpl_mainno = 'order'; $this->tpl_subno = 'index'; $this->tpl_pager = 'pager.tpl'; $this->tpl_maintitle = '受注管理'; $this->tpl_subtitle = '受注管理'; $masterData = new SC_DB_MasterData_Ex(); $this->arrORDERSTATUS = $masterData->getMasterData('mtb_order_status'); $this->arrORDERSTATUS_COLOR = $masterData->getMasterData('mtb_order_status_color'); $this->arrSex = $masterData->getMasterData('mtb_sex'); $this->arrPageMax = $masterData->getMasterData('mtb_page_max'); $objDate = new SC_Date_Ex(); // 登録・更新日検索用 $objDate->setStartYear(RELEASE_YEAR); $objDate->setEndYear(DATE('Y')); $this->arrRegistYear = $objDate->getYear(); // 生年月日検索用 $objDate->setStartYear(BIRTH_YEAR); $objDate->setEndYear(DATE('Y')); $this->arrBirthYear = $objDate->getYear(); // 月日の設定 $this->arrMonth = $objDate->getMonth(); $this->arrDay = $objDate->getDay(); // 支払い方法の取得 $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList('dtb_payment', 'payment_id', 'payment_method'); // ▼受注一覧画面でステータスを変更する $this->arrORDERSTATUS = $masterData->getMasterData("mtb_order_status"); // ▲受注一覧画面でステータスを変更する $this->httpCacheControl('nocache'); } /** * Page のプロセス. * * @return void */ function process() { $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { $objFormParam = new SC_FormParam_Ex(); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $this->arrHidden = $objFormParam->getSearchArray(); $this->arrForm = $objFormParam->getFormParamList(); switch ($this->getMode()) { // 削除 case 'delete': $this->doDelete('order_id = ?', array($objFormParam->getValue('order_id'))); // 削除後に検索結果を表示するため breakしない // 検索パラメーター生成後に処理実行するため breakしない case 'csv': case 'delete_all': // 検索パラメーターの生成 case 'search': $objFormParam->convParam(); $objFormParam->trimParam(); $this->arrErr = $this->lfCheckError($objFormParam); $arrParam = $objFormParam->getHashArray(); if (count($this->arrErr) == 0) { $where = 'del_flg = 0'; $arrWhereVal = array(); foreach ($arrParam as $key => $val) { if ($val == '') { continue; } $this->buildQuery($key, $where, $arrWhereVal, $objFormParam); } $order = 'update_date DESC'; /* ----------------------------------------------- * 処理を実行 * ----------------------------------------------- */ switch ($this->getMode()) { // CSVを送信する。 case 'csv': $this->doOutputCSV($where, $arrWhereVal, $order); SC_Response_Ex::actionExit(); break; // 全件削除(ADMIN_MODE) case 'delete_all': $this->doDelete($where, $arrWhereVal); break; // 検索実行 default: // 行数の取得 $this->tpl_linemax = $this->getNumberOfLines($where, $arrWhereVal); // ページ送りの処理 $page_max = SC_Utils_Ex::sfGetSearchPageMax($objFormParam->getValue('search_page_max')); // ページ送りの取得 $objNavi = new SC_PageNavi_Ex($this->arrHidden['search_pageno'], $this->tpl_linemax, $page_max, 'fnNaviSearchPage', NAVI_PMAX); $this->arrPagenavi = $objNavi->arrPagenavi; // 検索結果の取得 $this->arrResults = $this->findOrders($where, $arrWhereVal, $page_max, $objNavi->start_row, $order); break; } } break; // ▼受注一覧画面でステータスを変更する case 'status'; if($_POST['change_status']!='' || $_POST['change_status'] != NULL){ //変更するスタータスが選択されている if(isset($_POST['status_order_id'])){ //変更する受注チェックボックスが選択されている $this->lfStatusMove($_POST['change_status'],$_POST['status_order_id']); }else{ //変更する受注チェックボックスが選択されていない $this->change_status_err = "ステータスを変更する受注を選択してください。"; } }else{ //変更するスタータスが選択されていない $this->change_status_err = "変更するステータスを選択してください。"; } //検索条件キーワードの変換 $objFormParam->convParam(); //パラメータの空白文字の削除 $objFormParam->trimParam(); //検索キーワードのエラーチェック $this->arrErr = $this->lfCheckError($objFormParam); //パラメータの取得 $arrParam = $objFormParam->getHashArray(); //エラーがないならば if (count($this->arrErr) == 0) { $where = "del_flg = 0"; foreach ($arrParam as $key => $val) { if($val == "") { continue; } //検索条件が設定されていれば検索対象にするwhere文を作成する $this->buildQuery($key, $where, $arrval, $objFormParam); } $order = "update_date DESC"; /* ----------------------------------------------- * 処理を実行 * ----------------------------------------------- */ // 行数の取得 $this->tpl_linemax = $this->getNumberOfLines($where, $arrval); // ページ送りの処理 $page_max = SC_Utils_Ex::sfGetSearchPageMax($objFormParam->getValue('search_page_max')); // ページ送りの取得 $objNavi = new SC_PageNavi_Ex($this->arrHidden['search_pageno'],$this->tpl_linemax, $page_max,'fnNaviSearchPage', NAVI_PMAX); $this->arrPagenavi = $objNavi->arrPagenavi; // 検索結果の取得 $this->arrResults = $this->findOrders($where, $arrval,$page_max, $objNavi->start_row, $order); } break; // ▲受注一覧画面でステータスを変更する default: break; } } // ▼受注一覧画面でステータスを変更する function lfStatusMove($statusId, $arrOrderId) { $objPurchase = new SC_Helper_Purchase_Ex(); $objQuery = new SC_Query_Ex(); if (!isset($arrOrderId) || !is_array($arrOrderId)) { return false; } $masterData = new SC_DB_MasterData_Ex(); $arrORDERSTATUS = $masterData->getMasterData("mtb_order_status"); $objQuery->begin(); foreach ($arrOrderId as $orderId) { $objPurchase->sfUpdateOrderStatus($orderId, $statusId); } $objQuery->commit(); $this->tpl_onload = "window.alert('選択項目を" . $arrORDERSTATUS[$statusId] . "へ移動しました。');"; return true; } // ▲受注一覧画面でステータスを変更する /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } ・ ・ ・ ・
(2)■data/Smarty/templates/admin/order/index.tpl
「▼受注一覧画面でステータスを変更する」の箇所を修正・追加します。
・ ・ ・ ・ <div class="btn"> <p class="page_rows">検索結果表示件数 <!--{assign var=key value="search_page_max"}--> <span class="attention"><!--{$arrErr[$key]}--></span> <select name="<!--{$arrForm[$key].keyname}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"> <!--{html_options options=$arrPageMax selected=$arrForm[$key].value}--> </select> 件</p> <div class="btn-area"> <ul> <li class="btn-action"><a href="javascript:;" onclick="fnFormModeSubmit('search_form', 'search', '', ''); return false;"><span class="btn-next">この条件で検索する</span></a></li> </ul> </div> </div> <!--検索条件設定テーブルここまで--> </form> <!--▼受注一覧画面でステータスを変更する--> <!--もとのコードは、if count($arrErr) == 0 and ($smarty.post.mode == 'search' or $smarty.post.mode == 'delete') --> <!--{if count($arrErr) == 0 and ($smarty.post.mode == 'status' or $smarty.post.mode == 'search' or $smarty.post.mode == 'delete')}--> <!--▲受注一覧画面でステータスを変更する--> <!--★★検索結果一覧★★--> <form name="form1" id="form1" method="post" action="?"> <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> <input type="hidden" name="mode" value="search" /> <input type="hidden" name="order_id" value="" /> <!--{foreach key=key item=item from=$arrHidden}--> <!--{if is_array($item)}--> <!--{foreach item=c_item from=$item}--> <input type="hidden" name="<!--{$key|h}-->[]" value="<!--{$c_item|h}-->" /> <!--{/foreach}--> <!--{else}--> <input type="hidden" name="<!--{$key|h}-->" value="<!--{$item|h}-->" /> <!--{/if}--> <!--{/foreach}--> <h2>検索結果一覧</h2> <div class="btn"> <span class="attention"><!--検索結果数--><!--{$tpl_linemax}-->件</span> が該当しました。 <!--{if $smarty.const.ADMIN_MODE == '1'}--> <a class="btn-normal" href="javascript:;" onclick="fnModeSubmit('delete_all','',''); return false;"><span>検索結果をすべて削除</span></a> <!--{/if}--> <a class="btn-normal" href="javascript:;" onclick="fnModeSubmit('csv','',''); return false;">CSV ダウンロード</a> <a class="btn-normal" href="../contents/csv.php?tpl_subno_csv=order">CSV 出力項目設定</a> <a class="btn-normal" href="javascript:;" onclick="fnSelectCheckSubmit('pdf.php'); return false;"><span>PDF一括出力</span></a> <a class="btn-normal" href="javascript:;" onclick="fnSelectMailCheckSubmit('mail.php'); return false;"><span>メール一括通知</span></a> <!--▼受注一覧画面でステータスを変更する--> <div style=" width:60%; border:#CCC 1px solid; padding:3px; background-color:#f7f7f7; text-align:center; margin:0 auto; margin-top:20px;"> <span class="bold">ステータスの変更</span> ①該当ボックスをチェック ② <!-- ステータスを選択するセレクトボックス --> <select name="change_status"> <option value="" selected>選択してください</option> <!--{html_options options=$arrORDERSTATUS}--> <option value="delete">削除</option> </select> ③<a class="btn-normal" href="javascript:;" onclick="fnModeSubmit('status','',''); return false;"><span>変更する</span></a> <!--{assign var=key1 value=$change_status_err}--> <!-- エラーがあれば表示 --> <!--{if $key1 != "" || $key1 != NULL}--> <div class="attention" style="text-align:right;"><!--{$key1}--></div> <!--{/if}--> </div> <!--▲受注一覧画面でステータスを変更する--> </div> <!--{if count($arrResults) > 0}--> <!--{include file=$tpl_pager}--> <!--{* 検索結果表示テーブル *}--> <table class="list"> <col width="5%" /><!--▼←受注一覧画面でステータスを変更する--> <col width="10%" /> <col width="8%" /> <col width="15%" /><!--▼←受注一覧画面でステータスを変更する 15%から10%に変更--> <col width="8%" /> <col width="10%" /> <col width="10%" /> <col width="10%" /> <col width="10%" /> <col width="5%" /> <col width="9%" /> <col width="5%" /> <!--{* ペイジェントモジュール連携用 *}--> <!--{assign var=path value=`$smarty.const.MODULE_REALDIR`mdl_paygent/paygent_order_index.tpl}--> <!--{if file_exists($path)}--> <!--{include file=$path}--> <!--{else}--> <tr> <th>ステータス変更</th><!--▼←受注一覧画面でステータスを変更する--> <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="fnAllCheck(this, 'input[name=pdf_order_id[]]')" /></th> <th>編集</th> <th>メール <input type="checkbox" name="mail_check" id="mail_check" onclick="fnAllCheck(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"> <input type="checkbox" name="status_order_id[]" value="<!--{$arrResults[cnt].order_id}-->" id="status_order_id_<!--{$arrResults[cnt].order_id}-->"/><br> </td> <!--▲受注一覧画面でステータスを変更する--> <td class="center"><!--{$arrResults[cnt].create_date|sfDispDBDate}--></td> <td class="center"><!--{$arrResults[cnt].order_id}--></td> <td><!--{$arrResults[cnt].order_name01|h}--> <!--{$arrResults[cnt].order_name02|h}--></td> <!--{assign var=payment_id value="`$arrResults[cnt].payment_id`"}--> <td class="center"><!--{$arrPayments[$payment_id]}--></td> <td class="right"><!--{$arrResults[cnt].total|number_format}--></td> <td class="center"><!--{$arrResults[cnt].commit_date|sfDispDBDate|default:"未発送"}--></td> <td class="center"><!--{$arrORDERSTATUS[$status]}--></td> <td class="center"> <input type="checkbox" name="pdf_order_id[]" value="<!--{$arrResults[cnt].order_id}-->" id="pdf_order_id_<!--{$arrResults[cnt].order_id}-->"/><label for="pdf_order_id_<!--{$arrResults[cnt].order_id}-->">一括出力</label><br> <a href="./" onClick="win02('pdf.php?order_id=<!--{$arrResults[cnt].order_id}-->','pdf_input','620','650'); return false;"><span class="icon_class">個別出力</span></a> </td> <td class="center"><a href="?" onclick="fnChangeAction('<!--{$smarty.const.ADMIN_ORDER_EDIT_URLPATH}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults[cnt].order_id}-->'); return false;"><span class="icon_edit">編集</span></a></td> <td class="center"> <!--{if $arrResults[cnt].order_email|strlen >= 1}--> <input type="checkbox" name="mail_order_id[]" value="<!--{$arrResults[cnt].order_id}-->" id="mail_order_id_<!--{$arrResults[cnt].order_id}-->"/><label for="mail_order_id_<!--{$arrResults[cnt].order_id}-->">一括通知</label><br> <a href="?" onclick="fnChangeAction('<!--{$smarty.const.ADMIN_ORDER_MAIL_URLPATH}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults[cnt].order_id}-->'); return false;"><span class="icon_mail">個別通知</span></a> <!--{/if}--> </td> <td class="center"><a href="?" onclick="fnModeSubmit('delete_order', 'order_id', <!--{$arrResults[cnt].order_id}-->); return false;"><span class="icon_delete">削除</span></a></td> </tr> <!--{/section}--> <!--{/if}--> </table> <!--{* 検索結果表示テーブル *}--> <!--{/if}--> </form> <!--{/if}--> </div>