EC-CUBEでゼロ円商品を扱う

商品価格が「0」の場合、エラーになり次へ進めません。
でもゼロ円商品を設けたいという場合も多々あると思います。

対象ファイル: data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
556行目付近

フォームからの入力チェックが書かれているので、そこを調整すればOKです。

// 入力エラーチェック
function lfErrorCheck($array) {

    $objErr = new SC_CheckError($array);
    $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("一覧-メインコメント", "main_list_comment", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("詳細-メインコメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("詳細-メインコメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK"));
    $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("備考欄(SHOP専用)", "note", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("検索ワード", "comment3", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("メーカーURL", "comment1", URL_LEN), array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK"));
    $objErr->doFunc(array("発送日目安", "deliv_date_id", INT_LEN), array("NUM_CHECK"));

    if($this->tpl_nonclass) {
        $objErr->doFunc(array("商品コード", "product_code", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK"));
        $objErr->doFunc(array("通常価格", "price01", PRICE_LEN), array("MAX_LENGTH_CHECK"));
        $objErr->doFunc(array("商品価格", "price02", PRICE_LEN), array("MAX_LENGTH_CHECK"));

        if(!isset($array['stock_unlinited']) && $array['stock_unlimited'] != "1") {
            $objErr->doFunc(array("在庫数", "stock", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
        }
    }

    if(!isset($array['sale_unlimited']) && $array['sale_unlimited'] != "1") {
        $objErr->doFunc(array("購入制限", "sale_limit", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
    }

    for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) {
        $objErr->doFunc(array("詳細-サブタイトル$cnt", "sub_title$cnt", STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
        $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
        $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", $this->arrAllowedTag),  array("HTML_TAG_CHECK"));
    }

規格分けする場合のゼロ円商品対応
“price01” “price02″ はソート検索で、該当箇所は対応済みだが、商品規格の価格ではゼロ円がエラーになってしまう。

該当ファイル: data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
しかし、このファイルでは、”price01” “price02” という文字が出てこない、目視で探して対応できました。

コメントを残す