Beispiel #1
0
 /**
  * 関連商品登録を行う.
  *
  * FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
  *        DELETE/INSERT ではなく UPDATEへの変更も・・・
  *
  * @param  Query $objQuery   Queryインスタンス
  * @param  array    $arrList    商品規格情報配列
  * @param  integer  $product_id 商品ID
  * @return void
  */
 public function lfRegistReccomendProducts($objQuery, $arrList, $product_id)
 {
     $objQuery->delete('dtb_recommend_products', 'product_id = ?', array($product_id));
     for ($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) {
         $keyname = 'recommend_product_id' . $i;
         $comment_key = 'recommend_comment' . $i;
         if ($arrList[$keyname] != '') {
             $arrProduct = $objQuery->select('product_id', 'dtb_products', 'product_id = ?', array($arrList[$keyname]));
             if ($arrProduct[0]['product_id'] != '') {
                 $arrWhereVal = array();
                 $arrWhereVal['product_id'] = $product_id;
                 $arrWhereVal['recommend_product_id'] = $arrProduct[0]['product_id'];
                 $arrWhereVal['comment'] = $arrList[$comment_key];
                 $arrWhereVal['update_date'] = $arrList['update_date'];
                 $arrWhereVal['create_date'] = $arrList['update_date'];
                 $arrWhereVal['creator_id'] = $_SESSION['member_id'];
                 $arrWhereVal['rank'] = RECOMMEND_PRODUCT_MAX - $i + 1;
                 $objQuery->insert('dtb_recommend_products', $arrWhereVal);
             }
         }
     }
 }
Beispiel #2
0
    /**
     * Query インスタンスに設定された検索条件を使用して商品規格を取得する.
     *
     * @param  Query $objQuery Queryインスタンス
     * @param  array    $params   検索パラメーターの配列
     * @return array    商品規格の配列
     */
    public function getProductsClassByQuery(Query &$objQuery, $params)
    {
        // 末端の規格を取得
        $col = <<<__EOS__
            T1.product_id,
            T1.stock,
            T1.stock_unlimited,
            T1.sale_limit,
            T1.price01,
            T1.price02,
            T1.point_rate,
            T1.product_code,
            T1.product_class_id,
            T1.del_flg,
            T1.product_type_id,
            T1.down_filename,
            T1.down_realfilename,
            T3.name AS classcategory_name1,
            T3.rank AS rank1,
            T4.name AS class_name1,
            T4.class_id AS class_id1,
            T1.classcategory_id1,
            T1.classcategory_id2,
            dtb_classcategory2.name AS classcategory_name2,
            dtb_classcategory2.rank AS rank2,
            dtb_class2.name AS class_name2,
            dtb_class2.class_id AS class_id2
__EOS__;
        $table = <<<__EOS__
            dtb_products_class T1
            LEFT JOIN dtb_classcategory T3
                ON T1.classcategory_id1 = T3.classcategory_id
            LEFT JOIN dtb_class T4
                ON T3.class_id = T4.class_id
            LEFT JOIN dtb_classcategory dtb_classcategory2
                ON T1.classcategory_id2 = dtb_classcategory2.classcategory_id
            LEFT JOIN dtb_class dtb_class2
                ON dtb_classcategory2.class_id = dtb_class2.class_id
__EOS__;
        $objQuery->andWhere(' T3.classcategory_id is not null AND dtb_classcategory2.classcategory_id is not null ');
        $objQuery->setOrder('T3.rank DESC, dtb_classcategory2.rank DESC');
        // XXX
        $arrRet = $objQuery->select($col, $table, '', $params);
        return $arrRet;
    }
Beispiel #3
0
 /**
  * 規格データをコピーする
  *
  * @param  array   $arrList  フォーム入力パラメーター配列
  * @param  Query  $objQuery Queryインスタンス
  * @return boolean エラーフラグ
  */
 public function lfCopyProductClass($arrList, &$objQuery)
 {
     // 複製元のdtb_products_classを取得(規格なしのため、1件のみの取得)
     $col = '*';
     $table = 'dtb_products_class';
     $where = 'product_id = ?';
     $arrProductClass = $objQuery->select($col, $table, $where, array($arrList['copy_product_id']));
     //トランザクション開始
     $objQuery->begin();
     $err_flag = false;
     //非編集項目は複製、編集項目は上書きして登録
     foreach ($arrProductClass as $records) {
         foreach ($records as $key => $value) {
             if (isset($arrList[$key])) {
                 switch ($key) {
                     case 'stock_unlimited':
                         $records[$key] = (int) $arrList[$key];
                         break;
                     default:
                         $records[$key] = $arrList[$key];
                         break;
                 }
             }
         }
         $records['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
         $records['update_date'] = 'CURRENT_TIMESTAMP';
         $records['create_date'] = 'CURRENT_TIMESTAMP';
         $objQuery->insert($table, $records);
         //エラー発生時は中断
         if ($objQuery->isError()) {
             $err_flag = true;
             continue;
         }
     }
     //トランザクション終了
     if ($err_flag) {
         $objQuery->rollback();
     } else {
         $objQuery->commit();
     }
     return !$err_flag;
 }
Beispiel #4
0
 /**
  * 親IDの配列を元に特定のカラムを取得する.
  *
  * @param  Query $objQuery Query インスタンス
  * @param  string   $table    テーブル名
  * @param  string   $id_name  ID名
  * @param  string   $col_name カラム名
  * @param  array    $arrId    IDの配列
  * @return array    特定のカラムの配列
  */
 public function getParentsCol(Query $objQuery, $table, $id_name, $col_name, $arrId)
 {
     $col = $col_name;
     $len = count($arrId);
     $where = '';
     for ($cnt = 0; $cnt < $len; $cnt++) {
         if ($where == '') {
             $where = "{$id_name} = ?";
         } else {
             $where .= " OR {$id_name} = ?";
         }
     }
     $objQuery->setOrder('level');
     $arrRet = $objQuery->select($col, $table, $where, $arrId);
     return $arrRet;
 }