diff --git a/lib/shop.lib.php b/lib/shop.lib.php index 738ead5e4..cfadc8562 100644 --- a/lib/shop.lib.php +++ b/lib/shop.lib.php @@ -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); diff --git a/shop/cartupdate.php b/shop/cartupdate.php index 3db9459b6..64918ec15 100644 --- a/shop/cartupdate.php +++ b/shop/cartupdate.php @@ -142,41 +142,45 @@ else // 장바구니에 담기 if (!$_POST['it_id']) alert('장바구니에 담을 상품을 선택하여 주십시오.'); - if ($_POST['ct_qty'] < 1) - alert('수량은 1 이상 입력해 주십시오.'); + for($i=0; $i $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); } diff --git a/shop/item.php b/shop/item.php index 385670a65..c942eaf42 100644 --- a/shop/item.php +++ b/shop/item.php @@ -325,6 +325,10 @@ else +

선택옵션

@@ -334,7 +338,7 @@ else
@@ -342,9 +346,16 @@ else
+ +

추가옵션

@@ -354,11 +365,14 @@ else
+ @@ -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) {