쇼핑몰 포인트 적립

쇼핑몰 포인트 적립

QA

쇼핑몰 포인트 적립

본문


//------------------------------------------------------------------------------
}
// 설정일이 지난 포인트 부여되지 않은 배송완료된 장바구니 자료에 포인트 부여
// 설정일이 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(수량이라던지 주문제품수 기준)은 안될거 같습니다. 주문을 어떻게 하느냐에 따라서 차감이 틀려질테니 같은제품이라도 적립비율이 달라질테니까요.

그럼 전체주문금액(배송비제외)에 따른 각 제품의 주문금액을 비율로 산출해서

각각의 적립포인트에서 사용포인트의 각 비율만큼을 적립포인트에서 제하는 계산해야 할듯합니다.

하지만 이게 쉽지 않죠.

제품뷰페이지에서 장바구니에 넣는 과정중에 이런저런 조건에 의해 포인트 산출하는 루틴을 전부 다시 거쳐야 할겁니다.

이 글 쓰느라 얼추 한시간이상 소스를 뒤적거려봤습니다.(영카트 소스는 열어본적이 없었던터라..) 그런데도 분석이 다 안되서 솔직히 저게 가능한건지 어떤지도 모르겠습니다.

 

포인트사용이 있는 경우엔 포인트적립을 시키지 않는 이유가 정책적인 이유 외에도 아마도 이것일듯 합니다.

꼭 넣으셔야 하는 기능이라면.. 아무래도 능력자분께 의뢰로 맡기셔야 할듯합니다.

그냥 간단히 질문하고 답변받을 수준은 넘을거 같네요. ^^; 

답변 감사합니다.
현재 포인트사용이 있을경우에도 포인트 적립을 되고있습니다.
차라리 포인트 사용시 재적립이 안되도록 막는 법은 없을까요?

위 지적하신 코드로는 여전히 포인트결제사용시 추가적립이 된답니다

답변을 작성하시기 전에 로그인 해주세요.
전체 16,787
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT