소멸 포인트 get_expire_point 함수에서 po_expired 질문 채택완료
</strong></p>
<p>// 소멸 포인트</p>
<p>function get_expire_point($mb_id)</p>
<p>{</p>
<p> global $g5, $config;</p>
<p> </p>
<p> if($config['cf_point_term'] == 0)</p>
<p> return 0;</p>
<p> </p>
<p> $sql = " select sum(po_point - po_use_point) as sum_point</p>
<p> from {$g5['point_table']}</p>
<p> where mb_id = '$mb_id'</p>
<p> and po_expired = '0'</p>
<p> and po_expire_date <> '9999-12-31'</p>
<p> and po_expire_date < '".G5_TIME_YMD."' ";</p>
<p> $row = sql_fetch($sql);</p>
<p> </p>
<p> return $row['sum_point'];</p>
<p>}</p>
<p><strong>
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)가 있으면 포인트 소멸되는 쿼리를 진행하는걸 볼 수 있습니다
말재주가없어서 길어졌는데 이해하는데 도움이 되었으면 하네요
답변에 대한 댓글 3개
다른 분들도 잘 설명해주셨지만 이번 답변은 저의 가려운 곳을 긁어주는 시원한 답변이었어요.
궁금했던 내용이 시원하게 해결되었습니다.
정말 감사합니다 ^^
좋은일만 가득하세요!!
근데 여기서 첫문장부터 오류가있었네요 ㅠㅠ
get_expire_point 함수는 소멸될수 있는 포인트가 있는지 리스트로 뽑아줍니다(X)
get_expire_point 함수는 소멸될수 있는 포인트를 뽑아줍니다(O)
요것만 참고해주세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인