장바구니 가격 변동 사항 체크 코드 추가

This commit is contained in:
thisgun
2020-10-28 15:13:16 +09:00
parent 27bddb9208
commit c6669f76e5
4 changed files with 107 additions and 0 deletions

View File

@ -2469,6 +2469,101 @@ function shop_is_taxsave($od, $is_view_receipt=false){
return 0;
}
// 장바구니 금액 체크 $is_price_update 가 true 이면 장바구니 가격 업데이트한다.
function before_check_cart_price($s_cart_id, $is_ct_select_condition=false, $is_price_update=false, $is_item_cache=false){
global $g5, $default, $config;
if( !$s_cart_id ){
return;
}
$select_where_add = '';
if( $is_ct_select_condition ){
$select_where_add = " and ct_select = '0' ";
}
$sql = " select * from `{$g5['g5_shop_cart_table']}` where od_id = '$s_cart_id' {$select_where_add} ";
$result = sql_query($sql);
$check_need_update = false;
for ($i=0; $row=sql_fetch_array($result); $i++){
if( ! $row['it_id'] ) continue;
$it_id = $row['it_id'];
$it = get_shop_item($it_id, $is_item_cache);
$update_querys = array();
if(!$it['it_id'])
continue;
if( $it['it_price'] !== $row['ct_price'] ){
// 장바구니 테이블 상품 가격과 상품 테이블의 상품 가격이 다를경우
$update_querys['ct_price'] = $it['it_price'];
}
if( $row['io_id'] ){
$io_sql = " select * from {$g5['g5_shop_item_option_table']} where it_id = '{$it['it_id']}' and io_id = '{$row['io_id']}' ";
$io_infos = sql_fetch( $io_sql );
if( $io_infos['io_type'] ){
$this_io_type = $io_infos['io_type'];
}
if( $io_infos['io_id'] && $io_infos['io_price'] !== $row['io_price'] ){
// 장바구니 테이블 옵션 가격과 상품 옵션테이블의 옵션 가격이 다를경우
$update_querys['io_price'] = $io_infos['io_price'];
}
}
// 포인트
$compare_point = 0;
if($config['cf_use_point']) {
// DB 에 io_type 이 1이면 상품추가옵션이며, 0이면 상품선택옵션이다
if($row['io_type'] == 0) {
$compare_point = get_item_point($it, $row['io_id']);
} else {
$compare_point = $it['it_supply_point'];
}
if($compare_point < 0)
$compare_point = 0;
}
if((int) $row['ct_point'] !== (int) $compare_point){
// 장바구니 테이블 적립 포인트와 상품 테이블의 적립 포인트가 다를경우
$update_querys['ct_point'] = $compare_point;
}
if( $update_querys ){
$check_need_update = true;
}
// 장바구니에 담긴 금액과 실제 상품 금액에 차이가 있고, $is_price_update 가 true 인 경우 장바구니 금액을 업데이트 합니다.
if( $is_price_update && $update_querys ){
$conditions = array();
foreach ($update_querys as $column => $value) {
$conditions[] = "`{$column}` = '{$value}'";
}
if( $col_querys = implode(',', $conditions) ) {
$sql_query = "update `{$g5['g5_shop_cart_table']}` set {$col_querys} where it_id = '{$it['it_id']}' and od_id = '$s_cart_id' and ct_id = '{$row['ct_id']}' ";
sql_query($sql_query, false);
}
}
}
// 장바구니에 담긴 금액과 실제 상품 금액에 차이가 있다면
if( $check_need_update ){
return false;
}
return true;
}
// 장바구니 상품삭제
function cart_item_clean()
{

View File

@ -37,6 +37,10 @@ if($cart_stock_limit > 0) {
die("주문 요청 때까지 ".$cart_stock_limit."시간 이상 경과되어 주문 상품이 초기화 됐습니다.\n\n 장바구니에서 주문하실 상품을 다시 확인해 주십시오.");
}
if (function_exists('before_check_cart_price')) {
if(! before_check_cart_price($tmp_cart_id) ) die("장바구니 금액에 변동사항이 있습니다.\n장바구니를 다시 확인해 주세요.");
}
// 재고체크
$sql = " select *
from {$g5['g5_shop_cart_table']}

View File

@ -15,6 +15,10 @@ sql_query($sql);
$cart_action_url = G5_SHOP_URL.'/cartupdate.php';
if(function_exists('before_check_cart_price')) {
before_check_cart_price($s_cart_id, true, true, true);
}
if (G5_IS_MOBILE) {
include_once(G5_MSHOP_PATH.'/cart.php');
return;

View File

@ -24,6 +24,10 @@ else {
if (get_cart_count($tmp_cart_id) == 0)
alert('장바구니가 비어 있습니다.', G5_SHOP_URL.'/cart.php');
if (function_exists('before_check_cart_price')) {
if(! before_check_cart_price($tmp_cart_id) ) alert('장바구니 금액에 변동사항이 있습니다.\n장바구니를 다시 확인해 주세요.', G5_SHOP_URL.'/cart.php');
}
// 새로운 주문번호 생성
$od_id = get_uniqid();
set_session('ss_order_id', $od_id);