쇼핑몰 포인트 적립
본문
//------------------------------------------------------------------------------
}
// 설정일이 지난 포인트 부여되지 않은 배송완료된 장바구니 자료에 포인트 부여
// 설정일이 0 이면 주문서 완료 설정 시점에서 포인트를 바로 부여합니다.
//------------------------------------------------------------------------------
function save_order_point($ct_status="완료")
{
global $g5, $default;
$beforedays = date("Y-m-d H:i:s", ( time() - (86400 * (int)$default['de_point_days']) ) ); // 86400초는 하루
$sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// 회원 ID 를 얻는다.
$od_row = sql_fetch("select od_id, mb_id from {$g5['g5_shop_order_table']} where od_id = '{$row['od_id']}' ");
if ($od_row['mb_id'] && $row['ct_point'] > 0) { // 회원이면서 포인트가 0보다 크다면
$po_point = $po_point = $row['ct_point'] * $row['ct_qty']; // $po_point = $row['ct_point'] * $row['ct_qty']; 판매가 기준인 원래 코드
$po_content = "주문번호 {$od_row['od_id']} ({$row['ct_id']}) 배송완료";
insert_point($od_row['mb_id'], $po_point, $po_content, "@delivery", $od_row['mb_id'], "{$od_row['od_id']},{$row['ct_id']}");
}
sql_query("update {$g5['g5_shop_cart_table']} set ct_point_use = '1' where ct_id = '{$row['ct_id']}' ");
}
}
쇼핑몰 포인트 적립을 할때 판매가 기준으로 하는게 아니라
판매가 - 포인트 = 구매가 기준의 포인트를 적용해야한다는것과 저 상단 소스를 수정해야하는 건 이해가 되는데
$po_point 부분이 말그대로 ct_point를 가져와서 하는데 이게 이미 판매가기준으로 적용된 적립포인트라
구매가 기준으로 계산된 포인트를 어디서 가져와야할까요...
!-->답변 1
현재는 포인트사용이 있으면 포인트부여를 하지 않는듯 합니다.
$sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
이걸 보면 ct_point_use 가 0인것만 대상이 되죠.
님이 원하는 구현이 되려면 위에 저 조건문을 빼야하고요,
현재 가져올수 있는 구매가기준(사용포인트를 제한)으로 계산된 포인트는.. 없습니다. 상품설정에서 말하는 구매가기준이란 옵션가포함이라는 의미같습니다.
저번에 달린 답변은 그 부분을 직접 처리하셔야 한다는 답변이었던거 같네요.
그런데 문제가 되는건 주문이 단일품목으로만 이뤄지는게 아니라 장바구니에서 여러 제품을 한꺼번에 주문할 수 있다는거죠.
그런데 정작 포인트는 제품마다 다 다르죠. 적립방법도 적립금/비율도..
하지만 사용포인트는 그렇지 않습니다. 그냥 전체주문에 꼴랑 하나죠.
그렇다면 각 제품별 포인트 산출을 어떻게 해야 할까요? 단순하게 1/n(수량이라던지 주문제품수 기준)은 안될거 같습니다. 주문을 어떻게 하느냐에 따라서 차감이 틀려질테니 같은제품이라도 적립비율이 달라질테니까요.
그럼 전체주문금액(배송비제외)에 따른 각 제품의 주문금액을 비율로 산출해서
각각의 적립포인트에서 사용포인트의 각 비율만큼을 적립포인트에서 제하는 계산해야 할듯합니다.
하지만 이게 쉽지 않죠.
제품뷰페이지에서 장바구니에 넣는 과정중에 이런저런 조건에 의해 포인트 산출하는 루틴을 전부 다시 거쳐야 할겁니다.
이 글 쓰느라 얼추 한시간이상 소스를 뒤적거려봤습니다.(영카트 소스는 열어본적이 없었던터라..) 그런데도 분석이 다 안되서 솔직히 저게 가능한건지 어떤지도 모르겠습니다.
포인트사용이 있는 경우엔 포인트적립을 시키지 않는 이유가 정책적인 이유 외에도 아마도 이것일듯 합니다.
꼭 넣으셔야 하는 기능이라면.. 아무래도 능력자분께 의뢰로 맡기셔야 할듯합니다.
그냥 간단히 질문하고 답변받을 수준은 넘을거 같네요. ^^;