재고 검사시 '쇼핑'상태인 카트를 고려하지 않는다면 어떤 일이 일어나는가? 채택완료
안녕하세요.
물품을 구매할 때 g5_shop_cart에 있는 '쇼핑'상태의 카트 역시 카운팅하여 현재 재고 숫자를 파악합니다.
즉 결제를 하기 전 상태의 카트 역시 카운팅하여 재고에서 빼서 통보합니다.
'주문'상태로 넘어간 것부터 재고를 고려하고 싶기 때문에, 단지 '쇼핑'상태의 카트는 재고 카운팅을 하지않고 싶습니다. 이렇게 하는 경우 추후 어떤 문제가 발생하는지 궁금합니다.
=>예상 상황
-카트에 담아 두었고 추후에 구매하려 했는데, 시간상 뒤에 구매한 다른 고객이 결제를 먼저 해버린 경우 카트에 담아 두었던 고객에게 재고가 없다는 메세지가 뜰 수 있음 혹은 뜨지 않고 결제가 되버림
-구매하려하는데 시간상 더 뒤에 구매하려는 고객이 결제는 더 빨리 하는 경우 먼저 구매하려는 고객에게 재고가 없다는 메세지가 뜰 수 있음 혹은 뜨지 않고 결제가 되버림
*에러 알림이 떠도 상관 없지만 결제가 되면 문제가 생깁니다. 혹시 어떤 문제가 발생할지 아시는 분이 계신가요?
'쇼핑' 상태의 재고를 파악하지 않도록 하기 위해 제거하려는 코드는 아래와 같습니다.
/shop/cartupdate.php (영카트 5.2.4.1버전)
대략 163line
// 기존에 장바구니에 담긴 상품이 있는 경우에 최대 구매수량 체크
if($it['it_buy_max_qty'] > 0) {
$sql4 = " select sum(ct_qty) as ct_sum
from {$g5['g5_shop_cart_table']}
where od_id = '$tmp_cart_id'
and it_id = '$it_id'
and io_type = '0'
and ct_status = '쇼핑' ";
$row4 = sql_fetch($sql4);
if(($sum_qty + $row4['ct_sum']) > $it['it_buy_max_qty'])
alert($it['it_name'].'의 선택옵션 개수 총합 '.number_format($it['it_buy_max_qty']).'개 이하로 주문해 주십시오.', './cart.php');
대략 194line
//--------------------------------------------------------
// 재고 검사, 바로구매일 때만 체크
//--------------------------------------------------------
// 이미 주문폼에 있는 같은 상품의 수량합계를 구한다.
if($sw_direct) {
for($k=0; $k<$opt_count; $k++) {
$io_id = preg_replace(G5_OPTION_ID_FILTER, '', $_POST['io_id'][$it_id][$k]);
$io_type = preg_replace('#[^01]#', '', $_POST['io_type'][$it_id][$k]);
$io_value = $_POST['io_value'][$it_id][$k];
$sql = " select SUM(ct_qty) as cnt from {$g5['g5_shop_cart_table']}
where od_id <> '$tmp_cart_id'
and it_id = '$it_id'
and io_id = '$io_id'
and io_type = '$io_type'
and ct_stock_use = 0
and ct_status = '쇼핑'
and ct_select = '1' ";
$row = sql_fetch($sql);
$sum_qty = $row['cnt'];
// 재고 구함
$ct_qty = $_POST['ct_qty'][$it_id][$k];
if(!$io_id)
$it_stock_qty = get_it_stock_qty($it_id);
else
$it_stock_qty = get_option_stock_qty($it_id, $io_id, $io_type);
if ($ct_qty + $sum_qty > $it_stock_qty)
{
alert($io_value." 의 재고수량이 부족합니다.\\n\\n현재 재고수량 : " . number_format($it_stock_qty - $sum_qty) . " 개");
}
위 코드를 제거하는 경우 단지 '쇼핑'중인 카트는 고려하지 않기 때문에 해당 상품이 '주문'단계로 넘어간 카트부터 카운팅 하게 되는지 궁금하고 다른 문제가 없을지 궁금합니다.
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인