Merge branch 'master' of github.com:gnuboard/yc4s

This commit is contained in:
whitedot
2013-05-24 18:23:02 +09:00
3 changed files with 190 additions and 107 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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)
{