Changeset 18872


Ignore:
Timestamp:
2010/10/28 14:55:38 (13 years ago)
Author:
nanasess
bzr:base-revision:
ohkouchi@loop-az.jp-20101027032001-13l3ma4hbgpfw2fc
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/Smarty/templates/default/admin/order/edit.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Forder%2Fedit.tpl
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 15594@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_Edit.php
data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php 17293@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_ProductSelect.php
bzr:mapping-version:
v4
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20101028055535-hj03x06b2u513iap
bzr:revno:
2352
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:timestamp:
2010-10-28 14:55:35.648000002 +0900
bzr:user-agent:
bzr2.2.0+bzr-svn1.0.3
svn:original-date:
2010-10-28T05:55:35.648000Z
Message:

規格のデータベースを木構造に(#781)

  • 管理画面 -> 受注管理で受注更新できない不具合の修正
  • FIXME 商品追加時の規格のプルダウンを要修正
Location:
branches/version-2_5-dev/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/Smarty/templates/default/admin/order/edit.tpl

    r18853 r18872  
    5757<input type="hidden" name="anchor_key" value="" /> 
    5858<input type="hidden" id="add_product_id" name="add_product_id" value="" /> 
    59 <input type="hidden" id="add_classcategory_id1" name="add_classcategory_id1" value="" /> 
    60 <input type="hidden" id="add_classcategory_id2" name="add_classcategory_id2" value="" /> 
     59<input type="hidden" id="add_product_class_id" name="add_product_class_id" value="" /> 
    6160<input type="hidden" id="edit_product_id" name="edit_product_id" value="" /> 
    62 <input type="hidden" id="edit_classcategory_id1" name="edit_classcategory_id1" value="" /> 
    63 <input type="hidden" id="edit_classcategory_id2" name="edit_classcategory_id2" value="" /> 
     61<input type="hidden" id="edit_product_class_id" name="edit_product_class_id" value="" /> 
    6462<input type="hidden" id="no" name="no" value="" /> 
    6563<input type="hidden" id="delete_no" name="delete_no" value="" /> 
     
    341339                <!--{/if}--> 
    342340            <input type="hidden" name="product_id[<!--{$key}-->]" value="<!--{$arrForm.product_id.value[$key]}-->" id="product_id_<!--{$key}-->" /> 
     341            <input type="hidden" name="product_class_id[<!--{$key}-->]" value="<!--{$arrForm.product_class_id.value[$key]}-->" id="product_class_id_<!--{$key}-->" /> 
    343342            <input type="hidden" name="point_rate[<!--{$key}-->]" value="<!--{$arrForm.point_rate.value[$key]}-->" id="point_rate_<!--{$key}-->" /> 
    344             <input type="hidden" name="classcategory_id1[<!--{$key}-->]" value="<!--{$arrForm.classcategory_id1.value[$key]}-->" id="classcategory_id1_<!--{$key}-->" /> 
    345             <input type="hidden" name="classcategory_id2[<!--{$key}-->]" value="<!--{$arrForm.classcategory_id2.value[$key]}-->" id="classcategory_id2_<!--{$key}-->" /> 
    346343            </td> 
    347344            <td align="center"><input type="text" name="price[<!--{$key}-->]" value="<!--{$arrForm.price.value[$key]|escape}-->" size="6" class="box6" maxlength="<!--{$arrForm.price.length}-->" id="price_<!--{$key}-->"/> 円</td> 
  • branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r18858 r18872  
    386386        $this->objFormParam->addParam("数量", "quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 
    387387        $this->objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 
     388        $this->objFormParam->addParam("商品規格ID", "product_class_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 
    388389        $this->objFormParam->addParam("ポイント付与率", "point_rate"); 
    389390        $this->objFormParam->addParam("商品コード", "product_code"); 
    390391        $this->objFormParam->addParam("商品名", "product_name"); 
    391         $this->objFormParam->addParam("規格1", "classcategory_id1"); 
    392         $this->objFormParam->addParam("規格2", "classcategory_id2"); 
    393392        $this->objFormParam->addParam("規格名1", "classcategory_name1"); 
    394393        $this->objFormParam->addParam("規格名2", "classcategory_name2"); 
     
    549548        SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 
    550549 
    551         $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 
     550        $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_class_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_name1", "classcategory_name2")); 
    552551 
    553552 
     
    558557        for($i = 0; $i < $max; $i++) { 
    559558            if (!empty($arrDetail[$i]['product_id'])) { 
    560                 $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ? AND product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?", array($order_id, $arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 
     559                $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ? AND product_class_id = ?", array($order_id, $arrDetail[$i]['product_class_id'])); 
    561560                if (!empty($arrPreDetail) && $arrPreDetail[0]['quantity'] != $arrDetail[$i]['quantity']) { 
    562561                    // 数量が変更された商品 
    563                     $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 
    564                     $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
    565                     $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
     562                    $arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; 
    566563                    $arrStockData[$k]['quantity'] = $arrPreDetail[0]['quantity'] - $arrDetail[$i]['quantity']; 
    567564                    ++$k; 
    568565                } elseif (empty($arrPreDetail)) { 
    569566                    // 新しく追加された商品 もしくは 違う商品に変更された商品 
    570                     $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 
    571                     $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
    572                     $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
     567                    $arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; 
    573568                    $arrStockData[$k]['quantity'] = -$arrDetail[$i]['quantity']; 
    574569                    ++$k; 
    575570                } 
    576                 $objQuery->delete("dtb_order_detail", "order_id = ? AND product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?", array($order_id, $arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 
     571                $objQuery->delete("dtb_order_detail", "order_id = ? AND product_class_id = ?", array($order_id, $arrDetail[$i]['product_class_id'])); 
    577572            } 
    578573        } 
     
    581576        $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ?", array($order_id)); 
    582577        foreach ($arrPreDetail AS $key=>$val) { 
    583             $arrStockData[$k]['product_id'] = $val['product_id']; 
    584             $arrStockData[$k]['classcategory_id1'] = $val['classcategory_id1']; 
    585             $arrStockData[$k]['classcategory_id2'] = $val['classcategory_id2']; 
     578            $arrStockData[$k]['product_class_id'] = $val['product_class_id']; 
    586579            $arrStockData[$k]['quantity'] = $val['quantity']; 
    587580            ++$k; 
     
    597590            $sqlval['order_id'] = $order_id; 
    598591            $sqlval['product_id']  = $arrDetail[$i]['product_id']; 
     592            $sqlval['product_class_id']  = $arrDetail[$i]['product_class_id']; 
    599593            $sqlval['product_code']  = $arrDetail[$i]['product_code']; 
    600594            $sqlval['product_name']  = $arrDetail[$i]['product_name']; 
     
    602596            $sqlval['quantity']  = $arrDetail[$i]['quantity']; 
    603597            $sqlval['point_rate']  = $arrDetail[$i]['point_rate']; 
    604             $sqlval['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
    605             $sqlval['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
    606598            $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 
    607599            $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 
     
    612604        $status = $sqlval['status']; 
    613605        if (ORDER_DELIV != $status && ORDER_CANCEL != $status) { 
    614             $stock_sql = "UPDATE dtb_products_class SET stock = stock + ? WHERE product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?;"; 
     606            $stock_sql = "UPDATE dtb_products_class SET stock = stock + ? WHERE product_class_id = ?"; 
    615607            foreach ($arrStockData AS $key=>$val) { 
    616608                $stock_sqlval = array(); 
    617609                $stock_sqlval[] = $val['quantity']; 
    618                 $stock_sqlval[] = $val['product_id']; 
    619                 $stock_sqlval[] = $val['classcategory_id1']; 
    620                 $stock_sqlval[] = $val['classcategory_id2']; 
     610                $stock_sqlval[] = $val['product_class_id']; 
    621611 
    622612                $objQuery->query($stock_sql, $stock_sqlval); 
     
    665655 
    666656        // 受注詳細データの更新 
    667         $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 
     657        $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_class_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_name1", "classcategory_name2")); 
    668658        $objQuery->delete("dtb_order_detail", 'order_id = ?', array($order_id)); 
    669659 
     
    673663            $sqlval['order_id'] = $order_id; 
    674664            $sqlval['product_id']  = $arrDetail[$i]['product_id']; 
     665            $sqlval['product_class_id']  = $arrDetail[$i]['product_class_id']; 
    675666            $sqlval['product_code']  = $arrDetail[$i]['product_code']; 
    676667            $sqlval['product_name']  = $arrDetail[$i]['product_name']; 
     
    678669            $sqlval['quantity']  = $arrDetail[$i]['quantity']; 
    679670            $sqlval['point_rate']  = $arrDetail[$i]['point_rate']; 
    680             $sqlval['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
    681             $sqlval['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
    682671            $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 
    683672            $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 
     
    688677            // 在庫数減少処理 
    689678            // 現在の実在庫数取得 
    690             $pre_stock = $objQuery->getOne("SELECT stock FROM dtb_products_class WHERE product_id = ? AND classcategory_id1 = ?  AND classcategory_id2 = ?", array($arrDetail[$i]['product_id'], $arrDetail[$i]['classcategory_id1'], $arrDetail[$i]['classcategory_id2'])); 
     679            $pre_stock = $objQuery->getOne("SELECT stock FROM dtb_products_class WHERE product_class_id = ?", array($arrDetail[$i]['product_class_id'])); 
    691680 
    692681            $stock_sqlval = array(); 
     
    697686 
    698687            $st_params = array(); 
    699             $st_params[] = $arrDetail[$i]['product_id']; 
    700             $st_params[] = $arrDetail[$i]['classcategory_id1']; 
    701             $st_params[] = $arrDetail[$i]['classcategory_id2']; 
    702  
    703             $objQuery->update("dtb_products_class", $stock_sqlval, 'product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?', $st_params); 
     688            $st_params[] = $arrDetail[$i]['product_class_id']; 
     689 
     690            $objQuery->update("dtb_products_class", $stock_sqlval, 'product_class_id = ?', $st_params); 
    704691        } 
    705692        $objQuery->commit(); 
     
    714701        $existes_key = NULL; 
    715702        // 既に同じ商品がないか、確認する 
    716         if (!empty($this->arrForm['product_id']['value'])) { 
    717             foreach ($this->arrForm['product_id']['value'] AS $key=>$val) { 
     703        if (!empty($this->arrForm['product_class_id']['value'])) { 
     704            foreach ($this->arrForm['product_class_id']['value'] AS $key=>$val) { 
    718705                // 既に同じ商品がある場合 
    719706                if ($val == $product_id && $this->arrForm['product_id']['classcategory_id1'][$key] == $classcategory_id1 && $this->arrForm['product_id']['classcategory_id2'][$key] == $classcategory_id2) { 
     
    752739    } 
    753740 
    754     function lfGetProductsClass($product_id, $classcategory_id1, $classcategory_id2) { 
     741    function lfGetProductsClass($product_class_id) { 
    755742        $objDb = new SC_Helper_DB_Ex(); 
    756743        $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 
    757         $arrRet = $objDb->sfGetProductsClass(array($product_id, $classcategory_id1, $classcategory_id2), true); 
     744        $arrRet = $objDb->sfGetProductsClass(array($product_class_id), true); 
    758745 
    759746        $arrProduct['price'] = $arrRet['price02']; 
    760747        $arrProduct['quantity'] = 1; 
    761748        $arrProduct['product_id'] = $arrRet['product_id']; 
     749        $arrProduct['product_class_id'] = $arrRet['product_class_id']; 
    762750        $arrProduct['point_rate'] = $arrRet['point_rate']; 
    763751        $arrProduct['product_code'] = $arrRet['product_code']; 
    764752        $arrProduct['product_name'] = $arrRet['name']; 
    765         $arrProduct['classcategory_id1'] = $arrRet['classcategory_id1']; 
    766         $arrProduct['classcategory_id2'] = $arrRet['classcategory_id2']; 
    767753        $arrProduct['classcategory_name1'] = $arrClassCatName[$arrRet['classcategory_id1']]; 
    768754        $arrProduct['classcategory_name2'] = $arrClassCatName[$arrRet['classcategory_id2']]; 
  • branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php

    r18820 r18872  
     1 
    12<?php 
    23/* 
     
    8182 
    8283            $where = "del_flg = 0"; 
     84            $arrval = array(); 
    8385 
    8486            /* 入力エラーなし */ 
     
    112114             * FIXME パフォーマンスに問題があるため SC_Product::lists() を使用する 
    113115             */ 
    114             // 読み込む列とテーブルの指定 
    115             $col = "DISTINCT T1.product_id, product_code_min, product_code_max," 
    116                 . " price01_min, price01_max, price02_min, price02_max," 
    117                 . " stock_min, stock_max, stock_unlimited_min," 
    118                 . " stock_unlimited_max, del_flg, status, name, comment1," 
    119                 . " comment2, comment3, main_list_comment, main_image," 
    120                 . " main_list_image, deliv_date_id, sale_limit," 
    121                 . " point_rate, create_date, deliv_fee, " 
    122                 . " T4.product_rank, T4.category_rank"; 
    123             $from = "vw_products_allclass AS T1" 
    124                 . " JOIN (" 
    125                 . " SELECT max(T3.rank) AS category_rank," 
    126                 . "        max(T2.rank) AS product_rank," 
    127                 . "        T2.product_id" 
    128                 . "   FROM dtb_product_categories T2" 
    129                 . "   JOIN dtb_category T3 USING (category_id)" 
    130                 . " GROUP BY product_id) AS T4 USING (product_id)"; 
    131             $order = "T4.category_rank DESC, T4.product_rank DESC"; 
     116            $objProduct = new SC_Product(); 
     117            $productIds = $objProduct->findProductIds($objQuery, $arrval); 
    132118 
    133119            // 行数の取得 
    134             if (empty($arrval)) { 
    135                 $arrval = array(); 
    136             } 
    137             $linemax = $objQuery->count("dtb_products", $where, $arrval); 
    138             $this->tpl_linemax = $linemax;              // 何件が該当しました。表示用 
     120            $linemax = count($productIds); 
     121            $this->tpl_linemax = $linemax; 
    139122 
    140123            // ページ送りの処理 
     
    157140 
    158141            // 検索結果の取得 
    159             $this->arrProducts = $objQuery->select($col, $from, $where, $arrval); 
    160  
    161             // 規格名一覧 
    162             $arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name"); 
    163  
    164             // 規格分類名一覧 
    165             $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 
    166  
    167             // 規格セレクトボックス設定 
    168             for($i = 0; $i < count($this->arrProducts); $i++) { 
    169                 $this->lfMakeSelect($this->arrProducts[$i]['product_id'], $arrClassName, $arrClassCatName); 
    170             } 
     142            $this->arrProducts = $objProduct->lists($objQuery, $arrval); 
     143            $objProduct->setProductsClassByProductIds($productIds); 
     144            // 規格1クラス名 
     145            $this->tpl_class_name1 = $objProduct->className1; 
     146 
     147            // 規格2クラス名 
     148            $this->tpl_class_name2 = $objProduct->className2; 
     149 
     150            // 規格1 
     151            $this->arrClassCat1 = $objProduct->classCats1; 
     152 
     153            // 規格1が設定されている 
     154            $this->tpl_classcat_find1 = $objProduct->classCat1_find; 
     155            // 規格2が設定されている 
     156            $this->tpl_classcat_find2 = $objProduct->classCat2_find; 
     157 
     158            $this->tpl_stock_find = $objProduct->stock_find; 
     159            $this->tpl_product_class_id = $objProduct->product_class_id; 
     160            $this->tpl_product_type = $objProduct->product_type; 
     161 
     162            // FIXME 規格のプルダウンを要修正 
     163            $this->tpl_javascript = ""; 
    171164        } 
    172165 
Note: See TracChangeset for help on using the changeset viewer.