Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php (revision 18819)
@@ -1869,4 +1869,9 @@
$sqlval['commit_date'] = 'Now()';
}
+ // ステータスが入金済みに変更の場合、入金日を更新
+ elseif ($arrOrderOld['status'] != ORDER_PRE_END && $newStatus == ORDER_PRE_END) {
+ $sqlval['payment_date'] = 'Now()';
+ }
+
$sqlval['status'] = $newStatus;
$sqlval['update_date'] = 'Now()';
@@ -1925,9 +1930,18 @@
$nodown = false;
$ret = 0;
- $arrID = $objCartSess->getAllProductID();
+ $arrID = $objCartSess->getAllProductClassID();
+ $table = <<< __EOS__
+ dtb_products_class pc LEFT JOIN dtb_class_combination cc1 ON pc.class_combination_id = cc1.class_combination_id
+ LEFT JOIN dtb_class_combination cc2 ON cc1.parent_class_combination_id = cc2.class_combination_id
+__EOS__;
+ $where = <<< __EOS__
+ pc.product_id = ? AND
+ ( cc2.classcategory_id = ? OR cc2.classcategory_id IS NULL ) AND
+ ( cc1.classcategory_id = ? OR cc1.classcategory_id IS NULL )
+__EOS__;
if(!is_null($arrID)){
//カート内のIDから販売方法を取得
foreach ($arrID as $rec) {
- $arrRet = $objQuery->select("down", "dtb_products", "product_id = " . $rec);
+ $arrRet = $objQuery->select("pc.down AS down", $table, $where, array($rec[0],$rec[1],$rec[2]));
if ($arrRet[0]['down'] == "2"){
$down = true;
@@ -1988,6 +2002,4 @@
$this->sfRegistTempOrder($uniqid, $sqlval);
}
-
-
}
?>
Index: /branches/version-2_5-dev/data/class/SC_Product.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_Product.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/SC_Product.php (revision 18819)
@@ -234,4 +234,7 @@
T1.product_class_id,
T1.del_flg,
+ T1.down,
+ T1.down_filename,
+ T1.down_realfilename,
T2.class_combination_id,
T2.parent_class_combination_id,
@@ -254,6 +257,11 @@
$levels = array();
$parents = array();
-
+ $i = 0;
foreach ($arrRet as $rows) {
+ if($rows['level']==""){
+ $rows['level']="1";
+ $arrRet[$i]['level'] = $rows['level'];
+
+ }
$levels[] = $rows['level'];
$parents[] = $rows['parent_class_combination_id'];
@@ -414,7 +422,4 @@
dtb_products.update_date,
dtb_products.deliv_date_id,
- dtb_products.down,
- dtb_products.down_filename,
- dtb_products.down_realfilename,
T4.product_code_min,
T4.product_code_max,
Index: /branches/version-2_5-dev/data/class/SC_UploadFile.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_UploadFile.php (revision 18782)
+++ /branches/version-2_5-dev/data/class/SC_UploadFile.php (revision 18819)
@@ -137,26 +137,25 @@
// アップロードされたダウンロードファイルを保存する。
- function makeTempDownFile() {
+ function makeTempDownFile($keyname='down_file') {
$objErr = new SC_CheckError();
$cnt = 0;
$arrKeyname = array_flip($this->keyname);
-
- if(!($_FILES['down_file']['size'] > 0)) {
- $objErr->arrErr['down_file'] = "※ " . $this->disp_name[$arrKeyname['down_file']] . "がアップロードされていません。
";
+ if(!($_FILES[$keyname]['size'] > 0)) {
+ $objErr->arrErr[$keyname] = "※ " . $this->disp_name[$arrKeyname[$keyname]] . "がアップロードされていません。
";
} else {
foreach($this->keyname as $val) {
// 一致したキーのファイルに情報を保存する。
- if ($val == 'down_file') {
+ if ($val == $keyname) {
// 拡張子チェック
- $objErr->doFunc(array($this->disp_name[$cnt], 'down_file', $this->arrExt[$cnt]), array("FILE_EXT_CHECK"));
+ $objErr->doFunc(array($this->disp_name[$cnt], $keyname, $this->arrExt[$cnt]), array("FILE_EXT_CHECK"));
// ファイルサイズチェック
- $objErr->doFunc(array($this->disp_name[$cnt], 'down_file', $this->size[$cnt]), array("FILE_SIZE_CHECK"));
+ $objErr->doFunc(array($this->disp_name[$cnt], $keyname, $this->size[$cnt]), array("FILE_SIZE_CHECK"));
// エラーがない場合
- if(!isset($objErr->arrErr['down_file'])) {
+ if(!isset($objErr->arrErr[$keyname])) {
// 一意なファイル名を作成する。
$uniqname = date("mdHi") . "_" . uniqid("").".";
- $this->temp_file[$cnt] = ereg_replace("^.*\.",$uniqname, $_FILES['down_file']['name']);
+ $this->temp_file[$cnt] = ereg_replace("^.*\.",$uniqname, $_FILES[$keyname]['name']);
set_time_limit(0);
- $result = copy($_FILES['down_file']['tmp_name'], $this->temp_dir . $this->temp_file[$cnt]);
+ $result = copy($_FILES[$keyname]['tmp_name'], $this->temp_dir . $this->temp_file[$cnt]);
GC_Utils_Ex::gfPrintLog($result." -> ". $this->temp_dir . $this->temp_file[$cnt]);
}
@@ -165,5 +164,5 @@
}
}
- return $objErr->arrErr['down_file'];
+ return $objErr->arrErr[$keyname];
}
@@ -180,4 +179,21 @@
$this->temp_file[$cnt] = "";
$this->save_file[$cnt] = "";
+ }
+ $cnt++;
+ }
+ }
+
+ // 画像を削除する。
+ function deleteKikakuFile($keyname) {
+ $objImage = new SC_Image($this->temp_dir);
+ $cnt = 0;
+ foreach($this->keyname as $val) {
+ if ($val == $keyname) {
+ // 一時ファイルの場合削除する。
+ if($this->temp_file[$cnt] != "") {
+ $objImage->deleteImage($this->temp_file[$cnt], $this->temp_dir);
+ }
+ $this->temp_file[$cnt] = "";
+ //$this->save_file[$cnt] = "";
}
$cnt++;
@@ -245,5 +261,5 @@
$arrRet = array();
foreach($this->keyname as $val) {
- if(isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] != "") {
+ if(isset($this->temp_file[$cnt])) {
$arrRet["temp_" . $val] = $this->temp_file[$cnt];
}
@@ -262,4 +278,19 @@
$key = "temp_" . $val;
if(isset($arrPOST[$key]) && !empty($arrPOST[$key])) {
+ $this->temp_file[$cnt] = $arrPOST[$key];
+ }
+ $key = "save_" . $val;
+ if(isset($arrPOST[$key]) && !empty($arrPOST[$key])) {
+ $this->save_file[$cnt] = $arrPOST[$key];
+ }
+ $cnt++;
+ }
+ }
+
+ function setHiddenKikakuFileList($arrPOST) {
+ $cnt = 0;
+ foreach($this->keyname as $val) {
+ $key = "temp_" . $val;
+ if(isset($arrPOST[$key])) {
$this->temp_file[$cnt] = $arrPOST[$key];
}
@@ -331,4 +362,17 @@
return $arrRet;
}
+ function getFormKikakuDownFile() {
+ $arrRet = array();
+ $cnt = 0;
+ foreach($this->keyname as $val) {
+ if(isset($this->temp_file[$cnt])) {
+ $arrRet[$val] = $this->temp_file[$cnt];
+ } elseif (isset($this->save_file[$cnt]) && $this->save_file[$cnt] != "") {
+ $arrRet[$val] = $this->save_file[$cnt];
+ }
+ $cnt++;
+ }
+ return $arrRet;
+ }
// DB保存用のファイル名配列を返す
@@ -361,4 +405,15 @@
if(isset($arrVal['down_realfilename']) && $arrVal['down_realfilename'] != "") {
$this->save_file[0] = $arrVal['down_realfilename'];
+ }
+ }
+
+ // DBで保存されたダウンロードファイル名をセットする(setDBDownFileと統合予定)
+ function setPostFileList($arrPost,$arrVal) {
+ $cnt = 0;
+ foreach($this->keyname as $val) {
+ if(isset($arrPost['temp_down_realfilename:' . ($cnt+1)])) {
+ $this->temp_file[$cnt] = $arrPost['temp_down_realfilename:' . ($cnt+1)];
+ }
+ $cnt++;
}
}
Index: /branches/version-2_5-dev/data/class/util/SC_Utils.php
===================================================================
--- /branches/version-2_5-dev/data/class/util/SC_Utils.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/util/SC_Utils.php (revision 18819)
@@ -209,5 +209,5 @@
function sfDispException($debugMsg = null) {
require_once(CLASS_EX_PATH . "page_extends/error/LC_Page_Error_SystemError_Ex.php");
-
+
$objPage = new LC_Page_Error_SystemError_Ex();
register_shutdown_function(array($objPage, "destroy"));
@@ -221,5 +221,5 @@
GC_Utils_Ex::gfPrintLog($objPage->sfGetErrMsg());
$objPage->process();
-
+
exit();
}
@@ -358,9 +358,9 @@
* ・FIXME: マイナス値の扱いが不明確
* ・XXX: INT_LENには収まるが、INT型の範囲を超えるケースに対応できないのでは?
- *
+ *
* @param mixed $value
* @return bool
*/
- //
+ //
function sfIsInt($value) {
if (strlen($value) >= 1 && strlen($value) <= INT_LEN && is_numeric($value)) {
@@ -372,5 +372,5 @@
/*
* 桁が0で埋められているかを判定する
- *
+ *
* @param string $value 検査対象
* @return boolean 0で埋められている
@@ -768,5 +768,5 @@
/**
* 税金付与した金額を返す
- *
+ *
* ・店舗基本情報に基づいた計算は SC_Helper_DB::sfTax() を使用する
*
@@ -797,24 +797,5 @@
/* ポイント付与 */
function sfPrePoint($price, $point_rate, $rule = POINT_RULE, $product_id = "") {
- if(SC_Utils::sfIsInt($product_id)) {
- $objQuery = new SC_Query();
- $where = "now() >= cast(start_date as date) AND ";
- $where .= "now() < cast(end_date as date) AND ";
-
- $where .= "del_flg = 0 AND campaign_id IN (SELECT campaign_id FROM dtb_campaign_detail where product_id = ? )";
- //登録(更新)日付順
- $objQuery->setOrder('update_date DESC');
- //キャンペーンポイントの取得
- //$arrRet = $objQuery->select("campaign_name, campaign_point_rate", "dtb_campaign", $where, array($product_id));
- }
- //複数のキャンペーンに登録されている商品は、最新のキャンペーンからポイントを取得
- if(isset($arrRet[0]['campaign_point_rate'])
- && $arrRet[0]['campaign_point_rate'] != "") {
-
- $campaign_point_rate = $arrRet[0]['campaign_point_rate'];
- $real_point = $campaign_point_rate / 100;
- } else {
- $real_point = $point_rate / 100;
- }
+ $real_point = $point_rate / 100;
$ret = $price * $real_point;
switch($rule) {
@@ -836,8 +817,4 @@
break;
}
- //キャンペーン商品の場合
- if(isset($campaign_point_rate) && $campaign_point_rate != "") {
- $ret = "(".$arrRet[0]['campaign_name']."ポイント率".$campaign_point_rate."%)".$ret;
- }
return $ret;
}
@@ -2051,5 +2028,5 @@
/**
* ポイント使用するかの判定
- *
+ *
* @param integer $status 対応状況
* @return boolean 使用するか(顧客テーブルから減算するか)
@@ -2068,5 +2045,5 @@
/**
* ポイント加算するかの判定
- *
+ *
* @param integer $status 対応状況
* @return boolean 加算するか
@@ -2080,8 +2057,8 @@
case ORDER_BACK_ORDER: // 取り寄せ中
return false;
-
+
case ORDER_DELIV: // 発送済み
return true;
-
+
default:
break;
@@ -2093,5 +2070,5 @@
/**
* ランダムな文字列を取得する
- *
+ *
* @param integer $length 文字数
* @return string ランダムな文字列
@@ -2101,5 +2078,5 @@
return Text_Password::create($length);
}
-
+
/**
* 現在の URL を取得する
@@ -2109,5 +2086,5 @@
function sfGetUrl() {
$url = '';
-
+
if (SC_Utils_Ex::sfIsHTTPS()) {
$url = "https://";
@@ -2115,10 +2092,10 @@
$url = "http://";
}
-
+
$url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '?' . $_SERVER['QUERY_STRING'];
-
+
return $url;
}
-
+
/**
* バックトレースをテキスト形式で出力する
@@ -2128,5 +2105,5 @@
function sfBacktraceToString($arrBacktrace) {
$string = '';
-
+
foreach (array_reverse($arrBacktrace) as $backtrace) {
if (strlen($backtrace['class']) >= 1) {
@@ -2135,8 +2112,8 @@
$func = $backtrace['function'];
}
-
+
$string .= $backtrace['file'] . " " . $backtrace['line'] . ":" . $func . "\n";
}
-
+
return $string;
}
Index: /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
===================================================================
--- /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php (revision 18819)
@@ -363,7 +363,4 @@
dtb_products.update_date,
dtb_products.deliv_date_id,
- dtb_products.down,
- dtb_products.down_filename,
- dtb_products.down_realfilename,
T4.product_code_min,
T4.product_code_max,
@@ -419,4 +416,27 @@
__EOS__;
+ $sql['vw_download_class'] = <<< __EOS__
+ (SELECT
+ pc.product_id AS product_id,
+ pc.classcategory_id1 AS classcategory_id1,
+ pc.classcategory_id2 AS classcategory_id2,
+ pc.down_realfilename AS down_realfilename ,
+ pc.down_filename AS down_filename,
+ o.order_id AS order_id,
+ o.customer_id AS customer_id,
+ o.payment_date AS payment_date,
+ o.status AS status
+ FROM
+ dtb_products_class pc,
+ dtb_order_detail od,
+ dtb_order o
+ WHERE
+ pc.product_id = od.product_id AND
+ pc.classcategory_id1 = od.classcategory_id1 AND
+ pc.classcategory_id2 = od.classcategory_id2 AND
+ od.order_id = o.order_id
+ )
+__EOS__;
+
}
Index: /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
===================================================================
--- /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php (revision 18793)
+++ /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php (revision 18819)
@@ -124,5 +124,8 @@
function getDownloadableDaysWhereSql($dtb_order_alias) {
$baseinfo = SC_Helper_DB_Ex::sf_getBasisData();
- return "(SELECT CASE WHEN (SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1) = 1 THEN 1 WHEN DATE(NOW()) <= DATE(" . $dtb_order_alias . ".commit_date + '". $baseinfo['downloadable_days'] ." days') THEN 1 ELSE 0 END)";
+ //downloadable_daysにNULLが入っている場合(無期限ダウンロード可能時)もあるので、NULLの場合は0日に補正
+ $downloadable_days = $baseinfo['downloadable_days'];
+ if($downloadable_days ==null || $downloadable_days == "")$downloadable_days=0;
+ return "(SELECT CASE WHEN (SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1) = 1 AND " . $dtb_order_alias . ".payment_date IS NOT NULL THEN 1 WHEN DATE(NOW()) <= DATE(" . $dtb_order_alias . ".payment_date + '". $downloadable_days ." days') THEN 1 ELSE 0 END)";
}
@@ -199,5 +202,5 @@
/**
* 文字コード情報を取得する
- *
+ *
* @return array 文字コード情報
*/
Index: /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php (revision 18793)
+++ /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php (revision 18819)
@@ -53,9 +53,11 @@
*/
function process() {
- ob_end_clean();
+ ob_end_clean();
$customer_id = $_SESSION['customer']['customer_id'];
$order_id = $_GET['order_id'];
$product_id = $_GET['product_id'];
+ $classcategory_id1 = $_GET['classcategory_id1'];
+ $classcategory_id2 = $_GET['classcategory_id2'];
// ID の数値チェック
@@ -63,8 +65,9 @@
if (!is_numeric($customer_id)
|| !is_numeric($order_id)
- || !is_numeric($product_id)) {
+ || !is_numeric($product_id)
+ || !is_numeric($classcategory_id1)
+ || !is_numeric($classcategory_id2)) {
SC_Utils_Ex::sfDispSiteError("");
}
-
$objCustomer = new SC_Customer();
@@ -76,5 +79,5 @@
//DBから商品情報の読込
- $arrForm = $this->lfGetRealFileName($customer_id, $order_id, $product_id);
+ $arrForm = $this->lfGetRealFileName($customer_id, $order_id, $product_id, $classcategory_id1, $classcategory_id2);
//ステータスが支払済み以上である事
@@ -124,14 +127,14 @@
* @return array 商品情報の配列
*/
- function lfGetRealFileName($customer_id, $order_id, $product_id) {
+ function lfGetRealFileName($customer_id, $order_id, $product_id, $classcategory_id1, $classcategory_id2) {
$objQuery = new SC_Query();
$col = "*";
$table = "vw_download_class AS T1";
$dbFactory = SC_DB_DBFactory_Ex::getInstance();
- $where = "T1.customer_id = ? AND T1.order_id = ? AND T1.product_id = ?";
+ $where = "T1.customer_id = ? AND T1.order_id = ? AND T1.product_id = ? AND T1.classcategory_id1 = ? AND T1.classcategory_id2 = ?";
$where .= " AND " . $dbFactory->getDownloadableDaysWhereSql("T1");
$where .= " = 1";
$arrRet = $objQuery->select($col, $table, $where,
- array($customer_id, $order_id, $product_id));
+ array($customer_id, $order_id, $product_id, $classcategory_id1, $classcategory_id2));
return $arrRet[0];
}
Index: /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php (revision 18793)
+++ /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php (revision 18819)
@@ -227,11 +227,10 @@
$col .= "od.classcategory_name2 AS classcategory_name2, od.price AS price, od.quantity AS quantity, od.point_rate AS point_rate";
$col .= ",CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = od.product_id AND del_flg = 0 AND status = 1) THEN '1' ELSE '0' END AS enable";
- $col .= ",o.status AS status, p.down AS down, ";
+ $col .= ",o.status AS status, pc.down AS down, o.payment_date AS payment_date, od.classcategory_id1 as classcategory_id1, od.classcategory_id2 as classcategory_id2, ";
$col .= $dbFactory->getDownloadableDaysWhereSql("o");
$col .= " AS effective";
- $where = "p.product_id = od.product_id AND od.order_id = o.order_id AND od.order_id = ?";
- $objQuery->setOrder("classcategory_id1, classcategory_id2");
- $arrRet = $objQuery->select($col, "dtb_products p, dtb_order_detail od, dtb_order o", $where, array($orderId));
+ $where = "p.product_id = od.product_id AND pc.product_id = od.product_id AND pc.classcategory_id1 = od.classcategory_id1 AND pc.classcategory_id2 = od.classcategory_id2 AND od.order_id = o.order_id AND od.order_id = ?";
+ $arrRet = $objQuery->select($col, "dtb_products p, dtb_products_class pc, dtb_order_detail od, dtb_order o", $where);
return $arrRet;
}
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php (revision 18819)
@@ -453,4 +453,5 @@
*/
function lfRegistOrder($objQuery, $arrData, $objCampaignSess = null) {
+ $objDb = new SC_Helper_DB_Ex();
$sqlval = $arrData;
@@ -465,4 +466,7 @@
unset($sqlval['session']); // セッション情報
+ //ダウンロード商品判定
+ $this->cartdown = $objDb->chkCartDown($this->objCartSess);
+
// ポイントは別登録
$addPoint = $sqlval['add_point'];
@@ -471,6 +475,10 @@
$sqlval['use_point'] = 0;
- // 注文ステータス:指定が無ければ新規受付に設定
- if (strlen($sqlval['status']) == 0) {
+ // 合計金額が0円の場合、もしくはオンライン決済の場合は、注文ステータスをORDER_PRE_END[入金済み]にする
+ if ( ( $sqlval['total'] == 0 ) or ( in_array($sqlval['payment_id'], split(",", CREDIT_PAYMENT)) == true ) ){
+ $sqlval = $this->lfchgPreEndStatus($sqlval);
+ }
+ if(strlen($sqlval['status']) == 0) {
+ // 注文ステータス:指定が無ければ新規受付に設定
$sqlval['status'] = ORDER_NEW;
}
@@ -659,10 +667,10 @@
function lfReduceStock(&$objQuery, $arrID, $quantity) {
$objDb = new SC_Helper_DB_Ex();
-
+
if (!SC_Utils_Ex::sfIsInt($quantity)) {
$objQuery->rollback();
SC_Utils_Ex::sfDispException();
}
-
+
$objProduct = new SC_Product();
$productsClass = $objProduct->getProductsClassFullByProductId($arrID[0]);
@@ -677,5 +685,5 @@
SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true);
}
-
+
// 在庫を減らす
$arrRawSql = array();
@@ -686,5 +694,5 @@
}
}
-
+
// 在庫無し商品の非表示対応
if (NOSTOCK_HIDDEN === true) {
@@ -692,5 +700,5 @@
$objDb->sfCategory_Count($objQuery);
}
-
+
}
@@ -705,4 +713,16 @@
return $sqlVal;
}
+
+ // ステータスを入金済みにする
+ function lfchgPreEndStatus($sqlval){
+ $sqlval['status'] = ORDER_PRE_END;
+ $sqlval['payment_date'] = 'NOW()';
+ //ダウンロード商品のみの場合はORDER_DELIV[発送済み]にして発送時間を入れる
+ if($this->cartdown == 2){
+ $sqlval['status'] = ORDER_DELIV;
+ $sqlval['commit_date'] = 'NOW()';
+ }
+ return $sqlval;
+ }
}
?>
Index: /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php (revision 18818)
+++ /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php (revision 18819)
@@ -361,5 +361,8 @@
stock_unlimited,
sale_limit,
- point_rate
+ point_rate,
+ down,
+ down_filename,
+ down_realfilename
FROM dtb_products_class
WHERE class_combination_id IS NULL
@@ -449,5 +452,5 @@
"deliv_fee", "comment1", "comment2", "comment3",
"comment4", "comment5", "comment6", "main_list_comment",
- "sale_limit", "deliv_date_id", "maker_id", "note", "down", "down_filename", "down_realfilename");
+ "sale_limit", "deliv_date_id", "maker_id", "note");
$arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray);
@@ -467,7 +470,4 @@
$sqlval['maker_id'] = $arrList['maker_id'];
$sqlval['note'] = $arrList['note'];
- $sqlval['down'] = $arrList['down'];
- $sqlval['down_filename'] = $arrList['down_filename'];
- $sqlval['down_realfilename'] = $arrList['down_realfilename'];
$sqlval['update_date'] = "Now()";
$sqlval['creator_id'] = $_SESSION['member_id'];
@@ -620,21 +620,4 @@
$objErr->doFunc(array("メーカー", 'maker_id', INT_LEN), array("NUM_CHECK"));
- //ダウンロード商品チェック
- if($array['down'] == "2") {
- $objErr->doFunc(array("ダウンロードファイル名", "down_filename", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
- if($array['down_realfilename'] == "") {
- $objErr->arrErr['down_realfilename'] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。
";
- }
- }
- //実商品チェック
- if($array['down'] == "1") {
- if($array['down_filename'] != "") {
- $objErr->arrErr['down_filename'] = "※ 実商品の場合はダウンロードファイル名を設定できません。
";
- }
- if($array['down_realfilename'] != "") {
- $objErr->arrErr['down_realfilename'] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。
ファイルを取り消してください。
";
- }
- }
-
if($this->tpl_nonclass) {
$objErr->doFunc(array("商品コード", "product_code", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK"));
@@ -644,4 +627,21 @@
if(!isset($array['stock_unlimited']) && $array['stock_unlimited'] != "1") {
$objErr->doFunc(array("在庫数", "stock", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+ }
+
+ //ダウンロード商品チェック
+ if($array['down'] == "2") {
+ $objErr->doFunc(array("ダウンロードファイル名", "down_filename", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+ if($array['down_realfilename'] == "") {
+ $objErr->arrErr['down_realfilename'] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。
";
+ }
+ }
+ //実商品チェック
+ if($array['down'] == "1") {
+ if($array['down_filename'] != "") {
+ $objErr->arrErr['down_filename'] = "※ 実商品の場合はダウンロードファイル名を設定できません。
";
+ }
+ if($array['down_realfilename'] != "") {
+ $objErr->arrErr['down_realfilename'] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。
ファイルを取り消してください。
";
+ }
}
}
@@ -854,5 +854,5 @@
// 配列の添字を定義
- $checkArray = array('product_class_id', 'product_id', 'product_code', 'stock', 'stock_unlimited', 'price01', 'price02', 'sale_limit', 'deliv_fee', 'point_rate');
+ $checkArray = array('product_class_id', 'product_id', 'product_code', 'stock', 'stock_unlimited', 'price01', 'price02', 'sale_limit', 'deliv_fee', 'point_rate' ,'down', 'down_filename', 'down_realfilename');
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $checkArray);
$sqlval = SC_Utils_Ex::arrayDefineIndexes($sqlval, $checkArray);
Index: /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php (revision 18819)
@@ -36,4 +36,9 @@
// }}}
// {{{ functions
+ /** ダウンロード用ファイル管理クラスのインスタンス */
+ var $objDownFile;
+
+ /** hidden 項目の配列 */
+ var $arrHidden;
/**
@@ -49,4 +54,15 @@
$this->tpl_subno = 'product';
$this->tpl_subtitle = '商品登録(商品規格)';
+ $masterData = new SC_DB_MasterData_Ex();
+ $this->arrDown = $masterData->getMasterData("mtb_down");
+ }
+
+ function lfInitDownFile() {
+ $i = 1;
+ while (isset($_POST['classcategory_id1:' . $i])) {
+ //ファイル系処理
+ $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . $i, 'down_realfilename'. ":" . $i, explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);
+ $i++;
+ }
}
@@ -55,4 +71,7 @@
$this->arrSearchHidden = $this->createSearchParams($_POST);
+
+ // FORMデータの引き継ぎ
+ $this->arrForm = $_POST;
$this->tpl_product_id =
@@ -61,17 +80,25 @@
if (!isset($_POST['mode'])) $_POST['mode'] = "";
+ // Downファイル管理クラス
+ $this->objDownFile = new SC_UploadFile(DOWN_TEMP_DIR, DOWN_SAVE_DIR);
+
switch ($_POST['mode']) {
case 'edit':
// 入力値の変換
$this->arrForm = $this->lfConvertParam($_POST);
-
// エラーチェック
$this->arrErr = $this->lfProductClassError($this->arrForm);
- if (SC_Utils_Ex::isBlank($this->arrErr)) {
- $this->tpl_mainpage = 'products/product_class_confirm.tpl';
+ if ($this->arrErr == null){
+ //if (SC_Utils_Ex::isBlank($this->arrErr)) {
+ $this->tpl_mainpage = 'products/product_class_confirm.tpl';
$this->lfProductConfirmPage(); // 確認ページ表示
-
} else {
- $this->doPreEdit(false);
+ $this->doPreEdit(false,true);
+ // Hiddenからのデータを引き継ぐ
+ $this->objDownFile->setHiddenFileList($_POST);
+ // HIDDEN用に配列を渡す。
+ $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
+ // Form用に配列を渡す。
+ $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
}
break;
@@ -83,4 +110,6 @@
case 'pre_edit':
$this->doPreEdit();
+ // HIDDEN用に配列を渡す。
+ $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
break;
@@ -88,5 +117,30 @@
$this->doDisp();
break;
-
+ // ダウンロード商品ファイルアップロード
+ case 'upload_down':
+ $this->doPreEdit();
+ // Hiddenからのデータを引き継ぐ
+ $this->objDownFile->setHiddenKikakuFileList($_POST);
+ // ファイル存在チェック
+ $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objDownFile->checkEXISTS($_POST['down_key']));
+ // ファイル保存処理
+ $this->arrErr[$_POST['down_key']] = $this->objDownFile->makeTempDownFile($_POST['down_key']);
+ // HIDDEN用に配列を渡す。
+ $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
+ // Form用に配列を渡す。
+ $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
+ break;
+ // ダウンロードファイルの削除
+ case 'delete_down':
+ $this->doPreEdit();
+ // Hiddenからのデータを引き継ぐ
+ $this->objDownFile->setHiddenKikakuFileList($_POST);
+ // ファイル削除処理
+ $this->objDownFile->deleteKikakuFile($_POST['down_key']);
+ // HIDDEN用に配列を渡す。
+ $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
+ // Form用に配列を渡す。
+ $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
+ break;
case 'confirm_return':
// フォームパラメータの引き継ぎ
@@ -95,17 +149,27 @@
$this->arrForm['select_class_id1'] = "";
$this->arrForm['select_class_id2'] = "";
- $this->doPreEdit(false);
- break;
-
+ $this->doPreEdit(false,true);
+ // Hiddenからのデータを引き継ぐ
+ $this->objDownFile->setHiddenFileList($_POST);
+ // HIDDEN用に配列を渡す。
+ $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
+ // Form用に配列を渡す。
+ $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
+ break;
case 'complete':
// 完了ページ設定
$this->tpl_mainpage = 'products/product_class_complete.tpl';
+ // ファイル情報の初期化
+ $this->lfInitDownFile();
+ // Hiddenからのデータを引き継ぐ
+ $this->objDownFile->setHiddenFileList($_POST);
// 商品規格の登録
$this->registerProductClass($_POST, $_POST['product_id']);
+ // 一時ファイルを本番ディレクトリに移動する
+ $this->objDownFile->moveTempDownFile();
break;
default:
}
-
$this->arrClass = $this->getAllClass();
$this->arrForm['product_name'] = $this->getProductName($_POST['product_id']);
@@ -153,4 +217,7 @@
$pVal['price01'] = $arrList['price01:'.$i];
$pVal['price02'] = $arrList['price02:'.$i];
+ $pVal['down'] = $arrList['down:'.$i];
+ $pVal['down_filename'] = $arrList['down_filename:'.$i];
+ $pVal['down_realfilename'] = $arrList['down_realfilename:'.$i];
$pVal['creator_id'] = $_SESSION['member_id'];
$pVal['update_date'] = "now()";
@@ -276,4 +343,21 @@
if($array["stock_unlimited:".$no] != '1') {
$objErr->doFunc(array("在庫数", "stock:".$no, AMOUNT_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+ }
+
+ //ダウンロード商品チェック
+ if($array["down:".$no] == "2") {
+ $objErr->doFunc(array("ダウンロードファイル名", "down_filename:".$no, STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+ if($array["down_realfilename:".$no] == "") {
+ $objErr->arrErr["down_realfilename:".$no] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。
";
+ }
+ }
+ //実商品チェック
+ else if($array["down:".$no] == "1") {
+ if($array["down_filename:".$no] != "") {
+ $objErr->arrErr["down_filename:".$no] = "※ 実商品の場合はダウンロードファイル名を設定できません。
";
+ }
+ if($array["down_realfilename:".$no] != "") {
+ $objErr->arrErr["down_realfilename:".$no] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。
ファイルを取り消してください。
";
+ }
}
}
@@ -338,5 +422,5 @@
* 規格編集画面を表示する.
*/
- function doPreEdit($existsValue = true) {
+ function doPreEdit($existsValue = true,$usepostValue = false) {
$existsProductsClass = $this->getProductsClassAndClasscategory($_POST['product_id']);
$productsClass = $this->getProductsClass($_POST['product_id']);
@@ -347,17 +431,31 @@
$this->arrClassCat = $this->getAllClassCategory($this->arrForm["class_id1"], $this->arrForm["class_id2"]);
+
$total = count($this->arrClassCat);
for ($i = 1; $i <= $total; $i++) {
if ($existsValue) {
foreach ($productsClass as $key => $val) {
- $this->arrForm[$key . ":" . $i] = $val;
+ if(!$usepostValue){
+ $this->arrForm[$key . ":" . $i] = $val;
+ }
}
}
foreach ($existsProductsClass[$i] as $key => $val) {
- $this->arrForm[$key . ":" . $i] = $val;
+ if(!$usepostValue){
+ $this->arrForm[$key . ":" . $i] = $val;
+ }
}
if (!SC_Utils_Ex::isBlank($this->arrForm['product_id:' . $i])
&& $this->arrForm["del_flg:" . $i] == 0) {
$line .= "'check:" . $i . "',";
+ }
+ }
+ //直前のLoopが$existsProductsClassを1始まりで参照しているので最初の情報が抜ける?
+ for ($i = 0; $i < $total; $i++) {
+ foreach ($existsProductsClass[$i] as $key => $val) {
+ //ダウンロードファイル初期設定
+ if($key=="down"){
+ $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . ($i+1), 'down_realfilename'. ":" . ($i+1), explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);
+ }
}
}
@@ -367,4 +465,9 @@
$color = DISABLED_RGB;
$this->tpl_onload.= "fnListCheck(list); fnCheckAllStockLimit('$total', '$color');";
+
+ // DBデータからダウンロードファイル名の読込
+ $this->objDownFile->setDBFileList($this->arrForm);
+ // PostデータからダウンロードTempファイル名の読込
+ $this->objDownFile->setPostFileList($_POST,$this->arrForm);
}
Index: /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 18788)
+++ /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 18819)
@@ -408,4 +408,5 @@
$this->objFormParam->addParam("発送日", "commit_date");
$this->objFormParam->addParam("備考", "message");
+ $this->objFormParam->addParam("入金日", "payment_date");
}
@@ -463,5 +464,5 @@
return $objErr->arrErr;
}
-
+
return $this->lfCheek();
}
@@ -545,8 +546,8 @@
// 受注テーブルの更新
$objQuery->update("dtb_order", $sqlval, $where, array($order_id));
-
+
// 受注テーブルの名称列を更新
SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id);
-
+
$arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2"));
Index: /branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php (revision 18815)
+++ /branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php (revision 18819)
@@ -135,5 +135,5 @@
$js_fnOnLoad .= "fnSetClassCategories(document.product_form{$arrProduct['product_id']});\n";
}
-
+
if ($this->inCart) {
// 商品IDの正当性チェック
@@ -279,5 +279,5 @@
function lfGetCategoryId($category_id) {
$objDb = new SC_Helper_DB_Ex();
-
+
// 指定なしの場合、0 を返す
if (
@@ -287,5 +287,5 @@
return 0;
}
-
+
// 正当性チェック
if (
@@ -296,12 +296,12 @@
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
}
-
+
// 指定されたカテゴリIDを元に正しいカテゴリIDを取得する。
$arrCategory_id = $objDb->sfGetCategoryId('', $category_id);
-
+
if (empty($arrCategory_id)) {
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
}
-
+
return $arrCategory_id[0];
}
@@ -314,20 +314,20 @@
$arrval_order = array();
$arrval_category = array();
-
+
// カテゴリからのWHERE文字列取得
if ($this->arrSearchData['category_id'] != 0) {
list($where_category, $arrval_category) = $objDb->sfGetCatWhere($this->arrSearchData['category_id']);
}
-
+
// ▼対象商品IDの抽出
// 商品検索条件の作成(未削除、表示)
$where = "del_flg = 0 AND status = 1 ";
$where1 = "alldtl.del_flg = 0 AND alldtl.status = 1 ";
-
+
// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN === true) {
$where .= ' AND (stock_max >= 1 OR stock_unlimited_max = 1)';
}
-
+
if (strlen($where_category) >= 1) {
$where.= " AND $where_category";
@@ -379,5 +379,5 @@
$this->tpl_strnavi = empty($strnavi) ? " " : $strnavi;
$startno = $this->objNavi->start_row; // 開始行
-
+
// WHERE 句
$where = '0=0';
@@ -436,5 +436,5 @@
break;
}
-
+
// 取得範囲の指定(開始行番号、行数のセット)
$objQuery =& SC_Query::getSingletonInstance();
@@ -447,5 +447,4 @@
$this->arrProducts = $objProduct->lists($objQuery, $arrval_order);
-
$arrProductId = array();
// 規格セレクトボックス設定
@@ -453,8 +452,8 @@
$arrProductId[] = $product['product_id'];
}
-
+
// 規格を設定
$objProduct->setProductsClassByProductIds($arrProductId);
-
+
// 規格1クラス名
$this->tpl_class_name1 = $objProduct->className1;
@@ -462,5 +461,5 @@
// 規格2クラス名
$this->tpl_class_name2 = $objProduct->className2;
-
+
// 規格1
$this->arrClassCat1 = $objProduct->classCats1;
@@ -474,5 +473,5 @@
$productsClassCategories = $objProduct->classCategories;
-
+
require_once DATA_PATH . 'module/Services/JSON.php';
$objJson = new Services_JSON();
@@ -505,5 +504,5 @@
function lfLoadParam() {
$this->arrForm = $_GET;
-
+
$this->mode = $this->arrForm['mode'];
$this->arrSearchData['category_id'] = $this->lfGetCategoryId($this->arrForm['category_id']);
Index: /branches/version-2_5-dev/data/class/SC_CartSession.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_CartSession.php (revision 18701)
+++ /branches/version-2_5-dev/data/class/SC_CartSession.php (revision 18819)
@@ -311,4 +311,14 @@
return $arrRet;
}
+ // カート内にある商品ID+カテゴリIDを全て取得する
+ function getAllProductClassID() {
+ $max = $this->getMax();
+ for($i = 0; $i <= $max; $i++) {
+ if($_SESSION[$this->key][$i]['cart_no'] != "") {
+ $arrRet[] = $_SESSION[$this->key][$i]['id'];
+ }
+ }
+ return $arrRet;
+ }
function delAllProducts() {
@@ -352,19 +362,4 @@
}
}
-
- /**
- * カートの中のキャンペーン商品のチェック
- * @param integer $campaign_id キャンペーンID
- * @return boolean True:キャンペーン商品有り False:キャンペーン商品無し
- */
- function chkCampaign($campaign_id){
- $max = $this->getMax();
- for($i = 0; $i <= $max; $i++) {
- if($_SESSION[$this->key][$i]['is_campaign'] and $_SESSION[$this->key][$i]['campaign_id'] == $campaign_id) return true;
- }
-
- return false;
- }
-
}
?>
Index: /branches/version-2_5-dev/data/Smarty/templates/default/mypage/history.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/default/mypage/history.tpl (revision 18777)
+++ /branches/version-2_5-dev/data/Smarty/templates/default/mypage/history.tpl (revision 18819)
@@ -62,7 +62,7 @@