Merge branch 'master' of github.com:gnuboard/yc4s
This commit is contained in:
@ -157,6 +157,29 @@ function get_it_stock_qty($it_id)
|
||||
$sql = " select SUM(ct_qty) as sum_qty
|
||||
from {$g4['shop_cart_table']}
|
||||
where it_id = '$it_id'
|
||||
and io_id = ''
|
||||
and ct_stock_use = 0
|
||||
and ct_status in ('주문', '준비') ";
|
||||
$row = sql_fetch($sql);
|
||||
$daegi = (int)$row['sum_qty'];
|
||||
|
||||
return $jaego - $daegi;
|
||||
}
|
||||
|
||||
// 옵션의 재고 (창고재고수량 - 주문대기수량)
|
||||
function get_option_stock_qty($it_id, $io_id)
|
||||
{
|
||||
global $g4;
|
||||
|
||||
$sql = " select io_stock_qty from {$g4['shop_item_option_table']} where it_id = '$it_id' and io_id = '$io_id' and io_use = '1' ";
|
||||
$row = sql_fetch($sql);
|
||||
$jaego = (int)$row['it_stock_qty'];
|
||||
|
||||
// 재고에서 빼지 않았고 주문인것만
|
||||
$sql = " select SUM(ct_qty) as sum_qty
|
||||
from {$g4['shop_cart_table']}
|
||||
where it_id = '$it_id'
|
||||
and io_id = '$io_id'
|
||||
and ct_stock_use = 0
|
||||
and ct_status in ('주문', '준비') ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
@ -142,41 +142,45 @@ else // 장바구니에 담기
|
||||
if (!$_POST['it_id'])
|
||||
alert('장바구니에 담을 상품을 선택하여 주십시오.');
|
||||
|
||||
if ($_POST['ct_qty'] < 1)
|
||||
alert('수량은 1 이상 입력해 주십시오.');
|
||||
for($i=0; $i<count($_POST['ct_qty']); $i++) {
|
||||
if ($_POST['ct_qty'][$i] < 1)
|
||||
alert('수량은 1 이상 입력해 주십시오.');
|
||||
}
|
||||
|
||||
//--------------------------------------------------------
|
||||
// 변조 검사
|
||||
//--------------------------------------------------------
|
||||
$opt_amount = 0;
|
||||
$total_price = 0;
|
||||
$option_count = count($_POST['io_id']);
|
||||
$sql = " select * from {$g4['shop_item_table']} where it_id = '{$_POST['it_id']}' ";
|
||||
$it = sql_fetch($sql);
|
||||
for ($i=1; $i<=6; $i++) {
|
||||
//$dst_opt = $_POST["it_opt".$i];
|
||||
$dst_opt = trim($_POST["it_opt".$i]);
|
||||
if ($dst_opt) {
|
||||
$org_opt = $it["it_opt".$i];
|
||||
$exp_opt = explode("\n", trim($org_opt));
|
||||
$exists = false;
|
||||
for ($k=0; $k<count($exp_opt); $k++) {
|
||||
$opt = trim($exp_opt[$k]);
|
||||
if ($dst_opt == $opt) {
|
||||
$exists = true;
|
||||
$exp_option = explode(";", $opt);
|
||||
$opt_amount += (int)$exp_option[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($exists == false) {
|
||||
// 옵션이 다름
|
||||
die("Error.");
|
||||
}
|
||||
}
|
||||
|
||||
// 옵션정보를 얻어서 배열에 저장
|
||||
$opt_list = array();
|
||||
$sql = " select * from {$g4['shop_item_option_table']} where it_id = '{$_POST['it_id']}' and io_use = '1' order io_no asc ";
|
||||
$result = sql_query($sql);
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$opt_list[$row['io_type']][$row['io_id']]['price'] = $row['io_price'];
|
||||
$opt_list[$row['io_type']][$row['io_id']]['stock'] = $row['io_stock_qty'];
|
||||
}
|
||||
|
||||
$price = get_price($it) + $opt_amount;
|
||||
// 상품가격이 다름
|
||||
if ((int)$price !== (int)$_POST['it_price'])
|
||||
for($i=0; $i<$option_count; $i++) {
|
||||
$opt_id = $_POST['io_id'][$i];
|
||||
$opt_type = $_POST['io_type'][$i];
|
||||
$opt_price = $_POST['io_price'][$i];
|
||||
$opt_qty = $_POST['ct_qty'][$i];
|
||||
|
||||
if((int)$opt_price !== (int)$opt_list[$opt_type][$opt_id]['price'])
|
||||
die("Option Price Mismatch");
|
||||
|
||||
if($opt_type == 1)
|
||||
$total_price += $opt_price * $opt_qty;
|
||||
else
|
||||
$total_price += ($it['it_price'] + $opt_price) * $opt_qty;
|
||||
}
|
||||
|
||||
// 상품 총금액이 다름
|
||||
if ((int)$_POST['total_price'] !== (int)$total_price)
|
||||
die("Error..");
|
||||
|
||||
$point = $it['it_point'];
|
||||
@ -190,17 +194,25 @@ else // 장바구니에 담기
|
||||
// 재고 검사
|
||||
//--------------------------------------------------------
|
||||
// 이미 장바구니에 있는 같은 상품의 수량합계를 구한다.
|
||||
$sql = " select SUM(ct_qty) as cnt from {$g4['shop_cart_table']}
|
||||
where it_id = '{$_POST['it_id']}'
|
||||
and uq_id = '$tmp_uq_id' ";
|
||||
$row = sql_fetch($sql);
|
||||
$sum_qty = $row['cnt'];
|
||||
for($i=0; $i<$option_count; $i++) {
|
||||
$sql = " select SUM(ct_qty) as cnt from {$g4['shop_cart_table']}
|
||||
where it_id = '{$_POST['it_id']}'
|
||||
and uq_id = '$tmp_uq_id',
|
||||
and io_id = '{$_POST['io_id'][$i]}' ";
|
||||
$row = sql_fetch($sql);
|
||||
$sum_qty = $row['cnt'];
|
||||
|
||||
// 재고 구함
|
||||
$it_stock_qty = get_it_stock_qty($_POST['it_id']);
|
||||
if ($ct_qty + $sum_qty > $it_stock_qty)
|
||||
{
|
||||
alert("$it_name 의 재고수량이 부족합니다.\\n\\n현재 재고수량 : " . number_format($it_stock_qty) . " 개");
|
||||
// 재고 구함
|
||||
$ct_qty = $_POST['ct_qty'][$i];
|
||||
if(!$_POST['io_id'][$i])
|
||||
$it_stock_qty = get_it_stock_qty($_POST['it_id']);
|
||||
else
|
||||
$it_stock_qty = get_option_stock_qty($_POST['it_id'], $_POST['io_id'][$i]);
|
||||
|
||||
if ($ct_qty + $sum_qty > $it_stock_qty)
|
||||
{
|
||||
alert($_POST['io_value'][$i]." 의 재고수량이 부족합니다.\\n\\n현재 재고수량 : " . number_format($it_stock_qty) . " 개");
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------
|
||||
|
||||
@ -215,25 +227,16 @@ else // 장바구니에 담기
|
||||
if (!$config['cf_use_point']) { $_POST['it_point'] = 0; }
|
||||
|
||||
// 장바구니에 Insert
|
||||
$sql = " insert {$g4['shop_cart_table']}
|
||||
set uq_id = '$tmp_uq_id',
|
||||
it_id = '{$_POST['it_id']}',
|
||||
it_name = '{$_POST['it_name']}',
|
||||
it_opt1 = '{$_POST['it_opt1']}',
|
||||
it_opt2 = '{$_POST['it_opt2']}',
|
||||
it_opt3 = '{$_POST['it_opt3']}',
|
||||
it_opt4 = '{$_POST['it_opt4']}',
|
||||
it_opt5 = '{$_POST['it_opt5']}',
|
||||
it_opt6 = '{$_POST['it_opt6']}',
|
||||
ct_status = '쇼핑',
|
||||
ct_price = '{$_POST['it_price']}',
|
||||
ct_point = '{$_POST['it_point']}',
|
||||
ct_point_use = '0',
|
||||
ct_stock_use = '0',
|
||||
ct_qty = '{$_POST['ct_qty']}',
|
||||
ct_time = '".G4_TIME_YMDHIS."',
|
||||
ct_ip = '$REMOTE_ADDR',
|
||||
ct_direct = '$sw_direct' ";
|
||||
$comma = '';
|
||||
$sql = " INSERT INTO {$g4['shop_cart_table']}
|
||||
( uq_id, it_id, it_name, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, io_id, io_type, io_price, ct_time, ct_ip, ct_direct )
|
||||
VALUES ";
|
||||
|
||||
for($i=0; $i<$option_count; $i++) {
|
||||
$sql .= $comma."( '$tmp_uq_id', '{$_POST['it_id']}', '{$_POST['it_name']}', '쇼핑', '{$_POST['it_price']}', '{$_POST['it_point']}', '0', '0', '{$_POST[['io_value'][$i]}', '{$_POST['ct_qty'][$i]}', '{$_POST['io_id'][$i]}', '{$_POST['io_type'][$i]}', '{$_POST['io_price']}', '".G4_TIME_YMDHIS."', '$REMOTE_ADDR', '$sw_direct' )";
|
||||
$comma = ' , ';
|
||||
}
|
||||
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
|
||||
159
shop/item.php
159
shop/item.php
@ -325,6 +325,10 @@ else
|
||||
</table>
|
||||
|
||||
<!-- ########## 선택옵션이 있을 때만 출력 - 지운아빠 2013-05-24 -->
|
||||
<?php
|
||||
$option_1 = get_item_options($it['it_id'], $it['it_option_subject']);
|
||||
if($option_1) {
|
||||
?>
|
||||
<section>
|
||||
<h3>선택옵션</h3>
|
||||
<table class="sit_ov_tbl">
|
||||
@ -334,7 +338,7 @@ else
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<?php // 선택옵션
|
||||
echo get_item_options($it['it_id'], $it['it_option_subject']);
|
||||
echo $option_1;
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -342,9 +346,16 @@ else
|
||||
<button type="button" id="sit_selopt_submit" class="btn_frmline">추가</button>
|
||||
</div>
|
||||
</section>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<!-- ########## 선택옵션이 있을 때만 출력 끝 -->
|
||||
|
||||
<!-- ########## 추가옵션이 있을 때만 출력 - 지운아빠 2013-05-24 -->
|
||||
<?php
|
||||
$option_2 = get_item_supply($it['it_id'], $it['it_supply_subject']);
|
||||
if($option_2) {
|
||||
?>
|
||||
<section>
|
||||
<h3>추가옵션</h3>
|
||||
<table class="sit_ov_tbl">
|
||||
@ -354,11 +365,14 @@ else
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<?php // 추가옵션
|
||||
echo get_item_supply($it['it_id'], $it['it_supply_subject']);
|
||||
echo $option_2;
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<!-- ########## 추가옵션이 있을 때만 출력 끝 -->
|
||||
|
||||
<?php } // 전화문의가 아닐 경우 끝 ?>
|
||||
@ -420,62 +434,27 @@ else
|
||||
return false;
|
||||
}
|
||||
|
||||
var id = "";
|
||||
var value, sel_opt, item, price, stock, run_error = false;
|
||||
var option = sep = "";
|
||||
$("select[name='it_option[]']").each(function(index) {
|
||||
value = $(this).val();
|
||||
item = $(this).closest("tr").find("th label").text();
|
||||
|
||||
if(!value) {
|
||||
run_error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 옵션선택정보
|
||||
sel_opt = value.split(",")[0];
|
||||
if(id == "") {
|
||||
id = sel_opt;
|
||||
} else {
|
||||
id += chr(30)+sel_opt;
|
||||
sep = " / ";
|
||||
}
|
||||
|
||||
option += sep + item + ":" + sel_opt;
|
||||
});
|
||||
|
||||
if(run_error) {
|
||||
alert(item+"을(를) 선택해 주십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
price = info[1];
|
||||
stock = info[2];
|
||||
|
||||
if(!same_option_check(option))
|
||||
add_sel_option(0, id, option, price, stock);
|
||||
// 선택옵션 자동추가 기능을 사용하려면 아래 false를 true로 설정
|
||||
sel_option_process(false);
|
||||
}
|
||||
});
|
||||
|
||||
// 추가옵션
|
||||
$("select[name='it_supply[]']").change(function() {
|
||||
var val = $(this).val();
|
||||
var info = val.split(",");
|
||||
var $el = $(this);
|
||||
// 선택옵션 자동추가 기능을 사용하려면 아래 false를 true로 설정
|
||||
sel_supply_process($el, false);
|
||||
});
|
||||
|
||||
// 재고체크
|
||||
if(parseInt(info[2]) < 1) {
|
||||
alert("선택하신 추가옵션상품은 재고가 부족하여 구매할 수 없습니다.");
|
||||
return false;
|
||||
}
|
||||
// 선택옵션 추가
|
||||
$("#sit_selopt_submit").click(function() {
|
||||
sel_option_process(true);
|
||||
});
|
||||
|
||||
var item = $(this).closest("tr").find("th label").text();
|
||||
var id = item+chr(30)+info[0];
|
||||
var option = item+":"+info[0];
|
||||
var price = info[1];
|
||||
var stock = info[2];
|
||||
|
||||
if(!same_option_check(option))
|
||||
add_sel_option(1, id, option, price, stock);
|
||||
// 추가옵션 추가
|
||||
$("button.sit_sel_submit").click(function() {
|
||||
var $el = $(this).closest("td").find("select[name='it_supply[]']");
|
||||
sel_supply_process($el, true);
|
||||
});
|
||||
|
||||
// 수량변경 및 삭제
|
||||
@ -552,6 +531,84 @@ else
|
||||
});
|
||||
});
|
||||
|
||||
// 선택옵션 추가처리
|
||||
function sel_option_process(add_exec)
|
||||
{
|
||||
var id = "";
|
||||
var value, info, sel_opt, item, price, stock, run_error = false;
|
||||
var option = sep = "";
|
||||
info = $("select[name='it_option[]']:last").val().split(",");
|
||||
|
||||
$("select[name='it_option[]']").each(function(index) {
|
||||
value = $(this).val();
|
||||
item = $(this).closest("tr").find("th label").text();
|
||||
|
||||
if(!value) {
|
||||
run_error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 옵션선택정보
|
||||
sel_opt = value.split(",")[0];
|
||||
|
||||
if(id == "") {
|
||||
id = sel_opt;
|
||||
} else {
|
||||
id += chr(30)+sel_opt;
|
||||
sep = " / ";
|
||||
}
|
||||
|
||||
option += sep + item + ":" + sel_opt;
|
||||
});
|
||||
|
||||
if(run_error) {
|
||||
alert(item+"을(를) 선택해 주십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
price = info[1];
|
||||
stock = info[2];
|
||||
|
||||
if(add_exec) {
|
||||
if(same_option_check(option))
|
||||
return;
|
||||
|
||||
add_sel_option(0, id, option, price, stock);
|
||||
}
|
||||
}
|
||||
|
||||
// 추가옵션 추가처리
|
||||
function sel_supply_process($el, add_exec)
|
||||
{
|
||||
var val = $el.val();
|
||||
var item = $el.closest("tr").find("th label").text();
|
||||
|
||||
if(!val) {
|
||||
alert(item+"을(를) 선택해 주십시오.");
|
||||
return;
|
||||
}
|
||||
|
||||
var info = val.split(",");
|
||||
|
||||
// 재고체크
|
||||
if(parseInt(info[2]) < 1) {
|
||||
alert(info[0]+"은(는) 재고가 부족하여 구매할 수 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var id = item+chr(30)+info[0];
|
||||
var option = item+":"+info[0];
|
||||
var price = info[1];
|
||||
var stock = info[2];
|
||||
|
||||
if(add_exec) {
|
||||
if(same_option_check(option))
|
||||
return;
|
||||
|
||||
add_sel_option(1, id, option, price, stock);
|
||||
}
|
||||
}
|
||||
|
||||
// 선택된 옵션 출력
|
||||
function add_sel_option(type, id, option, price, stock)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user