Ignore:
Timestamp:
2010/02/12 18:46:50 (14 years ago)
Author:
kajiwara
Message:

EC-CUBE Ver2.4.3 分コミット。詳細はこちら( http://www.ec-cube.net/release/detail.php?release_id=210

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r18432 r18562  
    111111        $objSiteInfo = new SC_SiteInfo(); 
    112112        $objDb = new SC_Helper_DB_Ex(); 
     113        $objDate = new SC_Date(1901);  
     114        $this->arrYearDelivDate = $objDate->getYear('', date('Y'), ''); 
     115        $this->arrMonthDelivDate = $objDate->getMonth(true); 
     116        $this->arrDayDelivDate = $objDate->getDay(true); 
    113117        $arrInfo = $objSiteInfo->data; 
    114118 
     
    283287        // 支払い方法の取得 
    284288        $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
    285         // 配送時間の取得 
     289        // お届け時間の取得 
    286290        $arrRet = $objDb->sfGetDelivTime($this->objFormParam->getValue('payment_id')); 
    287291        $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 
     
    343347        $this->objFormParam->addParam("郵便番号2", "order_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    344348        $this->objFormParam->addParam("都道府県", "order_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    345         $this->objFormParam->addParam("住所1", "order_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    346         $this->objFormParam->addParam("住所2", "order_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     349        $this->objFormParam->addParam("住所1", "order_addr01", MTEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     350        $this->objFormParam->addParam("住所2", "order_addr02", MTEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    347351        $this->objFormParam->addParam("電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    348352        $this->objFormParam->addParam("電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    349353        $this->objFormParam->addParam("電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    350354 
    351         // 配送先情報 
     355        // お届け先情報 
    352356        $this->objFormParam->addParam("お名前1", "deliv_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    353357        $this->objFormParam->addParam("お名前2", "deliv_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     
    357361        $this->objFormParam->addParam("郵便番号2", "deliv_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    358362        $this->objFormParam->addParam("都道府県", "deliv_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    359         $this->objFormParam->addParam("住所1", "deliv_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    360         $this->objFormParam->addParam("住所2", "deliv_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     363        $this->objFormParam->addParam("住所1", "deliv_addr01", MTEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     364        $this->objFormParam->addParam("住所2", "deliv_addr02", MTEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    361365        $this->objFormParam->addParam("電話番号1", "deliv_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    362366        $this->objFormParam->addParam("電話番号2", "deliv_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
     
    375379 
    376380        $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    377         $this->objFormParam->addParam("配送時間ID", "deliv_time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     381        $this->objFormParam->addParam("お届け時間ID", "deliv_time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    378382        $this->objFormParam->addParam("対応状況", "status", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    379         $this->objFormParam->addParam("配達日", "deliv_date", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     383        $this->objFormParam->addParam("お届け日", "deliv_date", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    380384        $this->objFormParam->addParam("お支払方法名称", "payment_method"); 
    381         $this->objFormParam->addParam("配送時間", "deliv_time"); 
     385        $this->objFormParam->addParam("お届け時間", "deliv_time"); 
    382386 
    383387        // 受注詳細情報 
     
    406410        $this->objFormParam->addParam("受注日", "create_date"); 
    407411        $this->objFormParam->addParam("発送日", "commit_date"); 
     412        $this->objFormParam->addParam("お届け日", "deliv_date");  
    408413    } 
    409414 
     
    419424            $this->objFormParam->setValue('total_point', $total_point); 
    420425            $this->objFormParam->setValue('point', $point); 
     426            $delivDate = split(" ", $arrRet[0]["deliv_date"]); 
     427            $delivDate = split("-", $delivDate[0]); 
     428            $this->objFormParam->setValue('deliv_date_year', $delivDate[0]); 
     429            $this->objFormParam->setValue('deliv_date_month', isset($delivDate[1]) ? $delivDate[1] : ""); 
     430            $this->objFormParam->setValue('deliv_date_day', isset($delivDate[2]) ? $delivDate[2] : ""); 
    421431            $this->arrForm = $arrRet[0]; 
     432 
    422433            // 受注詳細データの取得 
    423434            $arrRet = $this->lfGetOrderDetail($order_id); 
     
    456467        $objErr = new SC_CheckError($arrRet); 
    457468        $objErr->arrErr = $this->objFormParam->checkError(); 
     469 
     470        $objErr->doFunc(array("お届け日", "deliv_date_year", "deliv_date_month", "deliv_date_day"), array("CHECK_DATE")); 
     471 
     472        if (count($objErr->arrErr) >= 1) { 
     473            return $objErr->arrErr; 
     474        } 
    458475 
    459476        return $objErr->arrErr; 
     
    538555            } 
    539556        } 
     557        $sqlval['update_date'] = 'Now()'; 
     558 
     559        if (strlen($sqlval['deliv_date_year']) >= 0) { 
     560            $sqlval['deliv_date'] = $sqlval['deliv_date_year'] . '-' . $sqlval['deliv_date_month'] . '-' . $sqlval['deliv_date_day']; 
     561        } 
     562        unset($sqlval['deliv_date_year']); 
     563        unset($sqlval['deliv_date_month']); 
     564        unset($sqlval['deliv_date_day']); 
    540565 
    541566        unset($sqlval['total_point']); 
    542567        unset($sqlval['point']); 
     568        unset($sqlval['commit_date']); 
    543569 
    544570        $where = "order_id = ?"; 
     
    574600        $objQuery->query($sql, $arrUpdData); 
    575601 
     602        $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 
     603 
     604 
     605        // 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 
     606        $max = count($arrDetail); 
     607        $k = 0; 
     608        $arrStockData = array(); 
     609        for($i = 0; $i < $max; $i++) { 
     610            if (!empty($arrDetail[$i]['product_id'])) { 
     611                $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'])); 
     612                if (!empty($arrPreDetail) && $arrPreDetail[0]['quantity'] != $arrDetail[$i]['quantity']) { 
     613                    // 数量が変更された商品 
     614                    $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 
     615                    $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
     616                    $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
     617                    $arrStockData[$k]['quantity'] = $arrPreDetail[0]['quantity'] - $arrDetail[$i]['quantity']; 
     618                    ++$k; 
     619                } elseif (empty($arrPreDetail)) { 
     620                    // 新しく追加された商品 もしくは 違う商品に変更された商品 
     621                    $arrStockData[$k]['product_id'] = $arrDetail[$i]['product_id']; 
     622                    $arrStockData[$k]['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 
     623                    $arrStockData[$k]['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 
     624                    $arrStockData[$k]['quantity'] = -$arrDetail[$i]['quantity']; 
     625                    ++$k; 
     626                } 
     627                $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'])); 
     628            } 
     629        } 
     630 
     631        // 上記の新しい商品のループでDELETEされなかった商品は、注文より削除された商品 
     632        $arrPreDetail = $objQuery->select('*', "dtb_order_detail", "order_id = ?", array($order_id)); 
     633        foreach ($arrPreDetail AS $key=>$val) { 
     634            $arrStockData[$k]['product_id'] = $val['product_id']; 
     635            $arrStockData[$k]['classcategory_id1'] = $val['classcategory_id1']; 
     636            $arrStockData[$k]['classcategory_id2'] = $val['classcategory_id2']; 
     637            $arrStockData[$k]['quantity'] = $val['quantity']; 
     638            ++$k; 
     639        } 
     640 
     641        // 受注詳細データの初期化 
     642        $objQuery->delete("dtb_order_detail", $where, array($order_id)); 
     643 
     644 
    576645        // 受注詳細データの更新 
    577         $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 
    578         $objQuery->delete("dtb_order_detail", $where, array($order_id)); 
    579  
    580  
    581646        $max = count($arrDetail); 
    582647        for($i = 0; $i < $max; $i++) { 
     
    596661        } 
    597662 
     663        // 在庫数調整 
     664        $status = $sqlval['status']; 
     665        if (ORDER_DELIV != $status && ORDER_CANCEL != $status) { 
     666            $stock_sql = "UPDATE dtb_products_class SET stock = stock + ? WHERE product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?;"; 
     667            foreach ($arrStockData AS $key=>$val) { 
     668                $stock_sqlval = array(); 
     669                $stock_sqlval[] = $val['quantity']; 
     670                $stock_sqlval[] = $val['product_id']; 
     671                $stock_sqlval[] = $val['classcategory_id1']; 
     672                $stock_sqlval[] = $val['classcategory_id2']; 
     673 
     674                $objQuery->query($stock_sql, $stock_sqlval); 
     675            } 
     676        } 
    598677 
    599678        $objQuery->commit(); 
     
    683762            $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 
    684763            $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 
     764 
    685765            $objQuery->insert("dtb_order_detail", $sqlval); 
     766 
     767 
     768            // 在庫数減少処理 
     769            // 現在の実在庫数取得 
     770            $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'])); 
     771 
     772            $stock_sqlval = array(); 
     773            $stock_sqlval['stock'] = intval($pre_stock - $arrDetail[$i]['quantity']); 
     774            if ($stock_sqlval['stock'] === 0) { 
     775                $stock_sqlval['stock'] = '0'; 
     776            } 
     777 
     778            $st_params = array(); 
     779            $st_params[] = $arrDetail[$i]['product_id']; 
     780            $st_params[] = $arrDetail[$i]['classcategory_id1']; 
     781            $st_params[] = $arrDetail[$i]['classcategory_id2']; 
     782 
     783            $objQuery->update("dtb_products_class", $stock_sqlval, 'product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?', $st_params); 
    686784        } 
    687785        $objQuery->commit(); 
Note: See TracChangeset for help on using the changeset viewer.