バージョン選択

フォーラム

メニュー

オンライン状況

25 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 25
もっと...

サイト内検索

バグ報告 > 管理機能 > 受注登録編集画面:お届け日欄の実在日をチェックしていない。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sumida
投稿日時: 2013/4/6 21:55
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
受注登録編集画面:お届け日欄の実在日をチェックしていない。
受注登録編集画面:お届け日欄を編集し、
実在しない日付を指定すると、エラーなく、2005年で編集される。

data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
            case 'edit':
                $objFormParam->setParam($_POST);
                $objFormParam->convParam();
                $this->arrErr = $this->lfCheckError($objFormParam);
                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $message = '受注を編集しました。';
                    $order_id = $this->doRegister($order_id, $objPurchase, $objFormParam, $message, $arrValuesBefore);
                    if ($order_id >= 0) {
                        $this->setOrderToFormParam($objFormParam, $order_id);
                    }
                    $this->tpl_onload = "window.alert('" . $message . "');";
                }
                break;

lfCheckErrorの中で実在日をチェックする必要があるのでは?
sumida
投稿日時: 2013/4/6 22:57
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 受注登録編集画面:お届け日欄の実在日をチェックしていない。
4/7 修正(日付を指定しない場合を考慮していませんでした。)

data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    function lfCheckError(&$objFormParam) {
        $objProduct = new SC_Product_Ex();

        $arrErr = $objFormParam->checkError();

        if (!SC_Utils_Ex::isBlank($objErr->arrErr)) {
            return $arrErr;
        }
// added
         $arrAllShipping = $objFormParam->getSwapArray($this->arrShippingKeys);
        foreach ($arrAllShipping as $shipping_index => $arrShipping) {
            $year  = $arrShipping['shipping_date_year'];
            $month = $arrShipping['shipping_date_month'];
            $day   = $arrShipping['shipping_date_day'];
            if ($year != '' && $month != '' && $day != '' &&
                !checkdate($month, $day, $year)) {
                $arrErr['shipping_date_day'][$shipping_index] = 'お届け日が実在しません。<br />';
            }
        }
// added

とりあえず、実在しない場合、「日」をエラーにしてみました。
sumida
投稿日時: 2013/4/8 22:22
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 受注登録編集画面:お届け日欄の実在日をチェックしていない。
実在日のチェックは、
http://svn.ec-cube.net/open_trac/changeset/22524
を参考にして仕様統一した方が良いですね。

お届け先は、配列になっているので、getValue関数で値が取得できれば良いのですが。
sumida
投稿日時: 2013/4/9 17:35
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 受注登録編集画面:お届け日欄の実在日をチェックしていない。
こんなのにしてみました。
(1)受注登録編集画面
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    function lfCheckError(&$objFormParam) {
// added
        $arrParams = $objFormParam->getHashArray();
// added
        $objProduct = new SC_Product_Ex();

        $arrErr = $objFormParam->checkError();
// added
        $objError = new SC_CheckError_Ex($arrParams);
        $objError->doFunc(array('お届け日', 'shipping_date_year', 'shipping_date_month', 'shipping_date_day'), array('CHECK_DATE'));
        $arrErr = array_merge($arrErr, $objError->arrErr);
// added

(2)日付チェック
data/class/SC_CheckError.php
    function CHECK_DATE($value) {
        if (isset($this->arrErr[$value[1]])) {
            return;
        }
        $this->createParam($value);
// added
// 日付が連想配列になっているか。(例:お届け日)
if (is_array($this->arrParam[$value[1]])) {
        foreach ($this->arrParam[$value[1]] as $key_index => $year) {
            // 少なくともどれか一つが入力されている。
            // $year = $this->arrParam[$value[1]][$key_index];
            $month = $this->arrParam[$value[2]][$key_index];
            $day = $this->arrParam[$value[3]][$key_index];
            if ($year > 0 || $month > 0 || $day > 0) {
                // 年月日のどれかが入力されていない。
                if (!(strlen($year) > 0 && strlen($month) > 0 && strlen($day) > 0)) {
                    $this->arrErr[$value[1]][$key_index] = '※ ' . $value[0] . 'はすべての項目を入力して下さい。<br />';
                } else if (! checkdate($month, $day, $year)) {
                    $this->arrErr[$value[1]][$key_index] = '※ ' . $value[0] . 'が正しくありません。<br />';
                }
            }
        }
} else {
// added
        // 少なくともどれか一つが入力されている。
        if ($this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0 || $this->arrParam[$value[3]] > 0) {
            // 年月日のどれかが入力されていない。
            if (!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0)) {
                $this->arrErr[$value[1]] = '※ ' . $value[0] . 'はすべての項目を入力して下さい。<br />';
            } else if (! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) {
                $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が正しくありません。<br />';
            }

        }
// added
}
// added
    }



6/11 修正方法を変更しました。
お届け先ごとに、お届け日を実在日チェックするようにしました。
そのため、(2)に修正は加えません。
(1)受注登録編集画面
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    function lfCheckError(&$objFormParam) {
// added
        $arrParams = $objFormParam->getHashArray();
// added
        $objProduct = new SC_Product_Ex();

        $arrErr = $objFormParam->checkError();
// added
        $arrErrDate = array();
        foreach ($arrParams['shipping_date_year'] as $key_index => $year) {
            // $year = $arrParams['shipping_date_year'][$key_index];
            $month = $arrParams['shipping_date_month'][$key_index];
            $day = $arrParams['shipping_date_day'][$key_index];
            $objError = new SC_CheckError_Ex(array('shipping_date_year' => $year,
                                             'shipping_date_month' => $month,
                                             'shipping_date_day' => $day));
            $objError->doFunc(array('お届け日', 'shipping_date_year', 'shipping_date_month', 'shipping_date_day'), array('CHECK_DATE'));
            $arrErrDate['shipping_date_year'][$key_index] = $objError->arrErr['shipping_date_year'];
        }
        $arrErr = array_merge($arrErr, $arrErrDate);
// added


(2)日付チェック
data/class/SC_CheckError.php
変更を取り消します。(修正しません。)
AMUAMU
投稿日時: 2013/4/10 3:23
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 受注登録編集画面:お届け日欄の実在日をチェックしていない。
取り急ぎチケット登録しました。

http://svn.ec-cube.net/open_trac/ticket/2222

※sumidaさんはコミッター登録されていないのですかね?していないようであれば、是非していただきたい・・・


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は66,569名です
総投稿数は98,355件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2646
4
nanasess
2103
5
umebius
1753
6
yuh
1612
7
red
1424
8
h_tanaka
1044
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.