재고가 음수일때 품절표시관련 질문입니다. 채택완료
예를 들어서 주문을 하고 나서 나중에 하나의 옵션이 품절이 걸리게 되서 재고 수량을 0으로 하여 품절을 걸게됩니다.
그리고 그 다음 고객이 결제를 완료하여 '주문'상태에서 입금으로 상태가 변경되어버리면 재고가 감산되어서
바로 아래 사진과 같이 '-500'의 재고 수량으로 변경되어버립니다. 이것은 당연한 감산 부분이겠지요.
허나 제가 질문드리고 싶은 것은 바로 두번째 첨부한 사진입니다.


두번째 옵션이 바로 사진속에 있는 노랑인데요. 분명 재고가 '-500'으로 판매할 수가 없는 상태인데 품절로 표시가 되지 않는 부분이 있습니다. 단순 0개 수량일때는 [품절]이라고 붙어서 고객들이 품절임을 바로 인지하게 되는데
이와 같이 품절로 표시가 안되어서 선택을 하고 나면 그재서야 재고수량이 없다는 alert창이 발생하면서 안내를 해주는데요. 이 것을 가지고 고객의 입장에서는 품절 표시가 제대로 안되있었는데 정말 품절인게 맞느냐 라며 되려 전화로 질문을 하는 경우가 많습니다.
그래서 재고 수량이 - 일때도 재고수량이 0일때처럼 품절로 표기되게끔 하고 싶은데 어디를 수정해야할지 모르겠습니다.
고객이 주문만 해놓고 나중에 결제를 하는 일이 많은 유형의 고객들이 많은 업종의 쇼핑몰이라 이런 일이 자주 발생하는데 이 부분에 대해 알려주시면 감사드리겠습니다!
음수, 재고수량 - 등등으로 찾아봤는데 저와 같은 부분의 내용이 잘 보이지 않네요..
답변 1개
lib/shop.lib.php 파일의 get_item_options 함수를 아래 코드로 수정해 보시기 바랍니다.
</p><p>// 상품 선택옵션</p><p>function get_item_options($it_id, $subject)</p><p>{</p><p> global $g5;</p><p> </p><p> if(!$it_id || !$subject)</p><p> return '';</p><p> </p><p> $sql = " select * from {$g5['g5_shop_item_option_table']} where io_type = '0' and it_id = '$it_id' and io_use = '1' order by io_no asc ";</p><p> $result = sql_query($sql);</p><p> if(!mysql_num_rows($result))</p><p> return '';</p><p> </p><p> $str = '';</p><p> $subj = explode(',', $subject);</p><p> $subj_count = count($subj);</p><p> </p><p> if($subj_count > 1) {</p><p> $options = array();</p><p> </p><p> // 옵션항목 배열에 저장</p><p> for($i=0; $row=sql_fetch_array($result); $i++) {</p><p> $opt_id = explode(chr(30), $row['io_id']);</p><p> </p><p> for($k=0; $k<$subj_count; $k++) {</p><p> if(!is_array($options[$k]))</p><p> $options[$k] = array();</p><p> </p><p> if($opt_id[$k] && !in_array($opt_id[$k], $options[$k]))</p><p> $options[$k][] = $opt_id[$k];</p><p> }</p><p> }</p><p> </p><p> // 옵션선택목록 만들기</p><p> for($i=0; $i<$subj_count; $i++) {</p><p> $opt = $options[$i];</p><p> $opt_count = count($opt);</p><p> $disabled = '';</p><p> if($opt_count) {</p><p> $seq = $i + 1;</p><p> if($i > 0)</p><p> $disabled = ' disabled="disabled"';</p><p> $str .= '<tr>'.PHP_EOL;</p><p> $str .= '<th><label for="it_option_'.$seq.'">'.$subj[$i].'</label></th>'.PHP_EOL;</p><p> </p><p> $select = '<select id="it_option_'.$seq.'" class="it_option"'.$disabled.'>'.PHP_EOL;</p><p> $select .= '<option value="">선택</option>'.PHP_EOL;</p><p> for($k=0; $k<$opt_count; $k++) {</p><p> $opt_val = $opt[$k];</p><p> if(strlen($opt_val)) {</p><p> $select .= '<option value="'.$opt_val.'">'.$opt_val.'</option>'.PHP_EOL;</p><p> }</p><p> }</p><p> $select .= '</select>'.PHP_EOL;</p><p> </p><p> $str .= '<td>'.$select.'</td>'.PHP_EOL;</p><p> $str .= '</tr>'.PHP_EOL;</p><p> }</p><p> }</p><p> } else {</p><p> $str .= '<tr>'.PHP_EOL;</p><p> $str .= '<th><label for="it_option_1">'.$subj[0].'</label></th>'.PHP_EOL;</p><p> </p><p> $select = '<select id="it_option_1" class="it_option">'.PHP_EOL;</p><p> $select .= '<option value="">선택</option>'.PHP_EOL;</p><p> for($i=0; $row=sql_fetch_array($result); $i++) {</p><p> if($row['io_price'] >= 0)</p><p> $price = ' + '.number_format($row['io_price']).'원';</p><p> else</p><p> $price = ' '.number_format($row['io_price']).'원';</p><p> </p><p> if($row['io_stock_qty'] < 1)</p><p> $soldout = ' [품절]';</p><p> else</p><p> $soldout = '';</p><p> </p><p> $select .= '<option value="'.$row['io_id'].','.$row['io_price'].','.$row['io_stock_qty'].'">'.$row['io_id'].$price.$soldout.'</option>'.PHP_EOL;</p><p> }</p><p> $select .= '</select>'.PHP_EOL;</p><p> </p><p> $str .= '<td>'.$select.'</td>'.PHP_EOL;</p><p> $str .= '</tr>'.PHP_EOL;</p><p> }</p><p> </p><p> return $str;</p><p>} </p><p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인