소멸 포인트 get_expire_point 함수에서 po_expired 질문
본문
// 소멸 포인트
function get_expire_point($mb_id)
{
global $g5, $config;
if($config['cf_point_term'] == 0)
return 0;
$sql = " select sum(po_point - po_use_point) as sum_point
from {$g5['point_table']}
where mb_id = '$mb_id'
and po_expired = '0'
and po_expire_date <> '9999-12-31'
and po_expire_date < '".G5_TIME_YMD."' ";
$row = sql_fetch($sql);
return $row['sum_point'];
}
common.lib.php 에서 소멸 포인트 부분 질문드립니다.
get_expire_point 함수에서 and po_expired = ''0' 이라는 부분이 이해가 잘 가지 않는데요
po_expired는 포인트 만료를 나타내는데 포인트 만료가 0인것을 셀렉트 하는것은 소멸 포인트 함수에서 소멸되지 않은것을 셀렉트 하는건가요?
그리고 소멸 포인트 함수에서 왜 지급 포인트-사용 포인트를 구하는건가요?
!-->답변 1
get_expire_point 함수는 소멸될수 있는 포인트가 있는지 리스트로 뽑아줍니다
po_expired는 포인트적립시 포인트가 +면 0 , -이면 1로 기록되어지는데요
여기서 확인할 수 있는점은 po_expired는 적립내역이면 0이란 값을, 마이너스내역이면 1이란 값을 입력한다는걸 알 수 있습니다
그렇다면 해당 함수에서 po_expired = 0를 찾는것은 적립내역 DB에서 po_expired 즉 포인트가 +된 내역만 가져오기 위함입니다.
포인트가 -된 내역은 사용한(소멸한) 포인트이니 가져올 필요가없죠
마지막은 po_use_point의 역할을 조금 이해하실 필요가있습니다
만약 홈페이지내에서 포인트 지급시 유효기간이 설정되어있다면 사용된 포인트를 po_use_point에 기록하게 되는데요
왜 이렇게 하느냐하면 소멸될 포인트인지 확인하기 위해서입니다 지급된 포인트가 만약 1000(po_point)이고 사용을 1000포인트(po_use_point) 하였다면 이 행에서 소멸될 포인트는? 0이겠죠? 그렇다면 소멸기간이 지나도 소멸을 시키지 말아야합니다 왜냐? 이미 지급된 포인트를 모두 사용하였기 때문이죠
다시 가정을 하고 다음을 봅시다 지급된 포인트가 1000포인트(po_point)이고 사용된 포인트가 970포인트(po_use_point)입니다 그러면 소멸기간이 다되었으면 30포인트가 소멸되어야 하겠지요?
그렇기에 소멸 예정인 포인트 리스트에서 1000포인트(po_point)-970사용포인트(po_use_point)=실제 소멸 30포인트 가 되므로 해당 함수에서 소멸될 포인트 값을 계산하여 출력하여서 넘겨서 30포인트만 소멸되도록 해줍니다
해당 함수가 사용되는 get_point_sum를 보면 get_expire_point에서 소멸될 포인트값(지급포인트-사용포인트)을 받아 소멸될 포인트(if($expire_point) > 0)가 있으면 포인트 소멸되는 쿼리를 진행하는걸 볼 수 있습니다
말재주가없어서 길어졌는데 이해하는데 도움이 되었으면 하네요