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 $sql = " select SUM(ct_qty) as sum_qty
from {$g4['shop_cart_table']} from {$g4['shop_cart_table']}
where it_id = '$it_id' 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_stock_use = 0
and ct_status in ('주문', '준비') "; and ct_status in ('주문', '준비') ";
$row = sql_fetch($sql); $row = sql_fetch($sql);

View File

@ -142,41 +142,45 @@ else // 장바구니에 담기
if (!$_POST['it_id']) if (!$_POST['it_id'])
alert('장바구니에 담을 상품을 선택하여 주십시오.'); alert('장바구니에 담을 상품을 선택하여 주십시오.');
if ($_POST['ct_qty'] < 1) for($i=0; $i<count($_POST['ct_qty']); $i++) {
alert('수량은 1 이상 입력해 주십시오.'); 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']}' "; $sql = " select * from {$g4['shop_item_table']} where it_id = '{$_POST['it_id']}' ";
$it = sql_fetch($sql); $it = sql_fetch($sql);
for ($i=1; $i<=6; $i++) {
//$dst_opt = $_POST["it_opt".$i]; // 옵션정보를 얻어서 배열에 저장
$dst_opt = trim($_POST["it_opt".$i]); $opt_list = array();
if ($dst_opt) { $sql = " select * from {$g4['shop_item_option_table']} where it_id = '{$_POST['it_id']}' and io_use = '1' order io_no asc ";
$org_opt = $it["it_opt".$i]; $result = sql_query($sql);
$exp_opt = explode("\n", trim($org_opt)); for($i=0; $row=sql_fetch_array($result); $i++) {
$exists = false; $opt_list[$row['io_type']][$row['io_id']]['price'] = $row['io_price'];
for ($k=0; $k<count($exp_opt); $k++) { $opt_list[$row['io_type']][$row['io_id']]['stock'] = $row['io_stock_qty'];
$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.");
}
}
} }
$price = get_price($it) + $opt_amount; for($i=0; $i<$option_count; $i++) {
// 상품가격이 다름 $opt_id = $_POST['io_id'][$i];
if ((int)$price !== (int)$_POST['it_price']) $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.."); die("Error..");
$point = $it['it_point']; $point = $it['it_point'];
@ -190,17 +194,25 @@ else // 장바구니에 담기
// 재고 검사 // 재고 검사
//-------------------------------------------------------- //--------------------------------------------------------
// 이미 장바구니에 있는 같은 상품의 수량합계를 구한다. // 이미 장바구니에 있는 같은 상품의 수량합계를 구한다.
$sql = " select SUM(ct_qty) as cnt from {$g4['shop_cart_table']} for($i=0; $i<$option_count; $i++) {
where it_id = '{$_POST['it_id']}' $sql = " select SUM(ct_qty) as cnt from {$g4['shop_cart_table']}
and uq_id = '$tmp_uq_id' "; where it_id = '{$_POST['it_id']}'
$row = sql_fetch($sql); and uq_id = '$tmp_uq_id',
$sum_qty = $row['cnt']; 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']); $ct_qty = $_POST['ct_qty'][$i];
if ($ct_qty + $sum_qty > $it_stock_qty) if(!$_POST['io_id'][$i])
{ $it_stock_qty = get_it_stock_qty($_POST['it_id']);
alert("$it_name 의 재고수량이 부족합니다.\\n\\n현재 재고수량 : " . number_format($it_stock_qty) . ""); 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; } if (!$config['cf_use_point']) { $_POST['it_point'] = 0; }
// 장바구니에 Insert // 장바구니에 Insert
$sql = " insert {$g4['shop_cart_table']} $comma = '';
set uq_id = '$tmp_uq_id', $sql = " INSERT INTO {$g4['shop_cart_table']}
it_id = '{$_POST['it_id']}', ( 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 )
it_name = '{$_POST['it_name']}', VALUES ";
it_opt1 = '{$_POST['it_opt1']}',
it_opt2 = '{$_POST['it_opt2']}', for($i=0; $i<$option_count; $i++) {
it_opt3 = '{$_POST['it_opt3']}', $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' )";
it_opt4 = '{$_POST['it_opt4']}', $comma = ' , ';
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' ";
sql_query($sql); sql_query($sql);
} }

View File

@ -325,6 +325,10 @@ else
</table> </table>
<!-- ########## 선택옵션이 있을 때만 출력 - 지운아빠 2013-05-24 --> <!-- ########## 선택옵션이 있을 때만 출력 - 지운아빠 2013-05-24 -->
<?php
$option_1 = get_item_options($it['it_id'], $it['it_option_subject']);
if($option_1) {
?>
<section> <section>
<h3>선택옵션</h3> <h3>선택옵션</h3>
<table class="sit_ov_tbl"> <table class="sit_ov_tbl">
@ -334,7 +338,7 @@ else
</colgroup> </colgroup>
<tbody> <tbody>
<?php // 선택옵션 <?php // 선택옵션
echo get_item_options($it['it_id'], $it['it_option_subject']); echo $option_1;
?> ?>
</tbody> </tbody>
</table> </table>
@ -342,9 +346,16 @@ else
<button type="button" id="sit_selopt_submit" class="btn_frmline">추가</button> <button type="button" id="sit_selopt_submit" class="btn_frmline">추가</button>
</div> </div>
</section> </section>
<?php
}
?>
<!-- ########## 선택옵션이 있을 때만 출력 끝 --> <!-- ########## 선택옵션이 있을 때만 출력 끝 -->
<!-- ########## 추가옵션이 있을 때만 출력 - 지운아빠 2013-05-24 --> <!-- ########## 추가옵션이 있을 때만 출력 - 지운아빠 2013-05-24 -->
<?php
$option_2 = get_item_supply($it['it_id'], $it['it_supply_subject']);
if($option_2) {
?>
<section> <section>
<h3>추가옵션</h3> <h3>추가옵션</h3>
<table class="sit_ov_tbl"> <table class="sit_ov_tbl">
@ -354,11 +365,14 @@ else
</colgroup> </colgroup>
<tbody> <tbody>
<?php // 추가옵션 <?php // 추가옵션
echo get_item_supply($it['it_id'], $it['it_supply_subject']); echo $option_2;
?> ?>
</tbody> </tbody>
</table> </table>
</section> </section>
<?php
}
?>
<!-- ########## 추가옵션이 있을 때만 출력 끝 --> <!-- ########## 추가옵션이 있을 때만 출력 끝 -->
<?php } // 전화문의가 아닐 경우 끝 ?> <?php } // 전화문의가 아닐 경우 끝 ?>
@ -420,62 +434,27 @@ else
return false; return false;
} }
var id = ""; // 선택옵션 자동추가 기능을 사용하려면 아래 false를 true로 설정
var value, sel_opt, item, price, stock, run_error = false; sel_option_process(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);
} }
}); });
// 추가옵션 // 추가옵션
$("select[name='it_supply[]']").change(function() { $("select[name='it_supply[]']").change(function() {
var val = $(this).val(); var $el = $(this);
var info = val.split(","); // 선택옵션 자동추가 기능을 사용하려면 아래 false를 true로 설정
sel_supply_process($el, false);
});
// 재고체크 // 선택옵션 추가
if(parseInt(info[2]) < 1) { $("#sit_selopt_submit").click(function() {
alert("선택하신 추가옵션상품은 재고가 부족하여 구매할 수 없습니다."); sel_option_process(true);
return false; });
}
var item = $(this).closest("tr").find("th label").text(); // 추가옵션 추가
var id = item+chr(30)+info[0]; $("button.sit_sel_submit").click(function() {
var option = item+":"+info[0]; var $el = $(this).closest("td").find("select[name='it_supply[]']");
var price = info[1]; sel_supply_process($el, true);
var stock = info[2];
if(!same_option_check(option))
add_sel_option(1, id, option, price, stock);
}); });
// 수량변경 및 삭제 // 수량변경 및 삭제
@ -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) function add_sel_option(type, id, option, price, stock)
{ {